kern/55094: Intel USB 2.0 unrecognized (partial patch provided)

Brent Casavant bcasavan at
Wed Jul 30 22:20:15 PDT 2003

>Number:         55094
>Category:       kern
>Synopsis:       Intel USB 2.0 unrecognized (partial patch provided)
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 30 22:20:13 PDT 2003
>Originator:     Brent Casavant
>Release:        FreeBSD 5.1-RELEASE i386
Angeltread Software Organization
System: FreeBSD 5.1-RELEASE FreeBSD 5.1-RELEASE #7: Wed Jul 30 23:33:08 CDT 2003 bcasavan at i386

Intel P4 2.4GHz on a Gigabyte GA-8IK1100 motherboard.

FreeBSD 5.1-RELEASE with local modifications to enable various hardware
not currently supported by -RELEASE (and maybe even by -CURRENT).


One of the USB controllers on the Gigabyte GA-8IK1100 motherboard is not
recognized and a driver fails to attach.  This motherboard uses an
Intel ICH5R I/O controller.

The pciconf line for this device is:

--- cut here ---
none0 at pci0:29:7:        class=0x0c0320 card=0x50061458 chip=0x24dd8086 rev=0x02 hdr=0x00
    vendor   = 'Intel Corporation'
    class    = serial bus
    subclass = USB
--- cut here ---

The BIOS identifies this device as a USB 2.0 controller.

With the modifications from the patch below, the following dmesg output

--- cut here ---
uhci4: <Intel 82801EB (ICH5) USB controller USB-E> mem 0xf7000000-0xf70003ff irq 10 at device 29.7 on pci0
uhci4: failed to enable port mapping!
uhci4: Could not map ports
device_probe_and_attach: uhci4 attach returned 6
--- cut here ---

Note that I named the controller "USB-E" as it was the next sequentially
available description.  I'm not sure if this was proper or not, but is
sufficed for the moment.

For reference, here's the USB section of dmesg for all the succesfully
attached USB controllers:

--- cut here ---
uhci0: <Intel 82801EB (ICH5) USB controller USB-A> port 0xbc00-0xbc1f irq 2 at device 29.0 on pci0
usb0: <Intel 82801EB (ICH5) USB controller USB-A> on uhci0
usb0: USB revision 1.0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
uhci1: <Intel 82801EB (ICH5) USB controller USB-B> port 0xb000-0xb01f irq 5 at device 29.1 on pci0
usb1: <Intel 82801EB (ICH5) USB controller USB-B> on uhci1
usb1: USB revision 1.0
uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
uhci2: <Intel 82801EB (ICH5) USB controller USB-C> port 0xb400-0xb41f irq 9 at device 29.2 on pci0
usb2: <Intel 82801EB (ICH5) USB controller USB-C> on uhci2
usb2: USB revision 1.0
uhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub2: 2 ports with 2 removable, self powered
uhci3: <Intel 82801EB (ICH5) USB controller USB-D> port 0xb800-0xb81f irq 2 at device 29.3 on pci0
usb3: <Intel 82801EB (ICH5) USB controller USB-D> on uhci3
usb3: USB revision 1.0
uhub3: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub3: 2 ports with 2 removable, self powered
--- cut here ---

The only interesting thing I can see with regard to these that is not
present for the failing case is that the successful ones have a port
assignment, whereas the failing one has a memory assignment.


Boot a Gigabyte GA-8IK1100 motherboard on FreeBSD 5.1-RELEASE with
the following patch applied.


This is a partial patch to enable support for this device.  I'm not
sure where to go from here to make this work, so hopefully one of
the maintainers will be able to take a look at it.  I'm more than
willing to run test code.

--- cut here ---
% cvs diff -u sys/dev/usb/uhci_pci.c
Index: sys/dev/usb/uhci_pci.c
RCS file: /usr/FreeBSDCVS/src/sys/dev/usb/uhci_pci.c,v
retrieving revision 1.46
diff -u -r1.46 uhci_pci.c
--- sys/dev/usb/uhci_pci.c      6 May 2003 19:30:41 -0000       1.46
+++ sys/dev/usb/uhci_pci.c      31 Jul 2003 03:39:40 -0000
@@ -126,6 +126,9 @@
 #define PCI_UHCI_DEVICEID_ICH5_D       0x24de8086
 static const char *uhci_device_ich5_d = "Intel 82801EB (ICH5) USB controller USB-D";
+#define PCI_UHCI_DEVICEID_ICH5_E       0x24dd8086
+static const char *uhci_device_ich5_e = "Intel 82801EB (ICH5) USB controller USB-E";
 #define PCI_UHCI_DEVICEID_440MX                0x719a8086
 static const char *uhci_device_440mx = "Intel 82443MX USB controller";
@@ -208,6 +211,8 @@
                return (uhci_device_ich5_c);
        } else if (device_id == PCI_UHCI_DEVICEID_ICH5_D) {
                return (uhci_device_ich5_d);
+       } else if (device_id == PCI_UHCI_DEVICEID_ICH5_E) {
+               return (uhci_device_ich5_e);
        } else if (device_id == PCI_UHCI_DEVICEID_440MX) {
                return (uhci_device_440mx);
        } else if (device_id == PCI_UHCI_DEVICEID_460GX) {
--- cut here ---

Thanks for your time and effort.

Brent Casavant

More information about the freebsd-bugs mailing list