PCI: re-enable onboard sound on "MSI K8T Neo2-FIR"
On the "MSI K8T Neo2-FIR" board the BIOS disables the onboard soundcard, if a second PCI soundcard is present. This patch sets the korrect register bit to enable the onboard sound. Removed old code in /drivers/pci/quirks.c that only checks for the PCI-ID and fires on any Board with VIA 8237. New code in /arch/i386/pci/fixup.c checks the DMI-tables and only runs on the specific board. Signed-off-by: Johannes Goecke <goecke@upb.de> Acked-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
651472fbff
commit
346ca04d05
@@ -353,6 +353,53 @@ static void __devinit pci_fixup_video(struct pci_dev *pdev)
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video);
|
||||
|
||||
|
||||
static struct dmi_system_id __devinitdata msi_k8t_dmi_table[] = {
|
||||
{
|
||||
.ident = "MSI-K8T-Neo2Fir",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "MSI"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "MS-6702E"),
|
||||
},
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
/*
|
||||
* The AMD-Athlon64 board MSI "K8T Neo2-FIR" disables the onboard sound
|
||||
* card if a PCI-soundcard is added.
|
||||
*
|
||||
* The BIOS only gives options "DISABLED" and "AUTO". This code sets
|
||||
* the corresponding register-value to enable the soundcard.
|
||||
*
|
||||
* The soundcard is only enabled, if the mainborad is identified
|
||||
* via DMI-tables and the soundcard is detected to be off.
|
||||
*/
|
||||
static void __devinit pci_fixup_msi_k8t_onboard_sound(struct pci_dev *dev)
|
||||
{
|
||||
unsigned char val;
|
||||
if (!dmi_check_system(msi_k8t_dmi_table))
|
||||
return; /* only applies to MSI K8T Neo2-FIR */
|
||||
|
||||
pci_read_config_byte(dev, 0x50, &val);
|
||||
if (val & 0x40) {
|
||||
pci_write_config_byte(dev, 0x50, val & (~0x40));
|
||||
|
||||
/* verify the change for status output */
|
||||
pci_read_config_byte(dev, 0x50, &val);
|
||||
if (val & 0x40)
|
||||
printk(KERN_INFO "PCI: Detected MSI K8T Neo2-FIR, "
|
||||
"can't enable onboard soundcard!\n");
|
||||
else
|
||||
printk(KERN_INFO "PCI: Detected MSI K8T Neo2-FIR, "
|
||||
"enabled onboard soundcard.\n");
|
||||
}
|
||||
}
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237,
|
||||
pci_fixup_msi_k8t_onboard_sound);
|
||||
DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237,
|
||||
pci_fixup_msi_k8t_onboard_sound);
|
||||
|
||||
/*
|
||||
* Some Toshiba laptops need extra code to enable their TI TSB43AB22/A.
|
||||
*
|
||||
|
Reference in New Issue
Block a user