diff options
author | ivoras <ivoras@FreeBSD.org> | 2008-07-24 23:22:19 +0000 |
---|---|---|
committer | ivoras <ivoras@FreeBSD.org> | 2008-07-24 23:22:19 +0000 |
commit | 85acff3520ad9c7e10d1ee5cae8223d4023c2ea3 (patch) | |
tree | 26e0ad7829a2211bd74d3859fcc4b8545aede7c5 /sys/dev | |
parent | 5c90c0c784ae80f2901ec8d6e1f9aa866fbb4542 (diff) | |
download | FreeBSD-src-85acff3520ad9c7e10d1ee5cae8223d4023c2ea3.zip FreeBSD-src-85acff3520ad9c7e10d1ee5cae8223d4023c2ea3.tar.gz |
Add tweak for AMD Geode "companion" chip, AMD CS5536, which is apparently
USB 2.0 capable but is shy and doesn't adwertise it much.
PR: 120017
Reviewed by: imp
Approved by: gnn (mentor)
MFC after: 2 weeks
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/usb/ehci_pci.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/dev/usb/ehci_pci.c b/sys/dev/usb/ehci_pci.c index dae2186..37a56c4 100644 --- a/sys/dev/usb/ehci_pci.c +++ b/sys/dev/usb/ehci_pci.c @@ -99,6 +99,8 @@ static const char *ehci_device_m5239 = "ALi M5239 USB 2.0 controller"; /* 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 @@ -221,6 +223,8 @@ ehci_pci_match(device_t self) 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: @@ -305,8 +309,13 @@ ehci_pci_attach(device_t self) 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; |