aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/quirks.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r--drivers/pci/quirks.c43
1 files changed, 3 insertions, 40 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 50f2dd9e1bb2..59d4da2734c1 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -472,11 +472,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH8_3, quirk_
472 */ 472 */
473static void __devinit quirk_vt82c586_acpi(struct pci_dev *dev) 473static void __devinit quirk_vt82c586_acpi(struct pci_dev *dev)
474{ 474{
475 u8 rev;
476 u32 region; 475 u32 region;
477 476
478 pci_read_config_byte(dev, PCI_CLASS_REVISION, &rev); 477 if (dev->revision & 0x10) {
479 if (rev & 0x10) {
480 pci_read_config_dword(dev, 0x48, &region); 478 pci_read_config_dword(dev, 0x48, &region);
481 region &= PCI_BASE_ADDRESS_IO_MASK; 479 region &= PCI_BASE_ADDRESS_IO_MASK;
482 quirk_io_region(dev, region, 256, PCI_BRIDGE_RESOURCES, "vt82c586 ACPI"); 480 quirk_io_region(dev, region, 256, PCI_BRIDGE_RESOURCES, "vt82c586 ACPI");
@@ -629,12 +627,9 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk
629 */ 627 */
630static void __init quirk_amd_8131_mmrbc(struct pci_dev *dev) 628static void __init quirk_amd_8131_mmrbc(struct pci_dev *dev)
631{ 629{
632 unsigned char revid; 630 if (dev->subordinate && dev->revision <= 0x12) {
633
634 pci_read_config_byte(dev, PCI_REVISION_ID, &revid);
635 if (dev->subordinate && revid <= 0x12) {
636 printk(KERN_INFO "AMD8131 rev %x detected, disabling PCI-X " 631 printk(KERN_INFO "AMD8131 rev %x detected, disabling PCI-X "
637 "MMRBC\n", revid); 632 "MMRBC\n", dev->revision);
638 dev->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MMRBC; 633 dev->subordinate->bus_flags |= PCI_BUS_FLAGS_NO_MMRBC;
639 } 634 }
640} 635}
@@ -930,38 +925,6 @@ static void __init quirk_eisa_bridge(struct pci_dev *dev)
930} 925}
931DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82375, quirk_eisa_bridge ); 926DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82375, quirk_eisa_bridge );
932 927
933/*
934 * On the MSI-K8T-Neo2Fir Board, the internal Soundcard is disabled
935 * when a PCI-Soundcard is added. The BIOS only gives Options
936 * "Disabled" and "AUTO". This Quirk Sets the corresponding
937 * Register-Value to enable the Soundcard.
938 *
939 * FIXME: Presently this quirk will run on anything that has an 8237
940 * which isn't correct, we need to check DMI tables or something in
941 * order to make sure it only runs on the MSI-K8T-Neo2Fir. Because it
942 * runs everywhere at present we suppress the printk output in most
943 * irrelevant cases.
944 */
945static void k8t_sound_hostbridge(struct pci_dev *dev)
946{
947 unsigned char val;
948
949 pci_read_config_byte(dev, 0x50, &val);
950 if (val == 0xc8) {
951 /* Assume it's probably a MSI-K8T-Neo2Fir */
952 printk(KERN_INFO "PCI: MSI-K8T-Neo2Fir, attempting to turn soundcard ON\n");
953 pci_write_config_byte(dev, 0x50, val & (~0x40));
954
955 /* Verify the Change for Status output */
956 pci_read_config_byte(dev, 0x50, &val);
957 if (val & 0x40)
958 printk(KERN_INFO "PCI: MSI-K8T-Neo2Fir, soundcard still off\n");
959 else
960 printk(KERN_INFO "PCI: MSI-K8T-Neo2Fir, soundcard on\n");
961 }
962}
963DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, k8t_sound_hostbridge);
964DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, k8t_sound_hostbridge);
965 928
966/* 929/*
967 * On ASUS P4B boards, the SMBus PCI Device within the ICH2/4 southbridge 930 * On ASUS P4B boards, the SMBus PCI Device within the ICH2/4 southbridge