[U-Boot] [PATCH 2/3] ARM: tegra: fix USB controller aliases

Marcel Ziswiler marcel.ziswiler at toradex.com
Tue Sep 20 15:52:31 CEST 2016


Hi Stephen

Cool, it's all working again. You saved my day!

Tegra20 (Harmony) # usb tree
USB device tree:
  1  Hub (480 Mb/s, 0mA)
     u-boot EHCI Host Controller 
   
  1  Hub (480 Mb/s, 0mA)
  |  u-boot EHCI Host Controller 
  |
  +-2  Hub (12 Mb/s, 94mA)
    |  Broadcom BCM2046B1 
    |
    +-3  Human Interface (12 Mb/s, 2mA)
    |  
    +-4  Human Interface (12 Mb/s, 2mA)
       
  1  Hub (480 Mb/s, 0mA)
  |  u-boot EHCI Host Controller 
  |
  +-2  Hub (480 Mb/s, 2mA)
    |
    +-3  Mass Storage (480 Mb/s, 500mA)
    |      T1204020000702
    |  
    +-4  Vendor specific (480 Mb/s, 0mA)
    |    SMSC LAN9514 12345678
    |  
    +-5  Mass Storage (480 Mb/s, 200mA)
    |    Generic Mass Storage CAF6AFF4
    |  
    +-6  Mass Storage (480 Mb/s, 300mA)
         Kingston DataTraveler 3.0 001D0F1FEBFDBE51C741753F

Tegra20 (Ventana) # usb tree
USB device tree:
  1  Hub (480 Mb/s, 0mA)
     u-boot EHCI Host Controller 
   
  1  Hub (480 Mb/s, 0mA)
  |  u-boot EHCI Host Controller 
  |
  +-2  Hub (12 Mb/s, 94mA)
    |  Broadcom BCM2046B1 
    |
    +-3  Human Interface (12 Mb/s, 2mA)
       
  1  Hub (480 Mb/s, 0mA)
  |  u-boot EHCI Host Controller 
  |
  +-2  Mass Storage (480 Mb/s, 500mA)
         T1204020000702

More feedback below.

On Thu, 2016-09-15 at 18:19 +0000, Stephen Warren wrote:
> From: Stephen Warren <swarren at nvidia.com>
> 
> Some boards have a different set of USB controllers enabled in DT
> than
> the set referenced by /alias entries. This patch fixes that. For
> example, this avoids the following message while booting on Ventana,
> which is caused by the fact that the USB0 controller had no alias,
> and
> defaulted to wanting a sequence number of 0, which was later
> explicitly
> requested by the alias for USB controller 2.
> 
> USB2:   Device 'usb at c5008000': seq 0 is in use by 'usb at c5000000'
> 
> This didn't affect USB operation in any way though.
> 
> Related, there's no need for the USB controller aliases to have an
> order
> that's different from the HW order, so re-order any aliases to match
> the
> HW ordering. This has the benefit that since USB controller 0 is the
> only
> one that supports device-mode in HW, and U-Boot only supports
> enabling
> device move on controller 0, there's now good synergy in the
> ordering! For
> Tegra20, that's not relevant at present since USB device mode doesn't
> work
> correctly on that SoC, but it will save some head-scratching later.
> 
> This patch doesn't fix the colibri_t20 board, even though it has the
> same
> issue, since Marcel already sent a patch for that.
> 
> Cc: Marcel Ziswiler <marcel.ziswiler at toradex.com>
> Signed-off-by: Stephen Warren <swarren at nvidia.com>
> ---
>  arch/arm/dts/tegra20-harmony.dts   | 3 ++-
>  arch/arm/dts/tegra20-seaboard.dts  | 5 +++--
>  arch/arm/dts/tegra20-trimslice.dts | 3 +--
>  arch/arm/dts/tegra20-ventana.dts   | 4 +++-
>  4 files changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm/dts/tegra20-harmony.dts b/arch/arm/dts/tegra20-
> harmony.dts
> index 5aec150b5e61..dcbde7c2ed7e 100644
> --- a/arch/arm/dts/tegra20-harmony.dts
> +++ b/arch/arm/dts/tegra20-harmony.dts
> @@ -15,8 +15,9 @@
>  		rtc0 = "/i2c at 7000d000/tps6586x at 34";
>  		rtc1 = "/rtc at 7000e000";
>  		serial0 = &uartd;
> -		usb0 = "/usb at c5008000";
> +		usb0 = "/usb at c5000000";
>  		usb1 = "/usb at c5004000";
> +		usb2 = "/usb at c5008000";
>  		mmc0 = "/sdhci at c8000600";
>  		mmc1 = "/sdhci at c8000200";

Aren't those called sdhci in mainline? Ah, I guess I missed that one:

http://git.denx.de/?p=u-boot/u-boot-tegra.git;a=commitdiff;h=dacb893017
c20ebaaca2138b281c87c0d8977065

>  	};
> diff --git a/arch/arm/dts/tegra20-seaboard.dts
> b/arch/arm/dts/tegra20-seaboard.dts
> index 14210519a6c2..77f5bb51b027 100644
> --- a/arch/arm/dts/tegra20-seaboard.dts
> +++ b/arch/arm/dts/tegra20-seaboard.dts
> @@ -9,8 +9,9 @@
>  
>  	aliases {
>  		/* This defines the order of our ports */
> -		usb0 = "/usb at c5008000";
> -		usb1 = "/usb at c5000000";
> +		usb0 = "/usb at c5000000";
> +		usb1 = "/usb at c5004000";
> +		usb2 = "/usb at c5008000";
>  		i2c0 = "/i2c at 7000d000";
>  		i2c1 = "/i2c at 7000c000";
>  		i2c2 = "/i2c at 7000c400";
> diff --git a/arch/arm/dts/tegra20-trimslice.dts
> b/arch/arm/dts/tegra20-trimslice.dts
> index be64e667cd5b..7fb7dd0b5815 100644
> --- a/arch/arm/dts/tegra20-trimslice.dts
> +++ b/arch/arm/dts/tegra20-trimslice.dts
> @@ -11,8 +11,7 @@
>  	};
>  
>  	aliases {
> -		usb0 = "/usb at c5008000";
> -		usb1 = "/usb at c5000000";
> +		usb0 = "/usb at c5000000";
>  		mmc0 = "/sdhci at c8000600";
>  		mmc1 = "/sdhci at c8000000";
>  		spi0 = "/spi at 7000c380";
> diff --git a/arch/arm/dts/tegra20-ventana.dts b/arch/arm/dts/tegra20-
> ventana.dts
> index 371445622c1e..85cd1e39bda7 100644
> --- a/arch/arm/dts/tegra20-ventana.dts
> +++ b/arch/arm/dts/tegra20-ventana.dts
> @@ -15,7 +15,9 @@
>  		rtc0 = "/i2c at 7000d000/tps6586x at 34";
>  		rtc1 = "/rtc at 7000e000";
>  		serial0 = &uartd;
> -		usb0 = "/usb at c5008000";
> +		usb0 = "/usb at c5000000";
> +		usb1 = "/usb at c5004000";
> +		usb2 = "/usb at c5008000";
>  		mmc0 = "/sdhci at c8000600";
>  		mmc1 = "/sdhci at c8000400";
>  	};

For the whole series you may add:

Tested-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
Tested-on: Harmony and Ventana

Cheers

Marcel


More information about the U-Boot mailing list