diff options
Diffstat (limited to 'drivers/usb/host/pci-quirks.c')
-rw-r--r-- | drivers/usb/host/pci-quirks.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c index 39f9e4a9a2d3..a3b6d7104ae2 100644 --- a/drivers/usb/host/pci-quirks.c +++ b/drivers/usb/host/pci-quirks.c | |||
@@ -443,7 +443,7 @@ static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask) | |||
443 | #define pio_enabled(dev) io_type_enabled(dev, PCI_COMMAND_IO) | 443 | #define pio_enabled(dev) io_type_enabled(dev, PCI_COMMAND_IO) |
444 | #define mmio_enabled(dev) io_type_enabled(dev, PCI_COMMAND_MEMORY) | 444 | #define mmio_enabled(dev) io_type_enabled(dev, PCI_COMMAND_MEMORY) |
445 | 445 | ||
446 | static void __devinit quirk_usb_handoff_uhci(struct pci_dev *pdev) | 446 | static void quirk_usb_handoff_uhci(struct pci_dev *pdev) |
447 | { | 447 | { |
448 | unsigned long base = 0; | 448 | unsigned long base = 0; |
449 | int i; | 449 | int i; |
@@ -461,12 +461,12 @@ static void __devinit quirk_usb_handoff_uhci(struct pci_dev *pdev) | |||
461 | uhci_check_and_reset_hc(pdev, base); | 461 | uhci_check_and_reset_hc(pdev, base); |
462 | } | 462 | } |
463 | 463 | ||
464 | static int __devinit mmio_resource_enabled(struct pci_dev *pdev, int idx) | 464 | static int mmio_resource_enabled(struct pci_dev *pdev, int idx) |
465 | { | 465 | { |
466 | return pci_resource_start(pdev, idx) && mmio_enabled(pdev); | 466 | return pci_resource_start(pdev, idx) && mmio_enabled(pdev); |
467 | } | 467 | } |
468 | 468 | ||
469 | static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev) | 469 | static void quirk_usb_handoff_ohci(struct pci_dev *pdev) |
470 | { | 470 | { |
471 | void __iomem *base; | 471 | void __iomem *base; |
472 | u32 control; | 472 | u32 control; |
@@ -533,7 +533,7 @@ static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev) | |||
533 | iounmap(base); | 533 | iounmap(base); |
534 | } | 534 | } |
535 | 535 | ||
536 | static const struct dmi_system_id __devinitconst ehci_dmi_nohandoff_table[] = { | 536 | static const struct dmi_system_id ehci_dmi_nohandoff_table[] = { |
537 | { | 537 | { |
538 | /* Pegatron Lucid (ExoPC) */ | 538 | /* Pegatron Lucid (ExoPC) */ |
539 | .matches = { | 539 | .matches = { |
@@ -558,7 +558,7 @@ static const struct dmi_system_id __devinitconst ehci_dmi_nohandoff_table[] = { | |||
558 | { } | 558 | { } |
559 | }; | 559 | }; |
560 | 560 | ||
561 | static void __devinit ehci_bios_handoff(struct pci_dev *pdev, | 561 | static void ehci_bios_handoff(struct pci_dev *pdev, |
562 | void __iomem *op_reg_base, | 562 | void __iomem *op_reg_base, |
563 | u32 cap, u8 offset) | 563 | u32 cap, u8 offset) |
564 | { | 564 | { |
@@ -626,7 +626,7 @@ static void __devinit ehci_bios_handoff(struct pci_dev *pdev, | |||
626 | writel(0, op_reg_base + EHCI_CONFIGFLAG); | 626 | writel(0, op_reg_base + EHCI_CONFIGFLAG); |
627 | } | 627 | } |
628 | 628 | ||
629 | static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev) | 629 | static void quirk_usb_disable_ehci(struct pci_dev *pdev) |
630 | { | 630 | { |
631 | void __iomem *base, *op_reg_base; | 631 | void __iomem *base, *op_reg_base; |
632 | u32 hcc_params, cap, val; | 632 | u32 hcc_params, cap, val; |
@@ -723,6 +723,7 @@ static int handshake(void __iomem *ptr, u32 mask, u32 done, | |||
723 | } | 723 | } |
724 | 724 | ||
725 | #define PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI 0x8C31 | 725 | #define PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI 0x8C31 |
726 | #define PCI_DEVICE_ID_INTEL_LYNX_POINT_LP_XHCI 0x9C31 | ||
726 | 727 | ||
727 | bool usb_is_intel_ppt_switchable_xhci(struct pci_dev *pdev) | 728 | bool usb_is_intel_ppt_switchable_xhci(struct pci_dev *pdev) |
728 | { | 729 | { |
@@ -736,7 +737,8 @@ bool usb_is_intel_lpt_switchable_xhci(struct pci_dev *pdev) | |||
736 | { | 737 | { |
737 | return pdev->class == PCI_CLASS_SERIAL_USB_XHCI && | 738 | return pdev->class == PCI_CLASS_SERIAL_USB_XHCI && |
738 | pdev->vendor == PCI_VENDOR_ID_INTEL && | 739 | pdev->vendor == PCI_VENDOR_ID_INTEL && |
739 | pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI; | 740 | (pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI || |
741 | pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_LP_XHCI); | ||
740 | } | 742 | } |
741 | 743 | ||
742 | bool usb_is_intel_switchable_xhci(struct pci_dev *pdev) | 744 | bool usb_is_intel_switchable_xhci(struct pci_dev *pdev) |
@@ -841,7 +843,7 @@ EXPORT_SYMBOL_GPL(usb_disable_xhci_ports); | |||
841 | * and then waits 5 seconds for the BIOS to hand over control. | 843 | * and then waits 5 seconds for the BIOS to hand over control. |
842 | * If we timeout, assume the BIOS is broken and take control anyway. | 844 | * If we timeout, assume the BIOS is broken and take control anyway. |
843 | */ | 845 | */ |
844 | static void __devinit quirk_usb_handoff_xhci(struct pci_dev *pdev) | 846 | static void quirk_usb_handoff_xhci(struct pci_dev *pdev) |
845 | { | 847 | { |
846 | void __iomem *base; | 848 | void __iomem *base; |
847 | int ext_cap_offset; | 849 | int ext_cap_offset; |
@@ -941,7 +943,7 @@ hc_init: | |||
941 | iounmap(base); | 943 | iounmap(base); |
942 | } | 944 | } |
943 | 945 | ||
944 | static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev) | 946 | static void quirk_usb_early_handoff(struct pci_dev *pdev) |
945 | { | 947 | { |
946 | /* Skip Netlogic mips SoC's internal PCI USB controller. | 948 | /* Skip Netlogic mips SoC's internal PCI USB controller. |
947 | * This device does not need/support EHCI/OHCI handoff | 949 | * This device does not need/support EHCI/OHCI handoff |