Enhanced Host Controller Interface: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
m (moved EHCI to Enhanced Host Controller Interface: Keeping the wiki consistent.)
No edit summary
Line 1: Line 1:
{{stub}}

==Introduction==
==Introduction==


Line 11: Line 9:
On a PC you will normally find the EHCI USB controller on the PCI bus - in fact it is the only access method specified in the specification.<br />
On a PC you will normally find the EHCI USB controller on the PCI bus - in fact it is the only access method specified in the specification.<br />
USB 2.0 supports interfacing with USB 1.0 devices. However, EHCI is NOT expected to support them. Instead, you will find an UHCI or OHCI ''companion controller''.<br />
USB 2.0 supports interfacing with USB 1.0 devices. However, EHCI is NOT expected to support them. Instead, you will find an UHCI or OHCI ''companion controller''.<br />
Therefore you must implement OHCI and UHCI as well. Note there are NOT companions of both types, it is one type or another.
Therefore you must implement [[OHCI]] and [[UHCI]] as well. Note there are NOT companions of both types, it is one type or another.

The EHCI controller will always have a PCI Class ID of 0x0C, a Subclass ID of 0x03, and an Interface value of 0x20. These values can be used to find the configuration space of the controller, which contains the memory mapped address of the EHCI registers. The address information can be found in the BAR0 PCI configuration space register.

==Registers==

{| {{wikitable}}
! Offset (Hex)
! Name
! Description
|-
| 00 || USBCMD || USB Command
|-
| 04 || USBSTS || USB Status
|-
| 08 || USBINTR || USB Interrupt Enable
|-
| 0C || FRINDEX || USB Frame Index
|-
| 10 || CTRLDSSEGMENT || 4G Segment Selector
|-
| 14 || PERIODICLISTBASE || Frame List Base Address
|-
| 18 || ASYNCLISTADDR || Next Asynchronous List Address
|-
| 40 || CONFIGFLAG || Configured Flag Register
|-
|}


==See Also==
==See Also==
Line 17: Line 42:
* [[USB]]
* [[USB]]
* [[OHCI]]
* [[OHCI]]
* [[UHCI]]


==Links==
==Links==

Revision as of 17:44, 12 January 2013

Introduction

EHCI (Enhanced Host Controller Interface) is the Single method of interfacing with USB 2.0.
This makes life a lot easier than with USB 1.0, where 2 incompatible standards both survived.
This is because the USB-IF insisted on a single implementation, produced by Intel.

Interface

On a PC you will normally find the EHCI USB controller on the PCI bus - in fact it is the only access method specified in the specification.
USB 2.0 supports interfacing with USB 1.0 devices. However, EHCI is NOT expected to support them. Instead, you will find an UHCI or OHCI companion controller.
Therefore you must implement OHCI and UHCI as well. Note there are NOT companions of both types, it is one type or another.

The EHCI controller will always have a PCI Class ID of 0x0C, a Subclass ID of 0x03, and an Interface value of 0x20. These values can be used to find the configuration space of the controller, which contains the memory mapped address of the EHCI registers. The address information can be found in the BAR0 PCI configuration space register.

Registers

Offset (Hex) Name Description
00 USBCMD USB Command
04 USBSTS USB Status
08 USBINTR USB Interrupt Enable
0C FRINDEX USB Frame Index
10 CTRLDSSEGMENT 4G Segment Selector
14 PERIODICLISTBASE Frame List Base Address
18 ASYNCLISTADDR Next Asynchronous List Address
40 CONFIGFLAG Configured Flag Register

See Also

Links