===================================================================
@@ -4292,6 +4292,15 @@ static int b43_wireless_core_init(struct
setup_struct_wldev_for_init(dev);
phy->ops->prepare_structs(dev);
+ /* We disable the RETRY_TIMEOUT register (0x41) to keep
+ * PCI Tx retries from interfering with C3 CPU state
+ */
+ if (bus->bustype == SSB_BUSTYPE_PCI) {
+ pci_read_config_dword(bus->host_pci, 0x40, &tmp);
+ pci_write_config_dword(bus->host_pci, 0x40, tmp &
+ ~(0x0000ff00));
+ }
+
/* Enable IRQ routing to this device. */
ssb_pcicore_dev_irqvecs_enable(&bus->pcicore, dev->dev);
===================================================================
@@ -35,6 +35,7 @@ static int ssb_pcihost_resume(struct pci
{
struct ssb_bus *ssb = pci_get_drvdata(dev);
int err;
+ u32 val;
pci_set_power_state(dev, 0);
err = pci_enable_device(dev);