aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/pci-quirks.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/pci-quirks.c')
-rw-r--r--drivers/usb/host/pci-quirks.c20
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
446static void __devinit quirk_usb_handoff_uhci(struct pci_dev *pdev) 446static 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
464static int __devinit mmio_resource_enabled(struct pci_dev *pdev, int idx) 464static 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
469static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev) 469static 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
536static const struct dmi_system_id __devinitconst ehci_dmi_nohandoff_table[] = { 536static 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
561static void __devinit ehci_bios_handoff(struct pci_dev *pdev, 561static 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
629static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev) 629static 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
727bool usb_is_intel_ppt_switchable_xhci(struct pci_dev *pdev) 728bool 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
742bool usb_is_intel_switchable_xhci(struct pci_dev *pdev) 744bool 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 */
844static void __devinit quirk_usb_handoff_xhci(struct pci_dev *pdev) 846static 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
944static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev) 946static 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