patch-2.1.132 linux/drivers/pci/quirks.c

Next file: linux/drivers/pnp/parport_probe.c
Previous file: linux/drivers/pci/pcisyms.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.131/linux/drivers/pci/quirks.c linux/drivers/pci/quirks.c
@@ -125,6 +125,25 @@
 	}
 }
 
+/*  The VIA VP2/VP3/MVP3 seem to have some 'features'. There may be a workaround
+    but VIA don't answer queries. If you happen to have good contacts at VIA
+    ask them for me please -- Alan 
+    
+    This appears to be BIOS not version dependant. So presumably there is a 
+    chipset level fix */
+    
+
+int isa_dma_bridge_buggy = 0;		/* Exported */
+    
+__initfunc(static void quirk_isa_dma_hangs(struct pci_dev *dev, int arg))
+{
+	if(!isa_dma_bridge_buggy)
+	{
+		isa_dma_bridge_buggy=1;
+		printk(KERN_INFO "Activating ISA DMA hang workarounds.\n");
+	}
+}
+
 
 typedef void (*quirk_handler)(struct pci_dev *, int);
 
@@ -141,7 +160,8 @@
 #ifdef CONFIG_PCI_OPTIMIZE
 	{ quirk_bridge,		"Bridge optimization" },
 #endif
-	{ quirk_passive_release, "Passive release enable" },
+	{ quirk_passive_release,"Passive release enable" },
+	{ quirk_isa_dma_hangs,	"Work around ISA DMA hangs" },
 };
 
 
@@ -176,6 +196,12 @@
 	{ PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_82430,	quirk_bridge,	0x00 },
 #endif
 	{ PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_82441,	quirk_passive_release,	0x00 },
+	/*
+	 * Its not totally clear which chipsets are the problematic ones
+	 * This is the 82C586 variants. At the moment the 596 is an unknown
+	 * quantity 
+	 */
+	{ PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C586_0,	quirk_isa_dma_hangs,	0x00 },
 };
 
 __initfunc(void pci_quirks_init(void))

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov