
On 06/24/2017 03:57 AM, Bin Meng wrote:
Hi Marek,
On Sat, Jun 24, 2017 at 2:02 AM, Marek Vasut marex@denx.de wrote:
On 06/23/2017 11:54 AM, Bin Meng wrote:
xHCI spec says: the values of the 'route string' field shall be initialized by the first 'Address Device' command issued to a device slot, and shall not be modified by any other command.
So far U-Boot does not program this field, and it does not prevent SS device directly attached to root port, or HS device behind an HS hub, from working, due to the fact that 'route string' is used by the xHC to target SS packets. But in order to enumerate devices behind an SS hub, this field must be programmed.
With this commit and along with previous commits, now SS & HS devices attached to a USB 3.0 hub can be enumerated by U-Boot.
As usual, this new feature is only available when DM is on.
Great, but I really dislike the ifdef pollution, so this needs to be sorted out.
The ifdef was needed due to it calls DM APIs or access DM udevice. I have no intention to add a new feature to the non-DM driver.
But then this creates a massive disparity, it's like we're growing two USB stacks.
Eventually we can get rid of all these ifdefs when all boards are converted to use DM USB.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Test logs: two USB 3.0 hubs (one tier2, one tier3) => usb tree USB device tree: 1 Hub (5 Gb/s, 0mA) | U-Boot XHCI Host Controller | +-2 Hub (5 Gb/s, 0mA) | | GenesysLogic USB3.0 Hub | | | +-4 Hub (5 Gb/s, 0mA) | | | VIA Labs, Inc. USB3.0 Hub | | | | | +-7 Mass Storage (5 Gb/s, 76mA) | | JetFlash Mass Storage Device 16Q6ZPH20GF3E8UQ | | | +-8 Vendor specific (5 Gb/s, 36mA) | Realtek USB 10/100/1000 LAN 00E04C680977 | +-3 Hub (480 Mb/s, 100mA) | GenesysLogic USB2.0 Hub | +-5 Mass Storage (480 Mb/s, 200mA) | Netac OnlyDisk FF00ECB60800FFFF1526 | +-6 Hub (480 Mb/s, 0mA) VIA Labs, Inc. USB2.0 Hub
[snip]
Regards, Bin