>Number:         120017
>Category:       usb
>Synopsis:       CS5536 (AMD Geode) USB 2.0 quirk
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-usb
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jan 26 20:10:02 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Ivan Voras
>Release:        7-STABLE
>Organization:
>Environment:
FreeBSD ursaminor.cosmos 7.0-PRERELEASE FreeBSD 7.0-PRERELEASE #3: Fri Jan 25 
00:20:32 CET 2008     [EMAIL PROTECTED]:/usr/obj/usr/src/sys/URSAMINOR  i386

>Description:
A quirk has to be made so USB 2.0 (EHCI) works on CS5536 (embedded AMD Geode 
companion chip) controller.
>How-To-Repeat:
Boot FreeBSD 7 or 8 on a suitable machine (e.g. fit-pc), observe the message 
"ehci0: pre-2.0 USB rev".
>Fix:
Patch supplied.

Patch attached with submission follows:

--- patch.txt begins here ---
--- usb_/ehci_pci.c     2008-01-26 18:42:11.000000000 +0100
+++ usb/ehci_pci.c      2008-01-26 18:50:20.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:
@@ -293,6 +297,10 @@
        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) {
+                       device_printf(self, "Quirk for CS5536 USB 2.0 
enabled\n");
+                       break;
+               }
                return ENXIO;
        case PCI_USBREV_2_0:
                sc->sc_bus.usbrev = USBREV_2_0;

--- patch.txt ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to