Using Host-side USB 3.0 (xHCI) driver in U-boot

It seems like during U-boot the TX1 only recognizes the micro-usb port, so I was wondering if anyone has tried enabling the USB 3.0 port with success?

I do not think xhci has been ported to u-boot, so USB2 will be the limit until reaching the kernel.

Thanks for the quick reply.
Then is it possible to port it myself, manually.
If so how difficult do you think it would be?
Will there be enough resources on-line for me to port this?
I am a newbie with U-boot but basically I was planning to look at how the kernel does it
and copy it.

Going through the U-boot source files and I found the xhci driver, I know it hasn’t been fully ported to the TX1 however the driver is there so could I not just link the driver to the board?

It might work, but keep in mind bare metal programming can be quite different than within an operating system. If you want to do this you should first look at the differences between C programming with an operating system versus bare metal. Some assembler may be required (yes, that’s a bad pun :P ).

I’ll be looking around but just in case you know already I’ll ask first.
Is there a documentation/datasheet for the JTX1 board?
Because I’m guessing baremetal is pretty much low-level programming therefore I would need to know
what the register names are etc?

Lastly the xhci driver is already there in the source files but does it need to be tailored to the board?
E.g. would Nvidia have its own xhci driver therefore I won’t be able to use the one provided in main-line?


There is a lot of documentation for the JTX1…some of it covers booting, but developing for a driver in u-boot is going to need a lot of trial and error. It is likely you would need at least some minimal knowledge of registers, although I don’t think you’d need to be an expert at it. Keep in mind you may need to understand the ethernet hardware as well, not just the Tegra X1 (though the example driver may help a lot there).

The following may be useful: (an index into some docs) (how it all starts…listed in the index above) (search for “network”)

For ARMv8/ARMv8-A, create a free login here:
…see Cortex-A series (left column), then Cortex A-57 (this is the ARMv8-A 64-bit architecture; ARMv8 without the “-A” is a subset of this and covers the 32-bit compatibility mode)

There is some documentation with the L4T download page as well. Additional documentation (the forum doesn’t work with this kind of URL, you’ll have to copy the correct part of the URL and paste it into your browser):$product,jetson_tx1

Thanks for all the links, I guess it’s time to study up on U-boot…