aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/quirks.c
diff options
context:
space:
mode:
authorBauke Jan Douma <bjdouma@xs4all.nl>2006-02-28 15:44:36 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2006-03-23 17:35:13 -0500
commite5548e960f38557825e50806b52cb24c9e730aa2 (patch)
treef67ae1e04677f931e965a282fbcdf44349201e48 /drivers/pci/quirks.c
parent3c0a654e390d00fef9d8faed758f5e1e8078adb5 (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.c31
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_
1074DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_735, quirk_sis_96x_compatible ); 1074DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_735, quirk_sis_96x_compatible );
1075 1075
1076DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, quirk_sis_503 ); 1076DECLARE_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 */
1083static 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}
1106DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, asus_hides_ac97_lpc );
1107
1077 1108
1078DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_961, quirk_sis_96x_smbus ); 1109DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_961, quirk_sis_96x_smbus );
1079DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_962, quirk_sis_96x_smbus ); 1110DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_962, quirk_sis_96x_smbus );