
On Thursday, December 17, 2015 at 10:12:08 AM, Aaron Williams wrote:
Hi all,
Hi Aaron,
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?
Not to my knowledge, sorry.
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.
I see, I suspect the code was mostly tested on ARMv7 which is why those issues went undetected.
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).
Is it possible for you to boot latest mainline U-Boot on octeon, fix the issues, submit the fixes and then backport them?
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.
Patches are welcome :)
-Aaron
Best regards, Marek Vasut