Please try this patch without the pm_qos patch to see if it helps. The Broadcom
wl driver does this during the setup.
Thanks,
Larry
====================
Index: wireless-testing/drivers/ssb/driver_pcicore.c
===================================================================
--- wireless-testing.orig/drivers/ssb/driver_pcicore.c
+++ wireless-testing/drivers/ssb/driver_pcicore.c
@@ -606,6 +606,12 @@ int ssb_pcicore_dev_irqvecs_enable(struc
tmp |= 0x8;
ssb_pcie_write(pc, 0x4, tmp);
}
+ if (pdev->id.revision == 1) {
+ /* DLLP Link Control register. */
+ tmp = ssb_pcie_read(pc, 0x100);
+ tmp |= 0x40;
+ ssb_pcie_write(pc, 0x100, tmp);
+ }
if (pdev->id.revision == 0) {
const u8 serdes_rx_device = 0x1F;
@@ -615,12 +621,19 @@ int ssb_pcicore_dev_irqvecs_enable(struc
6 /* CDR */, 0x0100);
ssb_pcie_mdio_write(pc, serdes_rx_device,
7 /* CDR BW */, 0x1466);
- } else if (pdev->id.revision == 1) {
- /* DLLP Link Control register. */
- tmp = ssb_pcie_read(pc, 0x100);
- tmp |= 0x40;
- ssb_pcie_write(pc, 0x100, tmp);
+ } else if (pdev->id.revision >= 3 && pdev->id.revision <= 5) {
+ /* DLLP Power Management Threshold */
+ tmp = ssb_pcie_read(pc, 0x128) & 0x00FF;
+ tmp |= 0x7200;
+ ssb_pcie_write(pc, 0x128, tmp);
+ /* TODO: PCIe serdes workaround */
+ /* TODO: PCIe ASPM Clock Request workaround */
+ } else {
+ /* TODO: PCIe Extend L1 Timer - for core rev 7 or 8 */
+ /* TODO: PCIe No PLL Down workaround - for core rev 3
or 4 */
+ writew(readw(bus->mmio + 0x80A) | 0x8000, bus->mmio +
0x80A);
}
+
}
pc->setup_done = 1;
out:
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev