|
@@ -872,7 +872,17 @@ static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev)
|
|
|
*/
|
|
|
if (pdev->vendor == 0x184e) /* vendor Netlogic */
|
|
|
return;
|
|
|
+ if (pdev->class != PCI_CLASS_SERIAL_USB_UHCI &&
|
|
|
+ pdev->class != PCI_CLASS_SERIAL_USB_OHCI &&
|
|
|
+ pdev->class != PCI_CLASS_SERIAL_USB_EHCI &&
|
|
|
+ pdev->class != PCI_CLASS_SERIAL_USB_XHCI)
|
|
|
+ return;
|
|
|
|
|
|
+ if (pci_enable_device(pdev) < 0) {
|
|
|
+ dev_warn(&pdev->dev, "Can't enable PCI device, "
|
|
|
+ "BIOS handoff failed.\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (pdev->class == PCI_CLASS_SERIAL_USB_UHCI)
|
|
|
quirk_usb_handoff_uhci(pdev);
|
|
|
else if (pdev->class == PCI_CLASS_SERIAL_USB_OHCI)
|
|
@@ -881,5 +891,6 @@ static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev)
|
|
|
quirk_usb_disable_ehci(pdev);
|
|
|
else if (pdev->class == PCI_CLASS_SERIAL_USB_XHCI)
|
|
|
quirk_usb_handoff_xhci(pdev);
|
|
|
+ pci_disable_device(pdev);
|
|
|
}
|
|
|
DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, quirk_usb_early_handoff);
|