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 via email to