diff options
author | Jayachandran C <jayachandranc@netlogicmicro.com> | 2012-01-27 09:57:32 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-02-02 15:46:36 -0500 |
commit | e4436a7c17ac2b5e138f93f83a541cba9b311685 (patch) | |
tree | 66051e7d756a025cd02d34bb3fe4fbc82aeb859b /drivers/usb/host/pci-quirks.c | |
parent | 529febeee680dc22416fca033151a5e8bc620447 (diff) |
usb: Skip PCI USB quirk handling for Netlogic XLP
The Netlogic XLP SoC's on-chip USB controller appears as a PCI
USB device, but does not need the EHCI/OHCI handoff done in
usb/host/pci-quirks.c.
The pci-quirks.c is enabled for all vendors and devices, and is
enabled if USB and PCI are configured.
If we do not skip the qurik handling on XLP, the readb() call in
ehci_bios_handoff() will cause a crash since byte access is not
supported for EHCI registers in XLP.
Signed-off-by: Jayachandran C <jayachandranc@netlogicmicro.com>
Cc: stable <stable@vger.kernel.org>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/host/pci-quirks.c')
-rw-r--r-- | drivers/usb/host/pci-quirks.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index caf87428ca4..ac53a662a6a 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c | |||
@@ -867,6 +867,12 @@ hc_init: | |||
867 | 867 | ||
868 | static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev) | 868 | static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev) |
869 | { | 869 | { |
870 | /* Skip Netlogic mips SoC's internal PCI USB controller. | ||
871 | * This device does not need/support EHCI/OHCI handoff | ||
872 | */ | ||
873 | if (pdev->vendor == 0x184e) /* vendor Netlogic */ | ||
874 | return; | ||
875 | |||
870 | if (pdev->class == PCI_CLASS_SERIAL_USB_UHCI) | 876 | if (pdev->class == PCI_CLASS_SERIAL_USB_UHCI) |
871 | quirk_usb_handoff_uhci(pdev); | 877 | quirk_usb_handoff_uhci(pdev); |
872 | else if (pdev->class == PCI_CLASS_SERIAL_USB_OHCI) | 878 | else if (pdev->class == PCI_CLASS_SERIAL_USB_OHCI) |