[U-Boot] Problems with USB 3 hubs

Aaron Williams
2015-12-17T09:12:08Z

Hi all,

I maintain U-Boot for the Cavium Octeon series of 64-bit MIPS processors
and have been experiencing problems with USB 3 hubs with XHCI.

If I plug in a USB 3 thumb drive into a USB 3 hub it is not seen. After
fixing numerous endian issues USB 3 thumb drives are fully supported via
XHCI as long as there is no USB hub in the path.

Delving into the XHCI and USB hub code it appears that there is no
proper support for USB 3 hubs which have a number of differences from
USB 2. Is any work going on in this area?

For example, the hub descriptor format has changed as well as the BOS
descriptor. I'm looking at the Linux XHCI and hub code and see a lot of
USB 3 changes not present in U-Boot.

I have been backporting a lot of the support to our current bootloader
code base which is based on the 7/2013 release.

I might add that I found a lot of issues in the USB code, especially
XHCI that are endian related since our Octeon processors are running in
big endian mode, plus the fact that DMA addresses are not the same as
pointer addresses, plus the USB code is not 64-bit friendly.

While I can gladly share my code and changes, we currently are not using
the latest release, nor will I have time to upgrade to it for at least
several months due to too many other projects on my plate (it doesn't
help matters that we don't use git internally for U-Boot).

At some point I would love to get our code base merged in but this will
be a significant effort due to the sheer amount of code involved.

-Aaron

--
Aaron Williams
Software Engineer
Cavium, Inc.
(408) 943-7198 (510) 789-8988 (cell)