[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>

authored by

Johannes Goecke and committed by
Linus Torvalds
7daa0c4f 68876baf

+29
+29
drivers/pci/quirks.c
··· 865 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 897 * On ASUS P4B boards, the SMBus PCI Device within the ICH2/4 southbridge 869 898 * is not activated. The myth is that Asus said that they do not want the 870 899 * users to be irritated by just another PCI Device in the Win98 device