What HCI does USB4 use?

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
Ethin
Member
Member
Posts: 625
Joined: Sun Jun 23, 2019 5:36 pm
Location: North Dakota, United States

What HCI does USB4 use?

Post by Ethin »

I know that USB 1 uses UHCI and OHCI, USB 2 uses EHCI, and USB 3 uses xHCI. However, there does not appear to be a specification for any HCI used by USB 4 (that I can find, anyway). Does USB4 just use xHCI? (According to Wikipedia it might use Thunderbolt 3 but I don't know if just supporting Thunderbolt3 would make it possible for me to use USB 4.) I'm mainly asking out of curiosity at this point.
User avatar
BenLunt
Member
Member
Posts: 941
Joined: Sat Nov 22, 2014 6:33 pm
Location: USA
Contact:

Re: What HCI does USB4 use?

Post by BenLunt »

Ethin wrote:I know that USB 1 uses UHCI and OHCI, USB 2 uses EHCI, and USB 3 uses xHCI. However, there does not appear to be a specification for any HCI used by USB 4 (that I can find, anyway). Does USB4 just use xHCI? (According to Wikipedia it might use Thunderbolt 3 but I don't know if just supporting Thunderbolt3 would make it possible for me to use USB 4.) I'm mainly asking out of curiosity at this point.
You have given a good example of the very common misconception of most people starting out using USB. USB 1 is not UHCI or OHCI, USB 2 is not EHCI, etc.

A USB 4 device, with the acceptable Type-A socket, is completely UHCI/OHCI compatible. It also goes the other way around, a UHCI/OHCI controller is USB 4 compatible. The version of the USB specification has nothing to do with the version of the xHC controller.

A USB 1 device plugged into an xHCI is fully compatible. In fact, this direction, the USB 1 device is fully capable of anything it could have done when plugged into a UHCI/OHCI.

The other way around, if you plug a USB 4 device in to a UHCI, it should, at the very least, enumerate and let the OS know what it is. It may not be usable, in a sense, but it is fully USB 4 compatible. I have a Super-Speed thumb drive that uses streams and is extremely fast at large transfers when plugged into a stream capable xHCI controller. However, that exact same thumb drive, when plugged into an UHCI still functions and allows me to read or write to it, just not as fast (UAS Protocol using streams verses BBB protocol).

The USB specification version is usually the first released while the xHC controller is then released to accommodate the new features in the new USB specification. It just so happens, at the moment, that the latest release of the xHCI specification (revision 1.20) is/will be USB 4.0 capable.

Hope this makes sense.
Ben
- http://www.fysnet.net/the_universal_serial_bus.htm
Ethin
Member
Member
Posts: 625
Joined: Sun Jun 23, 2019 5:36 pm
Location: North Dakota, United States

Re: What HCI does USB4 use?

Post by Ethin »

BenLunt wrote:
Ethin wrote:I know that USB 1 uses UHCI and OHCI, USB 2 uses EHCI, and USB 3 uses xHCI. However, there does not appear to be a specification for any HCI used by USB 4 (that I can find, anyway). Does USB4 just use xHCI? (According to Wikipedia it might use Thunderbolt 3 but I don't know if just supporting Thunderbolt3 would make it possible for me to use USB 4.) I'm mainly asking out of curiosity at this point.
You have given a good example of the very common misconception of most people starting out using USB. USB 1 is not UHCI or OHCI, USB 2 is not EHCI, etc.

A USB 4 device, with the acceptable Type-A socket, is completely UHCI/OHCI compatible. It also goes the other way around, a UHCI/OHCI controller is USB 4 compatible. The version of the USB specification has nothing to do with the version of the xHC controller.

A USB 1 device plugged into an xHCI is fully compatible. In fact, this direction, the USB 1 device is fully capable of anything it could have done when plugged into a UHCI/OHCI.

The other way around, if you plug a USB 4 device in to a UHCI, it should, at the very least, enumerate and let the OS know what it is. It may not be usable, in a sense, but it is fully USB 4 compatible. I have a Super-Speed thumb drive that uses streams and is extremely fast at large transfers when plugged into a stream capable xHCI controller. However, that exact same thumb drive, when plugged into an UHCI still functions and allows me to read or write to it, just not as fast (UAS Protocol using streams verses BBB protocol).

The USB specification version is usually the first released while the xHC controller is then released to accommodate the new features in the new USB specification. It just so happens, at the moment, that the latest release of the xHCI specification (revision 1.20) is/will be USB 4.0 capable.

Hope this makes sense.
Ben
- http://www.fysnet.net/the_universal_serial_bus.htm
Yeah, this helped. Thanks. What about the other way around (using Type-C sockets)? And how will xHCI accommodate the extra features of USB 4.0 (USB 3/PCIe/display port/host-to-host tunnelling)? Like I think its awesome that I can now plug in a device and it shows up on my PCIe bus, but how would I even know that somebody has attached a device that tunnels PCIe? Would that appear as a hot-swappable device? (I presume that the host-to-host and display port tunnelling mechanisms require their own device drivers.)
Octocontrabass
Member
Member
Posts: 5563
Joined: Mon Mar 25, 2013 7:01 pm

Re: What HCI does USB4 use?

Post by Octocontrabass »

USB4 defines a new host interface adapter that's responsible for configuring tunnels for the different kinds of traffic USB4 supports. When the traffic in question is USB, you'll configure the USB4HIA to route it to an xHCI controller. Different types of traffic (PCIe/DisplayPort/host-to-host) will be routed elsewhere.
Ethin
Member
Member
Posts: 625
Joined: Sun Jun 23, 2019 5:36 pm
Location: North Dakota, United States

Re: What HCI does USB4 use?

Post by Ethin »

Octocontrabass wrote:USB4 defines a new host interface adapter that's responsible for configuring tunnels for the different kinds of traffic USB4 supports. When the traffic in question is USB, you'll configure the USB4HIA to route it to an xHCI controller. Different types of traffic (PCIe/DisplayPort/host-to-host) will be routed elsewhere.
I assume that the HIA's configuration registers are defined in chapter 8 of the USB4 spec, but how do you actually discover the HIA to begin with?
Octocontrabass
Member
Member
Posts: 5563
Joined: Mon Mar 25, 2013 7:01 pm

Re: What HCI does USB4 use?

Post by Octocontrabass »

I think chapter 8 might be the registers for USB4 hubs. The HIA is defined in chapter 12. You can detect it from the PCI class code 0C 03 40, similar to other USB host controllers.
Post Reply