On Thu, May 24, 2012 at 11:34:37PM +0200, Hauke Mehrtens wrote: > Hi Seth, > > rmmod and insmod of b43 does not help but doing this with b43 and bcma > works is that correct? > Have you tried to add this code from bcma_host_pci_probe() to resume: > > /* 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); > > Could you also try to run bcma_sprom_get() after resume. Okay, this one fixes it. The part that's needed seems to be: if (bus->chipinfo.id == 0x4331) bcma_chipco_bcm4331_ext_pa_lines_ctl(&bus->drv_cc, true); I could have sworn I tried adding this to resume before, but apparently I didn't. Hmm. It turns out that BCMA_CC_CHIPCTL is completely reset to 0 when on S3 without AC power, meaning all other fields in the register get cleared as well. On this MBP that's affecting BCMA_CHIPCTL_4331_BT_COEXIST. So we could save the value at suspend and restore it during resume, but maybe the initialization of this register also needs to be improved. Thoughts? Thanks, Seth -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html