aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Yamin <tim.yamin@zonbu.com>2008-03-30 15:58:59 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2008-04-21 00:47:07 -0400
commitbc043274560f398225dad7f0e24c6a7610d3c08a (patch)
treef783cd2e99c47a089db220273b3045eeadf7730c
parent94e6108803469a37ee1e3c92dafdd1d59298602f (diff)
PCI: Update VIA CX700 quirk
This follows up 53a9bf4267b8b1f958dbeb7c8c1ef21c82229b71. Some newer CX700 BIOSes from our vendor have PCI Bus Parking disabled but PCI Master read caching enabled. This creates problems such as system freezing when both the network controller and the USB controller are active and one of them is pretty busy (e.g. heavy network traffic). This patch separates the checks and both the bus parking and the read caching are disabled independently if either is enabled by the BIOS. Signed-off-by: Tim Yamin <tim.yamin@zonbu.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/pci/quirks.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index c4c769382e02..afd914ebe215 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1648,13 +1648,24 @@ static void __devinit quirk_via_cx700_pci_parking_caching(struct pci_dev *dev)
1648 /* Turn off PCI Bus Parking */ 1648 /* Turn off PCI Bus Parking */
1649 pci_write_config_byte(dev, 0x76, b ^ 0x40); 1649 pci_write_config_byte(dev, 0x76, b ^ 0x40);
1650 1650
1651 dev_info(&dev->dev,
1652 "Disabling VIA CX700 PCI parking\n");
1653 }
1654 }
1655
1656 if (pci_read_config_byte(dev, 0x72, &b) == 0) {
1657 if (b != 0) {
1651 /* Turn off PCI Master read caching */ 1658 /* Turn off PCI Master read caching */
1652 pci_write_config_byte(dev, 0x72, 0x0); 1659 pci_write_config_byte(dev, 0x72, 0x0);
1660
1661 /* Set PCI Master Bus time-out to "1x16 PCLK" */
1653 pci_write_config_byte(dev, 0x75, 0x1); 1662 pci_write_config_byte(dev, 0x75, 0x1);
1663
1664 /* Disable "Read FIFO Timer" */
1654 pci_write_config_byte(dev, 0x77, 0x0); 1665 pci_write_config_byte(dev, 0x77, 0x0);
1655 1666
1656 dev_info(&dev->dev, 1667 dev_info(&dev->dev,
1657 "Disabling VIA CX700 PCI parking/caching\n"); 1668 "Disabling VIA CX700 PCI caching\n");
1658 } 1669 }
1659 } 1670 }
1660} 1671}