[U-Boot] [PATCH 2/2] ARM: tegra: enable PCI support of p2371-2180

Tom Warren TWarren at nvidia.com
Thu Oct 22 01:03:12 CEST 2015


Stephen,

> -----Original Message-----
> From: Stephen Warren [mailto:swarren at wwwdotorg.org]
> Sent: Monday, October 05, 2015 4:03 PM
> To: u-boot at lists.denx.de; Simon Glass <sjg at chromium.org>; Tom Warren
> <TWarren at nvidia.com>; Stephen Warren <swarren at nvidia.com>
> Cc: Thierry Reding <treding at nvidia.com>
> Subject: [PATCH 2/2] ARM: tegra: enable PCI support of p2371-2180
> 
> From: Stephen Warren <swarren at nvidia.com>
> 
> 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 at nvidia.com>

This breaks the P2371-2180 build with this error:

drivers/net/rtl8169.c: In function 'rtl_recv':
drivers/net/rtl8169.c:584:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  return rtl_recv_common((pci_dev_t)dev->priv, dev->iobase, NULL);
                         ^
drivers/net/rtl8169.c: In function 'rtl_send':
drivers/net/rtl8169.c:669:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  return rtl_send_common((pci_dev_t)dev->priv, dev->iobase, packet,
                         ^
drivers/net/rtl8169.c: In function 'rtl_reset':
drivers/net/rtl8169.c:849:23: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  rtl8169_common_start((pci_dev_t)dev->priv, dev->enetaddr);
                       ^

I've taken my current u-boot-tegra/master, rebased against u-boot/master, added your armv8 NONCACHED_MEMORY patchset, then your PLLE, XUSB and PCI patchsets. Here are the top commits:

cc0451c ARM: tegra: enable PCI support of p2371-2180
3674783 ARM: tegra: add PCI to Tegra210 SoC DT
a2a0f1d pci: tegra: add/enable support for Tegra210
f24777a pci: tegra: call tegra_pcie_board_init() earlier
f1b57b2 pci: tegra: implement PCA enable workaround
2a0107d pci: tegra: use #address-/size-cells from DT
6be7b04 pci: tegra: clip RAM size to 32-bits
d8776c4 ARM: tegra: error check Tegra210 XUSB padctl waits
fb8d8c3 ARM: tegra: add lane tables to Tegra210 XUSB padctl
976b363 ARM: tegra: switch Tegra210 to common XUSB padctl
4254023 ARM: tegra: parameterize common XUSB code
dfa1772 ARM: tegra: create common XUSB padctl driver file
9dcc2ce ARM: tegra: rename dummy XUSB padctl implementation
a9e6908 ARM: tegra210: implement PLLE init procedure from TRM
88fdb78 ARM: tegra: enable CONFIG_SYS_NONCACHED_MEMORY everywhere
ae90990 ARM: tegra: add custom MMU setup on ARMv8
f19bce4 armv8: allow custom MMU setup routines on ARMv8
d303587 armv8: enable compilation with CONFIG_SYS_NONCACHED_MEMORY
e8d124f Merge git://git.denx.de/u-boot-marvell
5b37212 mmc: mv_sdhci: Configure the SDHCI MBUS bridge windows
1d51ea1 arm: mvebu: Enable DM_SERIAL on AXP / A38x boards

Tom
--
nvpublic

> ---
>  arch/arm/dts/tegra210-p2371-2180.dts | 50
> ++++++++++++++++++++++++++++++++++++
>  board/nvidia/p2371-2180/p2371-2180.c | 30 ++++++++++++++++++++++
>  include/configs/p2371-2180.h         | 10 ++++++++
>  3 files changed, 90 insertions(+)
> 
> diff --git a/arch/arm/dts/tegra210-p2371-2180.dts b/arch/arm/dts/tegra210-
> p2371-2180.dts
> index 5d9adcff31c3..bf35497d83f7 100644
> --- a/arch/arm/dts/tegra210-p2371-2180.dts
> +++ b/arch/arm/dts/tegra210-p2371-2180.dts
> @@ -21,6 +21,56 @@
>  		reg = <0x0 0x80000000 0x0 0xc0000000>;
>  	};
> 
> +	pcie-controller at 0,01003000 {
> +		status = "okay";
> +
> +		pci at 1,0 {
> +			status = "okay";
> +		};
> +
> +		pci at 2,0 {
> +			status = "okay";
> +		};
> +	};
> +
> +	padctl at 0,7009f000 {
> +		pinctrl-0 = <&padctl_default>;
> +		pinctrl-names = "default";
> +
> +		padctl_default: pinmux {
> +			xusb {
> +				nvidia,lanes = "otg-1", "otg-2";
> +				nvidia,function = "xusb";
> +				nvidia,iddq = <0>;
> +			};
> +
> +			usb3 {
> +				nvidia,lanes = "pcie-5", "pcie-6";
> +				nvidia,function = "usb3";
> +				nvidia,iddq = <0>;
> +			};
> +
> +			pcie-x1 {
> +				nvidia,lanes = "pcie-0";
> +				nvidia,function = "pcie-x1";
> +				nvidia,iddq = <0>;
> +			};
> +
> +			pcie-x4 {
> +				nvidia,lanes = "pcie-1", "pcie-2",
> +					       "pcie-3", "pcie-4";
> +				nvidia,function = "pcie-x4";
> +				nvidia,iddq = <0>;
> +			};
> +
> +			sata {
> +				nvidia,lanes = "sata-0";
> +				nvidia,function = "sata";
> +				nvidia,iddq = <0>;
> +			};
> +		};
> +	};
> +
>  	sdhci at 0,700b0000 {
>  		status = "okay";
>  		cd-gpios = <&gpio TEGRA_GPIO(Z, 1) GPIO_ACTIVE_LOW>; diff
> --git a/board/nvidia/p2371-2180/p2371-2180.c b/board/nvidia/p2371-
> 2180/p2371-2180.c
> index cf2dd0b14f00..57f577d85d96 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 */
> diff --git a/include/configs/p2371-2180.h b/include/configs/p2371-2180.h index
> 3bdf1961a317..94f8085ceb62 100644
> --- a/include/configs/p2371-2180.h
> +++ b/include/configs/p2371-2180.h
> @@ -53,6 +53,16 @@
>  #define CONFIG_USB_HOST_ETHER
>  #define CONFIG_USB_ETHER_ASIX
> 
> +/* PCI host support */
> +#define CONFIG_PCI
> +#define CONFIG_PCI_TEGRA
> +#define CONFIG_PCI_PNP
> +#define CONFIG_CMD_PCI
> +#define CONFIG_CMD_PCI_ENUM
> +
> +/* PCI networking support */
> +#define CONFIG_RTL8169
> +
>  /* General networking support */
>  #define CONFIG_CMD_DHCP
> 
> --
> 1.9.1



More information about the U-Boot mailing list