summaryrefslogtreecommitdiff
path: root/board/nvidia/p2371-2180
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2015-10-05 17:02:40 -0600
committerTom Warren <twarren@nvidia.com>2015-11-12 09:21:06 -0700
commit019bc6259d4f096219cfe1b9e91fe033b62ae645 (patch)
tree7f01e4fca48aed7f021c4207edf7bf21ea833a13 /board/nvidia/p2371-2180
parentd0af234130db0cc98ec81ed9d4d75c3bff7b4796 (diff)
downloadu-boot-019bc6259d4f096219cfe1b9e91fe033b62ae645.tar.gz
u-boot-019bc6259d4f096219cfe1b9e91fe033b62ae645.tar.bz2
u-boot-019bc6259d4f096219cfe1b9e91fe033b62ae645.zip
ARM: tegra: enable PCI support of p2371-2180
p2371-2180 has two PCI ports; a regular x4 slot and a x1 M.2 slot. This patch adds the relevant DT to enable the PCI controller and configure the XUSB padctl pin muxing, and code to turn on the PCI power and enable PCI features in U-Boot. I have only tested the x4 slot. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Tom Warren <twarren@nvidia.com>
Diffstat (limited to 'board/nvidia/p2371-2180')
-rw-r--r--board/nvidia/p2371-2180/p2371-2180.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/board/nvidia/p2371-2180/p2371-2180.c b/board/nvidia/p2371-2180/p2371-2180.c
index cf2dd0b14f..57f577d85d 100644
--- a/board/nvidia/p2371-2180/p2371-2180.c
+++ b/board/nvidia/p2371-2180/p2371-2180.c
@@ -6,6 +6,7 @@
*/
#include <common.h>
+#include <netdev.h>
#include <i2c.h>
#include <asm/arch/gpio.h>
#include <asm/arch/pinmux.h>
@@ -49,3 +50,32 @@ void pinmux_init(void)
pinmux_config_drvgrp_table(p2371_2180_drvgrps,
ARRAY_SIZE(p2371_2180_drvgrps));
}
+
+#ifdef CONFIG_PCI_TEGRA
+int tegra_pcie_board_init(void)
+{
+ struct udevice *dev;
+ uchar val;
+ int ret;
+
+ /* Turn on MAX77620 LDO1 to 1.05V for PEX power */
+ debug("%s: Set LDO1 for PEX power to 1.05V\n", __func__);
+ ret = i2c_get_chip_for_busnum(0, MAX77620_I2C_ADDR_7BIT, 1, &dev);
+ if (ret) {
+ printf("%s: Cannot find MAX77620 I2C chip\n", __func__);
+ return -1;
+ }
+ /* 0xCA for 1.05v, enabled: bit7:6 = 11 = enable, bit5:0 = voltage */
+ val = 0xCA;
+ ret = dm_i2c_write(dev, MAX77620_CNFG1_L1_REG, &val, 1);
+ if (ret)
+ printf("i2c_write 0 0x3c 0x25 failed: %d\n", ret);
+
+ return 0;
+}
+
+int board_eth_init(bd_t *bis)
+{
+ return pci_eth_init(bis);
+}
+#endif /* PCI */