Host controller interface (USB, Firewire)

From Wikipedia, the free encyclopedia
  (Redirected from OHCI)
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 (IEEE 1394) 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 to the OHCI standard for FireWire, 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] It only supports 32-bit memory addressing,[2] so it requires an IOMMU or a computationally expensive bounce buffer to work with a 64-bit operating system. OHCI interfaces to the rest of the computer only with memory-mapped I/O.[2]

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 UHCI does little in hardware and requires a software UHCI driver to do much of the work of managing the USB bus.[1] It only supports 32-bit memory addressing,[3] so it requires an IOMMU or a computationally expensive bounce buffer to work with a 64-bit operating system. UCHI is configured with port-mapped I/O and memory-mapped I/O, and also requires memory-mapped I/O for status updates and for data buffers needed to hold data that needs to be sent or data that was received.[3]

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 EHCI and either OHCI or UHCI 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.

EHCI was designed to work with 32-bit or 64-bit operating systems, so it does not need a bounce buffer or IOMMU to work with a 64-bit operating system as long as a rate-matching hub is implemented to provide full-speed and low-speed connectivity instead of companion controllers.

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).

See also[edit]

References[edit]

  1. ^ a b gowdy (August 27, 2007). "Linux USB FAQ". Retrieved April 13, 2014. 
  2. ^ a b ftp://ftp.compaq.com/pub/supportinformation/papers/hcir1_0a.pdf
  3. ^ a b ftp://ftp.netbsd.org/pub/NetBSD/misc/blymn/uhci11d.pdf

External links[edit]