patch - fix for amd geode cs5536 companion (ehci) panic

Andrew Atrens atrens at nortel.com
Mon Aug 13 13:04:28 PDT 2007


Also fixes word-reversed AMD 8111 device ID.



# cvs diff -u ehci_pci.c
Index: ehci_pci.c
===================================================================
RCS file: /usr/dfly/repo/src/sys/bus/usb/ehci_pci.c,v
retrieving revision 1.17
diff -u -r1.17 ehci_pci.c
--- ehci_pci.c  28 Jun 2007 13:55:12 -0000      1.17
+++ ehci_pci.c  9 Aug 2007 00:06:45 -0000
@@ -93,8 +93,10 @@
 static const char *ehci_device_m5239 = "ALi M5239 USB 2.0 controller";

 /* AMD */
-#define PCI_EHCI_DEVICEID_8111         0x10227463
+#define PCI_EHCI_DEVICEID_8111         0x74631022
+#define PCI_EHCI_DEVICEID_CS5536       0x20951022
 static const char *ehci_device_8111 = "AMD 8111 USB 2.0 controller";
+static const char *ehci_device_CS5536 = "AMD CS5536 USB 2.0 controller";

 /* ATI */
 #define PCI_EHCI_DEVICEID_SB200                0x43451002
@@ -210,6 +212,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:
@@ -412,6 +416,8 @@
                        if (res != 0 || buscount != 1)
                                continue;
                        bsc = device_get_softc(nbus[0]);
+                       if (bsc == 0 || bsc->bdev == 0)
+                               continue;
                        DPRINTF(("ehci_pci_attach: companion %s\n",
                            device_get_nameunit(bsc->bdev)));
                        sc->sc_comps[ncomp++] = bsc;





More information about the Submit mailing list