diff options
author | Tim Yamin <tim.yamin@zonbu.com> | 2008-03-30 15:58:59 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-04-21 00:47:07 -0400 |
commit | bc043274560f398225dad7f0e24c6a7610d3c08a (patch) | |
tree | f783cd2e99c47a089db220273b3045eeadf7730c /drivers/pci | |
parent | 94e6108803469a37ee1e3c92dafdd1d59298602f (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>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/quirks.c | 13 |
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 | } |