]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/ssb/pcihost_wrapper.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / ssb / pcihost_wrapper.c
index 6536a041d90dd671966bf478a474aefe2ec926ef..f6c8c81a00252d50de120e949fd4084cd4e1389e 100644 (file)
@@ -59,6 +59,7 @@ static int ssb_pcihost_probe(struct pci_dev *dev,
        struct ssb_bus *ssb;
        int err = -ENOMEM;
        const char *name;
+       u32 val;
 
        ssb = kzalloc(sizeof(*ssb), GFP_KERNEL);
        if (!ssb)
@@ -74,6 +75,12 @@ static int ssb_pcihost_probe(struct pci_dev *dev,
                goto err_pci_disable;
        pci_set_master(dev);
 
+       /* Disable the RETRY_TIMEOUT register (0x41) to keep
+        * PCI Tx retries from interfering with C3 CPU state */
+       pci_read_config_dword(dev, 0x40, &val);
+       if ((val & 0x0000ff00) != 0)
+               pci_write_config_dword(dev, 0x40, val & 0xffff00ff);
+
        err = ssb_bus_pcibus_register(ssb, dev);
        if (err)
                goto err_pci_release_regions;