diff options
author | Peter Oruba <peter.oruba@amd.com> | 2007-05-15 07:59:13 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-07-11 19:02:07 -0400 |
commit | d556ad4bbe75faf17b239e151a9f003322b2e851 (patch) | |
tree | 794e4f21a9c6e76328feccf313e4d268d3ec5146 /drivers/pci/quirks.c | |
parent | e4585da22ad04a055cbb5c863a37aa8cc02eac89 (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.c | 16 |
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_ | |||
627 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_amd_8131_ioapic); | 627 | DECLARE_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 | */ | ||
634 | static 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 | } | ||
645 | DECLARE_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 |