diff options
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r-- | drivers/pci/quirks.c | 43 |
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 | */ |
473 | static void __devinit quirk_vt82c586_acpi(struct pci_dev *dev) | 473 | static 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, ®ion); | 478 | pci_read_config_dword(dev, 0x48, ®ion); |
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 | */ |
630 | static void __init quirk_amd_8131_mmrbc(struct pci_dev *dev) | 628 | static 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 | } |
931 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82375, quirk_eisa_bridge ); | 926 | DECLARE_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 | */ | ||
945 | static 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 | } | ||
963 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, k8t_sound_hostbridge); | ||
964 | DECLARE_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 |