[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[FIX] 2.6.16.17 + mobo w. VIA chipset = sound probs.



Hi,

I don't know what the Debian maintainers of the latest stable kernel will do, but if you have a mobo with a VIA cipset *and* use the 2.6.16.17 kernel *then* you will have sound problems.

Apply the 2 patches attached in this order:
1)  PCI-VIA-quirk-fixup-additional-PCI-IDs.patch
2)  PCI-quirk-VIA-IRQ-fixup-should-only-run-for-VIA-southbridges.patch

and the sound problems will go away.

H
diff -U 3 -H -d -r -N -- linux-2.6.16.17/drivers/pci/quirks.c linux-2.6.16.17-oci/drivers/pci/quirks.c
--- linux-2.6.16.17/drivers/pci/quirks.c	2006-06-14 10:59:16.000000000 +0800
+++ linux-2.6.16.17-oci/drivers/pci/quirks.c	2006-06-14 11:07:12.000000000 +0800
@@ -631,9 +631,6 @@
  * non-x86 architectures (yes Via exists on PPC among other places),
  * we must mask the PCI_INTERRUPT_LINE value versus 0xf to get
  * interrupts delivered properly.
- *
- * Some of the on-chip devices are actually '586 devices' so they are
- * listed here.
  */
 static void quirk_via_irq(struct pci_dev *dev)
 {
@@ -648,10 +645,6 @@
 		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
 	}
 }
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_irq);
 DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq);
 DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq);
 DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq);
diff -U 3 -H -d -r -N -- linux-2.6.16.17/drivers/pci/quirks.c linux-2.6.16.17-oci/drivers/pci/quirks.c
--- linux-2.6.16.17/drivers/pci/quirks.c	2006-06-14 12:48:00.000000000 +0800
+++ linux-2.6.16.17-oci/drivers/pci/quirks.c	2006-06-14 12:30:39.000000000 +0800
@@ -639,15 +639,13 @@
 	new_irq = dev->irq & 0xf;
 	pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
 	if (new_irq != irq) {
-		printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n",
+		printk(KERN_INFO "PCI: Via IRQ fixup for %s, from %d to %d\n",
 			pci_name(dev), irq, new_irq);
 		udelay(15);	/* unknown if delay really needed */
 		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
 	}
 }
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq);
-DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq);
+DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_irq);
 
 /*
  * VIA VT82C598 has its device ID settable and many BIOSes

Reply to: