From d4fc864a4797cb65e02641de93ac38de6e89ed2b Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Tue, 6 Oct 2009 09:19:45 -0500 Subject: [PATCH] --- yaml --- r: 167383 b: refs/heads/master c: 1f56f4a2b4d12c1c348cab23024024396ec7cddc h: refs/heads/master i: 167381: 4048dbf65c4f57e1248df4ff9fdc6cdcb42a8958 167379: 1aeb18292cd3d8f9f1b7ff555a7ac3473dc692ba 167375: f7ae91a61bb3a183a2bcf2766fd1518e328c212f v: v3 --- [refs] | 2 +- trunk/drivers/pci/quirks.c | 19 +++++++++++++++++++ trunk/include/linux/pci_ids.h | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 4363dbdbc65f..369700667dd5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e13cdbd71fe12c4e191b737c4a3dbfdb4b2de03b +refs/heads/master: 1f56f4a2b4d12c1c348cab23024024396ec7cddc diff --git a/trunk/drivers/pci/quirks.c b/trunk/drivers/pci/quirks.c index 6099facecd79..efa6534a6593 100644 --- a/trunk/drivers/pci/quirks.c +++ b/trunk/drivers/pci/quirks.c @@ -670,6 +670,25 @@ static void __devinit quirk_vt8235_acpi(struct pci_dev *dev) } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235_acpi); +/* + * TI XIO2000a PCIe-PCI Bridge erroneously reports it supports fast back-to-back: + * Disable fast back-to-back on the secondary bus segment + */ +static void __devinit quirk_xio2000a(struct pci_dev *dev) +{ + struct pci_dev *pdev; + u16 command; + + dev_warn(&dev->dev, "TI XIO2000a quirk detected; " + "secondary bus fast back-to-back transfers disabled\n"); + list_for_each_entry(pdev, &dev->subordinate->devices, bus_list) { + pci_read_config_word(pdev, PCI_COMMAND, &command); + if (command & PCI_COMMAND_FAST_BACK) + pci_write_config_word(pdev, PCI_COMMAND, command & ~PCI_COMMAND_FAST_BACK); + } +} +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_XIO2000A, + quirk_xio2000a); #ifdef CONFIG_X86_IO_APIC diff --git a/trunk/include/linux/pci_ids.h b/trunk/include/linux/pci_ids.h index da1fda8623e0..f490e7a7307a 100644 --- a/trunk/include/linux/pci_ids.h +++ b/trunk/include/linux/pci_ids.h @@ -776,6 +776,7 @@ #define PCI_DEVICE_ID_TI_X515 0x8036 #define PCI_DEVICE_ID_TI_XX12 0x8039 #define PCI_DEVICE_ID_TI_XX12_FM 0x803b +#define PCI_DEVICE_ID_TI_XIO2000A 0x8231 #define PCI_DEVICE_ID_TI_1130 0xac12 #define PCI_DEVICE_ID_TI_1031 0xac13 #define PCI_DEVICE_ID_TI_1131 0xac15