@krystianp @Zn7mkUKzN1r8aCIV I think I've found why the wlan is not taking the cpu out of deep sleep. At least for the bcmdhd scenario (I didn't look to see how bcm4329 was hooked).
On bcmdhd there are two modes of operation. With so-called Out-of-Band Interrupts and without. With it, there's a dedicated pin for irq. This pin could be set to wake the cpu as usual. The thing is that in current setup, we're using the driver without OOB interrupts, i.e. notifications in form of interrupts comes from SDIO events. The bcm chip is programmed to drive it's pin as a interrupt selectively, so it probably just sets idle when OOB mode is not in use, therefore we couldn't simply cheat and enable_irq_wake() (or something) on the pin, as it would either do nothing or permanently inhibit deep sleep.
I enabled the OOB interrupts and although the system boots up to the lock screen, it reboots in the sequence, probably from a crash - and I lack the machinery (jtag?) to capture the kernel dump at that point.
With the bcmdhd, the steps would be to fix whatever is causing this, and then see if there's need for enable_irq_wake() or something.
On bcmdhd there are two modes of operation. With so-called Out-of-Band Interrupts and without. With it, there's a dedicated pin for irq. This pin could be set to wake the cpu as usual. The thing is that in current setup, we're using the driver without OOB interrupts, i.e. notifications in form of interrupts comes from SDIO events. The bcm chip is programmed to drive it's pin as a interrupt selectively, so it probably just sets idle when OOB mode is not in use, therefore we couldn't simply cheat and enable_irq_wake() (or something) on the pin, as it would either do nothing or permanently inhibit deep sleep.
I enabled the OOB interrupts and although the system boots up to the lock screen, it reboots in the sequence, probably from a crash - and I lack the machinery (jtag?) to capture the kernel dump at that point.
With the bcmdhd, the steps would be to fix whatever is causing this, and then see if there's need for enable_irq_wake() or something.