aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/quirks.c
diff options
context:
space:
mode:
authorPeter Oruba <peter.oruba@amd.com>2007-05-15 07:59:13 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2007-07-11 19:02:07 -0400
commitd556ad4bbe75faf17b239e151a9f003322b2e851 (patch)
tree794e4f21a9c6e76328feccf313e4d268d3ec5146 /drivers/pci/quirks.c
parente4585da22ad04a055cbb5c863a37aa8cc02eac89 (diff)
PCI: add PCI-X/PCI-Express read control interfaces
This patch introduces an interface to read and write PCI-X / PCI-Express maximum read byte count values from PCI config space. There is a second function that returns the maximum _designed_ read byte count, which marks the maximum value for a device, since some drivers try to set MMRBC to the highest allowed value and rely on such a function. Based on patch set by Stephen Hemminger <shemminger@linux-foundation.org> Cc: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Peter Oruba <peter.oruba@amd.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r--drivers/pci/quirks.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 01d8f8a8843c..75bd6a8648f6 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -627,6 +627,22 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_
627DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_amd_8131_ioapic); 627DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_amd_8131_ioapic);
628#endif /* CONFIG_X86_IO_APIC */ 628#endif /* CONFIG_X86_IO_APIC */
629 629
630/*
631 * Some settings of MMRBC can lead to data corruption so block changes.
632 * See AMD 8131 HyperTransport PCI-X Tunnel Revision Guide
633 */
634static void __init quirk_amd_8131_mmrbc(struct pci_dev *dev)
635{
636 unsigned char revid;
637
638 pci_read_config_byte(dev, PCI_REVISION_ID, &revid);
639 if (dev->subordinate && revid <= 0x12) {
640 printk(KERN_INFO "AMD8131 rev %x detected, disabling PCI-X MMRBC\n",
641 revid);
642 dev->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MMRBC;
643 }
644}
645DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_amd_8131_mmrbc);
630 646
631/* 647/*
632 * FIXME: it is questionable that quirk_via_acpi 648 * FIXME: it is questionable that quirk_via_acpi