USB: Fix NEC OHCI chip silicon bug
This patch fixes a silicon bug in some NEC OHCI chips. The bug appears at random times and is very, very difficult to reproduce. Without the following patch, Linux would shut the chip and its associated devices down. In Apple PowerBooks this leads to an unusable keyboard and mouse (SSH still working). The idea of restarting the chip is taken from public Darwin code. Signed-off-by: Michael Hanselmann <linux-kernel@hansmi.ch> Cc: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:

zatwierdzone przez
Greg Kroah-Hartman

rodzic
020363384a
commit
d576bb9f27
@@ -111,6 +111,18 @@ static int ohci_quirk_toshiba_scc(struct usb_hcd *hcd)
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Check for NEC chip and apply quirk for allegedly lost interrupts.
|
||||
*/
|
||||
static int ohci_quirk_nec(struct usb_hcd *hcd)
|
||||
{
|
||||
struct ohci_hcd *ohci = hcd_to_ohci (hcd);
|
||||
|
||||
ohci->flags |= OHCI_QUIRK_NEC;
|
||||
ohci_dbg (ohci, "enabled NEC chipset lost interrupt quirk\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* List of quirks for OHCI */
|
||||
static const struct pci_device_id ohci_pci_quirks[] = {
|
||||
{
|
||||
@@ -133,6 +145,10 @@ static const struct pci_device_id ohci_pci_quirks[] = {
|
||||
PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA_2, 0x01b6),
|
||||
.driver_data = (unsigned long)ohci_quirk_toshiba_scc,
|
||||
},
|
||||
{
|
||||
PCI_DEVICE(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_USB),
|
||||
.driver_data = (unsigned long)ohci_quirk_nec,
|
||||
},
|
||||
{
|
||||
/* Toshiba portege 4000 */
|
||||
.vendor = PCI_VENDOR_ID_AL,
|
||||
|
Reference in New Issue
Block a user