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
This commit is contained in:
Ivan Voras 2008-07-24 23:22:19 +00:00
parent 7e4e65ffb3
commit c7317f5bb0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=180791

View file

@ -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;