[U-Boot] [PATCH 1/1] USB: EHCI: Initialize multiple USB controllers at once

Stephen Warren swarren at wwwdotorg.org
Wed Jun 27 18:57:54 CEST 2012


On 06/27/2012 12:55 AM, Wolfgang Denk wrote:
> Dear Jim Lin,
> 
> sending the very same message eight (8!) times doesnot make it a bit
> more convincing - on contrary.
> 
> In message <4B9C9637D5087840A465BDCB251780E9E2D6EDA3F5 at HKMAIL02.nvidia.com> you wrote:
>>
>>> U-Boot is not multi-tasking, so you can always access only a single
>>> USB device at a time ayway.  And it is a decoumented design principle
>>> that U-Boot must not initialize any devices it does not use itself.
>>>
>>> So why?
>> Because of this complaint and request for devices under different controllers
>> to be working at same time.
> 
> You make another claim here, but don't explain how this is supposed to
> work or whay the exact use case would be where this was needed.
> U-Boot will not be able to access multiple devices at the same time,
> so why would it be necessary to enable these?  It should be sufficient
> to enable the controller that is responsible for the single device
> that is currently being used.
> 
>> "One particularly annoying consequence of this is when you use the Seaboard
>> configuration on Springbank.
>> Seaboard selects Tegra's USB3 as "usb 0" device, which is the one you can use,
>> in order not to conflict with the flashing USB port USB1.
>> However, Springbank only exposes USB1 since USB3 is used internally for the
>> USB keyboard/mouse. As such, you cannot use the USB port on Springbank under
>> U-Boot at the moment.
>> "
> 
> I have to admit that I cannot make any sense from this statement.  The
> only thing I understand is that you are trying to use a configuration
> for one hardware (Seaboard) on another, incompatible hardware
> (Springbank).
> 
> The simple answer to this problem is: don't do that, then.

Seaboard and Springbank are essentially the same board, and hence are
almost 100% SW compatible, so there's no problem running a Seaboard
build of U-Boot/kernel/... on Springbank.

The primary issue here is that many boards have multiple USB ports.
Users could plug e.g. a USB->Ethernet device into any of the ports.
Requiring the user to know which port is which ID so they can issue the
correct "usb start <n>" command is painful; no other SW stack limits
itself to a single port and so most people don't have a clue which ports
are numbered what; they just want USB to work.

The specific issue on Springbank is that there are multiple USB ports
that are useful at the essentially the same time. One of the USB ports
hosts a built-in USB keyboard (inside a sealed clamshell/netbook case),
which we would like to use for the U-boot console. Another USB port is
external, and people will plug in a USB->Ethernet dongle or USB storage
device there. so, if I need to "usb start 0" to get the keyboard, and
"usb start 1" to get USB Ethernet, then as soon as I "usb start 1" to
get the Ethernet, I've just lost the console, and am unable to interact
with U-Boot any more...


More information about the U-Boot mailing list