commit fd96c2b26339f21a66504cb3f36579bb312a8f3b Author: Rene Herman Date: Tue Mar 18 00:02:16 2008 +0100 USB: VIA VT6212(L) 10us EHCI sleep time select. The VIA VT6212(L) uses a 1us EHCI sleep time by default which hogs the bus bad. Use the 10us EHCI spec value instead as suggested by Lev A. Melnikovsky. CC: Lev A. Melnikovsky Signed-off-by: Rene Herman diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c index 3ba0166..bdc8af9 100644 --- a/drivers/usb/host/ehci-pci.c +++ b/drivers/usb/host/ehci-pci.c @@ -152,6 +152,20 @@ static int ehci_pci_setup(struct usb_hcd *hcd) break; } break; + case PCI_VENDOR_ID_VIA: + if (pdev->device == 0x3104 && (pdev->revision & 0xf0) == 0x60) { + u8 tmp; + /* + * The VT6212 defaults to a 1us EHCI sleep time which + * hogs the bus badly. Setting bit 5 of 0x4B sets the + * sleep time to the EHCI standard 10us. + */ + pci_read_config_byte(pdev, 0x4b, &tmp); + if (tmp & 0x20) + break; + pci_write_config_byte(pdev, 0x4b, tmp | 0x20); + } + break; } ehci_reset(ehci);