usb/120017: CS5536 (AMD Geode) USB 2.0 quirk
Ivan Voras
ivoras at freebsd.org
Sat Jan 26 12:43:30 PST 2008
More correct patch attached :)
-------------- next part --------------
--- usb_/ehci_pci.c 2008-01-26 18:42:11.000000000 +0100
+++ usb/ehci_pci.c 2008-01-26 21:15:28.000000000 +0100
@@ -99,6 +99,8 @@
/* AMD */
#define PCI_EHCI_DEVICEID_8111 0x10227463
static const char *ehci_device_8111 = "AMD 8111 USB 2.0 controller";
+#define PCI_EHCI_DEVICEID_CS5536 0x20951022
+static const char *ehci_device_cs5536 = "AMD CS5536 (Geode) USB 2.0 controller";
/* ATI */
#define PCI_EHCI_DEVICEID_SB200 0x43451002
@@ -214,6 +216,8 @@
return (ehci_device_m5239);
case PCI_EHCI_DEVICEID_8111:
return (ehci_device_8111);
+ case PCI_EHCI_DEVICEID_CS5536:
+ return (ehci_device_cs5536);
case PCI_EHCI_DEVICEID_SB200:
return (ehci_device_sb200);
case PCI_EHCI_DEVICEID_SB400:
@@ -291,8 +295,13 @@
case PCI_USBREV_PRE_1_0:
case PCI_USBREV_1_0:
case PCI_USBREV_1_1:
- sc->sc_bus.usbrev = USBREV_UNKNOWN;
device_printf(self, "pre-2.0 USB rev\n");
+ if (pci_get_devid(self) == PCI_EHCI_DEVICEID_CS5536) {
+ sc->sc_bus.usbrev = USBREV_2_0;
+ device_printf(self, "Quirk for CS5536 USB 2.0 enabled\n");
+ break;
+ }
+ sc->sc_bus.usbrev = USBREV_UNKNOWN;
return ENXIO;
case PCI_USBREV_2_0:
sc->sc_bus.usbrev = USBREV_2_0;
More information about the freebsd-usb
mailing list