aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Goecke <goecke@upb.de>2006-04-20 05:43:17 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-04-20 10:54:04 -0400
commit7daa0c4f51897d5d956a62a2bac438e3b58d85dc (patch)
treee11615c35d204c48552e68c5431351277b8ee024
parent68876baf5e713ef711b6e19a279385e14c9921e3 (diff)
[PATCH] MSI-K8T-Neo2-Fir OnboardSound and additional Soundcard
On the MSI-K8T-NEO2 FIR ( Athlon-64, Socket 939 with VIA-K8T800- Chipset and onboard Sound,... ) the BIOS lets you choose "DISABLED" or "AUTO" for the On-Board Sound Device. If you add another PCI-Sound-Card the BIOS disables the on-board device. So far I have a Quirk, that does set the correspondent BIT in the PCI-registers to enable the soundcard. But how to ensure that the code is executed ONLY on excactly this kind of boards (not any other with similar Chipset)? Cc: Jaroslav Kysela <perex@suse.cz> Acked-by: Takashi Iwai <tiwai@suse.de> Cc: Lee Revell <rlrevell@joe-job.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/pci/quirks.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 827550d25c9e..c42ae2cf8d64 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -865,6 +865,35 @@ static void __init quirk_eisa_bridge(struct pci_dev *dev)
865DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82375, quirk_eisa_bridge ); 865DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82375, quirk_eisa_bridge );
866 866
867/* 867/*
868 * On the MSI-K8T-Neo2Fir Board, the internal Soundcard is disabled
869 * when a PCI-Soundcard is added. The BIOS only gives Options
870 * "Disabled" and "AUTO". This Quirk Sets the corresponding
871 * Register-Value to enable the Soundcard.
872 */
873static void __init k8t_sound_hostbridge(struct pci_dev *dev)
874{
875 unsigned char val;
876
877 printk(KERN_INFO "PCI: Quirk-MSI-K8T Soundcard On\n");
878 pci_read_config_byte(dev, 0x50, &val);
879 if (val == 0x88 || val == 0xc8) {
880 pci_write_config_byte(dev, 0x50, val & (~0x40));
881
882 /* Verify the Change for Status output */
883 pci_read_config_byte(dev, 0x50, &val);
884 if (val & 0x40)
885 printk(KERN_INFO "PCI: MSI-K8T soundcard still off\n");
886 else
887 printk(KERN_INFO "PCI: MSI-K8T soundcard on\n");
888 } else {
889 printk(KERN_INFO "PCI: Unexpected Value in PCI-Register: "
890 "no Change!\n");
891 }
892
893}
894DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, k8t_sound_hostbridge);
895
896/*
868 * On ASUS P4B boards, the SMBus PCI Device within the ICH2/4 southbridge 897 * On ASUS P4B boards, the SMBus PCI Device within the ICH2/4 southbridge
869 * is not activated. The myth is that Asus said that they do not want the 898 * is not activated. The myth is that Asus said that they do not want the
870 * users to be irritated by just another PCI Device in the Win98 device 899 * users to be irritated by just another PCI Device in the Win98 device