diff options
author | Bauke Jan Douma <bjdouma@xs4all.nl> | 2006-02-28 15:44:36 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-03-23 17:35:13 -0500 |
commit | e5548e960f38557825e50806b52cb24c9e730aa2 (patch) | |
tree | f67ae1e04677f931e965a282fbcdf44349201e48 /drivers/pci/quirks.c | |
parent | 3c0a654e390d00fef9d8faed758f5e1e8078adb5 (diff) |
[PATCH] PCI: quirk for asus a8v and a8v delux motherboards
On ASUS A8V and A8V Deluxe boards, the onboard AC97 audio controller
and MC97 modem controller are deactivated when a second PCI soundcard
is present. This patch enables them.
Signed-off-by: Bauke Jan Douma <bjdouma@xs4all.nl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r-- | drivers/pci/quirks.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index af4bc8e2cf83..d71c31df7fdf 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -1074,6 +1074,37 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_651, quirk_sis_96x_ | |||
1074 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_735, quirk_sis_96x_compatible ); | 1074 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_735, quirk_sis_96x_compatible ); |
1075 | 1075 | ||
1076 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, quirk_sis_503 ); | 1076 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, quirk_sis_503 ); |
1077 | /* | ||
1078 | * On ASUS A8V and A8V Deluxe boards, the onboard AC97 audio controller | ||
1079 | * and MC97 modem controller are disabled when a second PCI soundcard is | ||
1080 | * present. This patch, tweaking the VT8237 ISA bridge, enables them. | ||
1081 | * -- bjd | ||
1082 | */ | ||
1083 | static void __init asus_hides_ac97_lpc(struct pci_dev *dev) | ||
1084 | { | ||
1085 | u8 val; | ||
1086 | int asus_hides_ac97 = 0; | ||
1087 | |||
1088 | if (likely(dev->subsystem_vendor == PCI_VENDOR_ID_ASUSTEK)) { | ||
1089 | if (dev->device == PCI_DEVICE_ID_VIA_8237) | ||
1090 | asus_hides_ac97 = 1; | ||
1091 | } | ||
1092 | |||
1093 | if (!asus_hides_ac97) | ||
1094 | return; | ||
1095 | |||
1096 | pci_read_config_byte(dev, 0x50, &val); | ||
1097 | if (val & 0xc0) { | ||
1098 | pci_write_config_byte(dev, 0x50, val & (~0xc0)); | ||
1099 | pci_read_config_byte(dev, 0x50, &val); | ||
1100 | if (val & 0xc0) | ||
1101 | printk(KERN_INFO "PCI: onboard AC97/MC97 devices continue to play 'hide and seek'! 0x%x\n", val); | ||
1102 | else | ||
1103 | printk(KERN_INFO "PCI: enabled onboard AC97/MC97 devices\n"); | ||
1104 | } | ||
1105 | } | ||
1106 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, asus_hides_ac97_lpc ); | ||
1107 | |||
1077 | 1108 | ||
1078 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_961, quirk_sis_96x_smbus ); | 1109 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_961, quirk_sis_96x_smbus ); |
1079 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_962, quirk_sis_96x_smbus ); | 1110 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_962, quirk_sis_96x_smbus ); |