| From e4436a7c17ac2b5e138f93f83a541cba9b311685 Mon Sep 17 00:00:00 2001 |
| From: Jayachandran C <jayachandranc@netlogicmicro.com> |
| Date: Fri, 27 Jan 2012 20:27:32 +0530 |
| Subject: usb: Skip PCI USB quirk handling for Netlogic XLP |
| |
| From: Jayachandran C <jayachandranc@netlogicmicro.com> |
| |
| commit e4436a7c17ac2b5e138f93f83a541cba9b311685 upstream. |
| |
| 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> |
| Acked-by: Alan Stern <stern@rowland.harvard.edu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/host/pci-quirks.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| --- a/drivers/usb/host/pci-quirks.c |
| +++ b/drivers/usb/host/pci-quirks.c |
| @@ -498,6 +498,12 @@ hc_init: |
| |
| static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev) |
| { |
| + /* Skip Netlogic mips SoC's internal PCI USB controller. |
| + * This device does not need/support EHCI/OHCI handoff |
| + */ |
| + if (pdev->vendor == 0x184e) /* vendor Netlogic */ |
| + return; |
| + |
| if (pdev->class == PCI_CLASS_SERIAL_USB_UHCI) |
| quirk_usb_handoff_uhci(pdev); |
| else if (pdev->class == PCI_CLASS_SERIAL_USB_OHCI) |