1 EHCI(7D)                            Devices                           EHCI(7D)
   2 
   3 
   4 
   5 NAME
   6        ehci - Enhanced host controller driver
   7 
   8 SYNOPSIS
   9        usb@unit-address
  10 
  11 
  12 DESCRIPTION
  13        The ehci driver is a USBA (Solaris USB Architecture) compliant nexus
  14        driver that supports the Enhanced Host Controller Interface
  15        Specification 2.0, an industry standard developed by Intel.
  16 
  17 
  18        A USB 2.0 host controller includes one high-speed host controller and
  19        zero or more USB 1.1 host controllers. The high-speed host controller
  20        implements an EHCI (Enhanced Host Controller Interface) that is used
  21        for all high-speed communications to high-speed-mode devices.
  22 
  23 
  24        All USB 2.0 devices connected to the root ports of the USB 2.0 host
  25        controller and all devices connected to a high-speed-mode hub should be
  26        routed to the EHCI host controller.
  27 
  28 
  29        All full- and low-speed devices connected to the root ports of the USB
  30        2.0 host controller should be routed to the companion USB 1.1 host
  31        controllers. (OHCI or UHCI host controller).
  32 
  33 
  34        The ehci supports bulk, interrupt, control and isochronous transfers
  35        (on USB1.x devices behind a USB2.0 hub).
  36 
  37 FILES
  38        /kernel/drv/sparcv9/ehci
  39                                    Device driver (SPARC)
  40 
  41 
  42        /kernel/drv/amd64/ehci
  43                                    Device driver (x86)
  44 
  45 
  46        /kernel/drv/ehci.conf
  47                                    Driver configuration file
  48 
  49 
  50 ATTRIBUTES
  51        See attributes(5) for descriptions of the following attributes:
  52 
  53 
  54 
  55 
  56        +---------------+-------------------------------+
  57        |ATTRIBUTE TYPE |        ATTRIBUTE VALUE        |
  58        +---------------+-------------------------------+
  59        |Architecture   | SPARC, x86, PCI-based systems |
  60        +---------------+-------------------------------+
  61 
  62 SEE ALSO
  63        add_drv(1M), prtconf(1M), rem_drv(1M), update_drv(1M), attributes(5),
  64        hubd(7D), uhci(7D), ohci(7D), usba(7D)
  65 
  66 
  67        Writing Device Drivers
  68 
  69 
  70        Universal Serial Bus Specification 2.0
  71 
  72 
  73        Enhanced Host Controller Interface Specification 1.0
  74 
  75 
  76        System Administration Guide: Basic Administration
  77 
  78 
  79        http://www.usb.org
  80 
  81 
  82        http://www.intel.com/technology/usb/ehcispec.htm
  83 
  84 DIAGNOSTICS
  85        In addition to being logged, the following messages may appear on the
  86        system console. All messages are formatted in the following manner:
  87 
  88          WARNING: <device path>   (ehci<instance number>): Message...
  89 
  90 
  91 
  92        Unrecoverable USB hardware error.
  93 
  94            There was an unrecoverable USB hardware error reported by the ehci
  95            controller. Reboot the system. If this problem persists, contact
  96            your system vendor.
  97 
  98 
  99        No SOF interrupts.
 100 
 101            No SOF interrupts have been received. This USB EHCI controller is
 102            unusable.
 103 
 104 
 105        Error recovery failure: Please hotplug the 2.0 hub at <device path>.
 106 
 107            The driver failed to clear 2.0 hub's TT buffer. Remove and reinsert
 108            the external USB2.0 hub.
 109 
 110 
 111        Revision<xx> is not supported.
 112 
 113            High speed USB devices prior to revision 0.95 are not supported.
 114 
 115 
 116 
 117        The following messages may be entered into the system log. They are
 118        formatted in the following manner:
 119 
 120          <device path> (ehci<instance number>):     Message...
 121 
 122 
 123 
 124        Unable to take control from BIOS. Failure is ignored.
 125 
 126            The driver was unable to take control of the EHCI hardware from the
 127            system's BIOS. This failure is ignored. To abort the attach on this
 128            take-over failure, comment out a property in ehci.conf. (x86 only).
 129 
 130 
 131        Unable to take control from BIOS.
 132 
 133            The driver is unable to take control of the EHCI hardware from the
 134            system's BIOS and aborts the attach. High speed (USB 2.0) support
 135            is disabled.  In this case, all USB devices run at full/low speed.
 136            Contact your system vendor or your system administrator for
 137            possible changes in BIOS settings. You can disable a property in
 138            ehci.conf to ignore this failure. (x86 only.)
 139 
 140 
 141        Low speed device is not supported.
 142        Full speed device is not supported.
 143 
 144            The driver detected a low or full speed device on its root hub
 145            port. Per USB 2.0 specification, the device should be routed to a
 146            companion host controller (OHCI or UHCI). However, no attached
 147            companion host controller appears to be available. Therefore, low
 148            and full speed devices are not supported.
 149 
 150 
 151        Low speed endpoint's poll interval of <n> ms is below threshold.
 152        Rounding up to 8 ms.
 153 
 154            Low speed endpoints are limited to polling intervals between 8 ms
 155            and 255 ms.  If a device reports a polling interval that is less
 156            than 8 ms, the driver uses 8 ms instead.
 157 
 158 
 159        Low speed endpoint's poll interval is greater than 255 ms.
 160 
 161            The low speed device's polling interval is out of range. The host
 162            controller does not allocate bandwidth for this device. This device
 163            is not usable.
 164 
 165 
 166        Full speed endpoint's poll interval must be between 1 and 255 ms.
 167 
 168            The full speed device's polling interval is out of range. The host
 169            controller does not allocate bandwidth for this device. This device
 170            is not usable.
 171 
 172 
 173        High speed endpoint's poll interval must be between 1 and 16 units.
 174 
 175            The high speed device's polling interval is out of range. The host
 176            controller will not allocate bandwidth for this device. This device
 177            will not be usable.  Refer to the USB specification, revision 2.0
 178            for the unit definition.
 179 
 180 
 181        ehci_modify_qh_status_bit: Failed to halt qh=<address>.
 182 
 183            Error recovery failed. Please disconnect and reinsert all devices
 184            or reboot.
 185 
 186 
 187        Note -
 188 
 189          Due to recently discovered incompatibilities with this USB
 190          controller, USB2.x transfer support has been disabled. However, this
 191          device continues to function as a USB1.x controller. Information on
 192          enabling USB2.x support is provided in this man page.
 193 
 194          VIA chips may not be compatible with this driver. To bind ehci
 195          specifically to the chip and eliminate the warnings, and to enable
 196          USB2.x support, a new, more specific driver alias (refer to
 197          add_drv(1M) and update_drv(1M)) must be specified for ehci. By
 198          default, the ehci alias is 'pciclass,0c0320.' The compatible names in
 199          the prtconf(1M) output provides additional aliases. For example:
 200 
 201             # prtconf -vp | grep pciclass,0c0320
 202                  compatible: 'pci1106,3104.1106.3104.2063' +
 203          'pci1106,3104.1106.3104' + 'pci1106,3104' +
 204           pci1106,3104.2063' + 'pci1106,3104' + 'pciclass,0c0320' +
 205          'pciclass,0c03'
 206                   ....
 207 
 208 
 209                 A more specific alias is 'pci1106,3104.' Perform the follow-
 210                 ing step to add this alias, then reboot the system:
 211 
 212 
 213                 # update_drv -a -i '"pci1106,3104"' ehci
 214 
 215                 # reboot
 216 
 217 
 218 
 219        After you apply the above workaround, the following message is
 220        displayed in your system log:
 221 
 222 
 223        Applying VIA workarounds.
 224 
 225 
 226 
 227                                January 10, 2020                       EHCI(7D)