diff mbox

b43: Clear PCI configuration reg. 0x41 to avoid interference with C3 processor state

Message ID 4b2daf91.VB5IdAW/+fSDNPPV%Larry.Finger@lwfinger.net (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Larry Finger Dec. 20, 2009, 5:01 a.m. UTC
None
diff mbox

Patch

Index: wireless-testing/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/main.c
+++ wireless-testing/drivers/net/wireless/b43/main.c
@@ -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);
 
Index: wireless-testing/drivers/ssb/pcihost_wrapper.c
===================================================================
--- wireless-testing.orig/drivers/ssb/pcihost_wrapper.c
+++ wireless-testing/drivers/ssb/pcihost_wrapper.c
@@ -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);