diff options
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/quirks.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 6099facecd79..efa6534a6593 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -670,6 +670,25 @@ static void __devinit quirk_vt8235_acpi(struct pci_dev *dev) | |||
670 | } | 670 | } |
671 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235_acpi); | 671 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235_acpi); |
672 | 672 | ||
673 | /* | ||
674 | * TI XIO2000a PCIe-PCI Bridge erroneously reports it supports fast back-to-back: | ||
675 | * Disable fast back-to-back on the secondary bus segment | ||
676 | */ | ||
677 | static void __devinit quirk_xio2000a(struct pci_dev *dev) | ||
678 | { | ||
679 | struct pci_dev *pdev; | ||
680 | u16 command; | ||
681 | |||
682 | dev_warn(&dev->dev, "TI XIO2000a quirk detected; " | ||
683 | "secondary bus fast back-to-back transfers disabled\n"); | ||
684 | list_for_each_entry(pdev, &dev->subordinate->devices, bus_list) { | ||
685 | pci_read_config_word(pdev, PCI_COMMAND, &command); | ||
686 | if (command & PCI_COMMAND_FAST_BACK) | ||
687 | pci_write_config_word(pdev, PCI_COMMAND, command & ~PCI_COMMAND_FAST_BACK); | ||
688 | } | ||
689 | } | ||
690 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_XIO2000A, | ||
691 | quirk_xio2000a); | ||
673 | 692 | ||
674 | #ifdef CONFIG_X86_IO_APIC | 693 | #ifdef CONFIG_X86_IO_APIC |
675 | 694 | ||