diff options
Diffstat (limited to 'drivers/ssb/pcihost_wrapper.c')
-rw-r--r-- | drivers/ssb/pcihost_wrapper.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/ssb/pcihost_wrapper.c b/drivers/ssb/pcihost_wrapper.c index 6536a041d90d..f6c8c81a0025 100644 --- a/drivers/ssb/pcihost_wrapper.c +++ b/drivers/ssb/pcihost_wrapper.c | |||
@@ -59,6 +59,7 @@ static int ssb_pcihost_probe(struct pci_dev *dev, | |||
59 | struct ssb_bus *ssb; | 59 | struct ssb_bus *ssb; |
60 | int err = -ENOMEM; | 60 | int err = -ENOMEM; |
61 | const char *name; | 61 | const char *name; |
62 | u32 val; | ||
62 | 63 | ||
63 | ssb = kzalloc(sizeof(*ssb), GFP_KERNEL); | 64 | ssb = kzalloc(sizeof(*ssb), GFP_KERNEL); |
64 | if (!ssb) | 65 | if (!ssb) |
@@ -74,6 +75,12 @@ static int ssb_pcihost_probe(struct pci_dev *dev, | |||
74 | goto err_pci_disable; | 75 | goto err_pci_disable; |
75 | pci_set_master(dev); | 76 | pci_set_master(dev); |
76 | 77 | ||
78 | /* Disable the RETRY_TIMEOUT register (0x41) to keep | ||
79 | * PCI Tx retries from interfering with C3 CPU state */ | ||
80 | pci_read_config_dword(dev, 0x40, &val); | ||
81 | if ((val & 0x0000ff00) != 0) | ||
82 | pci_write_config_dword(dev, 0x40, val & 0xffff00ff); | ||
83 | |||
77 | err = ssb_bus_pcibus_register(ssb, dev); | 84 | err = ssb_bus_pcibus_register(ssb, dev); |
78 | if (err) | 85 | if (err) |
79 | goto err_pci_release_regions; | 86 | goto err_pci_release_regions; |