Host controller interface (USB, Firewire)

From Wikipedia, the free encyclopedia
  (Redirected from Open Host Controller Interface)
Jump to: navigation, search

A host controller interface (HCI) is a register-level interface that enables a host controller for USB or FireWire hardware to communicate with a host controller driver in software. The driver software is typically provided with an operating system of a personal computer, but may also be implemented by application-specific devices such as a microcontroller.

On the expansion card or motherboard controller, this involves much custom logic, with digital logic engines in the motherboard's controller chip, plus analog circuitry managing the high-speed differential signals. On the software side, it requires a device driver (called a Host Controller Driver, or HCD).

FireWire[edit]

Open Host Controller Interface[edit]

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.

USB[edit]

Open Host Controller Interface[edit]

The OHCI standard for USB is similar, but supports USB 1.1 (full and low speeds) only; so as a result its register interface looks completely different. Compared with UHCI, it moves more intelligence into the controller, and thus is accordingly much more efficient; this was part of the motivation for defining it. If a computer provides non-x86 USB 1.1, or x86 USB 1.1 from a USB controller that is not part of an Intel or a VIA chipset, it probably uses OHCI (e.g. OHCI is common on add-in PCI Cards based on an NEC chipset). It has much less intellectual property restrictions than UHCI.[1]

Universal Host Controller Interface[edit]

Universal Host Controller Interface (UHCI) is a proprietary interface created by Intel for USB 1.x (full and low speeds). It requires a license from Intel. A USB controller using UCHI does little in hardware and requires a software UCHI driver to do much of the work of managing the USB bus.[1]

Enhanced Host Controller Interface[edit]

Enhanced Host Controller Interface (EHCI) is a high-speed controller standard applicable to USB 2.0. The existence of UHCI and OHCI based systems, as existed previously, entailed greater complexity and costs than necessary. Consequently the USB-IF insisted on a public specification for EHCI. Intel hosted EHCI conformance testing and this helped to prevent incursion of proprietary features.

Originally a PC providing high-speed ports had two controllers, one handling low- and full-speed devices and the second handling high-speed devices. Typically such a system had UHCI, OHCI and EHCI drivers. The UHCI driver provided low- and full-speed functions using an Intel or VIA chipset's USB host controllers on the motherboard. The OHCI driver provided low and full speed functions for USB ports of a PCI expansion card with any other chipset vendor's integrated USB host controllers or discrete controller chipsets attached to the computer's expansion bus, if present. The EHCI driver provided high-speed functions for USB ports on the motherboard or on the discrete USB controller. In more recent hardware, all ports are routed through an internal "rate-matching" hub (RMH) and the EHCI controller indirectly provides full and low speed USB functions.

Extensible Host Controller Interface[edit]

Extensible Host Controller Interface (XHCI) is the newest host controller standard that improves speed, power efficiency and virtualization over its predecessors The goal was also to define a USB host controller to replace UHCI/OHCI/EHCI. It supports all USB device speeds (USB 3.1 SuperSpeed+, USB 3.0 SuperSpeed, USB 2.0 Low-, Full-, and High-speed, USB 1.1 Low- and Full-speed).

References[edit]

  1. ^ a b gowdy (August 27, 2007). "Linux USB FAQ". Retrieved April 13, 2014. 

See also[edit]

External links[edit]