Host controller interface
From Wikipedia, the free encyclopedia
A host controller interface (HCI) is a register level interface which allows a host controller for USB or FireWire to communicate with the operating system of a personal computer.
On the expansion card or built-in controller, this probably involves much custom logic; prototypes involve digital logic engines in FPGAs plus analog circuitry managing the high speed differential signals. On the computer side, it requires a software device driver (called a Host Controller Driver, or HCD).
Contents |
[edit] OHCI
Open Host Controller Interface, or OHCI, is an open standard.
When applied to a FireWire card, OHCI means that the card supports a standard interface to the PC and can be used by the OHCI FireWire drivers that come with all modern operating systems. Because the card has a standard OHCI interface, the OS does not need to know in advance exactly who makes the card or how it works, it can safely assume that the card understands the set of well-defined commands that are defined in the standard protocol.
The OHCI standard for USB is broadly similar, but of course supports USB 1.1 (full and low speeds only) and so its register interface looks completely different. Compared to UHCI, it moves more intelligence into the controller and is accordingly much more efficient; that was part of the motivation for defining it. If a computer has a non-x86 USB 1.1 host, or an x86 one without an Intel or VIA chipset, it probably uses OHCI.
[edit] UHCI
Universal Host Controller Interface (UHCI) was created by Intel for USB 1.0 (full and low speeds only). UHCI is also a Linux kernel module for general Intel PCI chipset USB controllers. Far from being "universal", it is actually proprietary and is incompatible with OHCI; OHCI was developed in part to counter the problems observed with UHCI.
The Linux kernel module supports Intel and VIA UHCI controllers. The kernel module is called USB_UHCI_HCD and is located under "Device Drivers / USB Support".
[edit] EHCI
Enhanced Host Controller Interface (EHCI) is a high speed controller standard which is publicly specified. The USB-IF insisted on this for USB 2.0 instead of having different standards for PCI based host interfaces, which would have increased complexity and therefore costs. Intel hosted EHCI conformance testing, which helped to ensure that the various implementations of this new standard didn't diverge too much from each other. EHCI relies on "companion controllers" (OHCI or UHCI) to handle full and low speed devices that aren't connected to high speed hubs.