wl12xx: prevent scheduling while suspending (WoW enabled)
authorEliad Peller <eliad@wizery.com>
Fri, 13 May 2011 08:57:11 +0000 (11:57 +0300)
committerLuciano Coelho <coelho@ti.com>
Fri, 13 May 2011 11:55:49 +0000 (14:55 +0300)
commitf44e58681aec420b132a54823d8911293a644d4e
tree4c7c26b6fa3e7401036b4c897761b4ca0816f1e9
parent039bdb1494d1d514987ce596a4898494021c7af2
wl12xx: prevent scheduling while suspending (WoW enabled)

When WoW is enabled, the interface will stay up and the chip will
be powered on, so we have to flush/cancel any remaining work, and
prevent the irq handler from scheduling a new work until the system
is resumed.

Add 2 new flags:
* WL1271_FLAG_SUSPENDED - the system is (about to be) suspended.
* WL1271_FLAG_PENDING_WORK - there is a pending irq work which
   should be scheduled when the system is being resumed.

In order to wake-up the system while getting an irq, we initialize
the device as wakeup device, and calling pm_wakeup_event() upon
getting the interrupt (while the system is about to be suspended)

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/wl12xx/main.c
drivers/net/wireless/wl12xx/sdio.c
drivers/net/wireless/wl12xx/wl12xx.h