
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@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...