diff options
author | Johannes Goecke <goecke@upb.de> | 2006-04-20 05:43:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-04-20 10:54:04 -0400 |
commit | 7daa0c4f51897d5d956a62a2bac438e3b58d85dc (patch) | |
tree | e11615c35d204c48552e68c5431351277b8ee024 /drivers/pci/quirks.c | |
parent | 68876baf5e713ef711b6e19a279385e14c9921e3 (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>
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r-- | drivers/pci/quirks.c | 29 |
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) | |||
865 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82375, quirk_eisa_bridge ); | 865 | DECLARE_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 | */ | ||
873 | static 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 | } | ||
894 | DECLARE_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 |