Date: Sat, 26 Jan 2008 20:03:14 GMT From: Ivan Voras <ivoras@FreeBSD.org> To: freebsd-gnats-submit@FreeBSD.org Subject: usb/120017: CS5536 (AMD Geode) USB 2.0 quirk Message-ID: <200801262003.m0QK3EtF012574@www.freebsd.org> Resent-Message-ID: <200801262010.m0QKA3tE013812@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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 ivoras@ursaminor.cosmos:/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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801262003.m0QK3EtF012574>