Commit 6bb04332 authored by Eliad Peller's avatar Eliad Peller Committed by Luciano Coelho

wl12xx_sdio: enable wowlan only if enable_irq_wake() succeeded

Some platforms don't support the wake_irq, so disable wowlan
in this case, and avoid the "Unbalanced IRQ wake disable"
warning on disable_irq_wake().
Signed-off-by: default avatarEliad Peller <eliad@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent 8a7cf3fe
...@@ -272,17 +272,19 @@ static int __devinit wl1271_probe(struct sdio_func *func, ...@@ -272,17 +272,19 @@ static int __devinit wl1271_probe(struct sdio_func *func,
goto out_free; goto out_free;
} }
enable_irq_wake(wl->irq); ret = enable_irq_wake(wl->irq);
if (!ret) {
wl->irq_wake_enabled = true;
device_init_wakeup(wl1271_sdio_wl_to_dev(wl), 1); device_init_wakeup(wl1271_sdio_wl_to_dev(wl), 1);
disable_irq(wl->irq);
/* if sdio can keep power while host is suspended, enable wow */ /* if sdio can keep power while host is suspended, enable wow */
mmcflags = sdio_get_host_pm_caps(func); mmcflags = sdio_get_host_pm_caps(func);
wl1271_debug(DEBUG_SDIO, "sdio PM caps = 0x%x", mmcflags); wl1271_debug(DEBUG_SDIO, "sdio PM caps = 0x%x", mmcflags);
if (mmcflags & MMC_PM_KEEP_POWER) if (mmcflags & MMC_PM_KEEP_POWER)
hw->wiphy->wowlan.flags = WIPHY_WOWLAN_ANY; hw->wiphy->wowlan.flags = WIPHY_WOWLAN_ANY;
}
disable_irq(wl->irq);
ret = wl1271_init_ieee80211(wl); ret = wl1271_init_ieee80211(wl);
if (ret) if (ret)
...@@ -316,8 +318,10 @@ static void __devexit wl1271_remove(struct sdio_func *func) ...@@ -316,8 +318,10 @@ static void __devexit wl1271_remove(struct sdio_func *func)
pm_runtime_get_noresume(&func->dev); pm_runtime_get_noresume(&func->dev);
wl1271_unregister_hw(wl); wl1271_unregister_hw(wl);
if (wl->irq_wake_enabled) {
device_init_wakeup(wl1271_sdio_wl_to_dev(wl), 0); device_init_wakeup(wl1271_sdio_wl_to_dev(wl), 0);
disable_irq_wake(wl->irq); disable_irq_wake(wl->irq);
}
free_irq(wl->irq, wl); free_irq(wl->irq, wl);
wl1271_free_hw(wl); wl1271_free_hw(wl);
} }
......
...@@ -580,6 +580,7 @@ struct wl1271 { ...@@ -580,6 +580,7 @@ struct wl1271 {
* (currently, only "ANY" trigger is supported) * (currently, only "ANY" trigger is supported)
*/ */
bool wow_enabled; bool wow_enabled;
bool irq_wake_enabled;
/* /*
* AP-mode - links indexed by HLID. The global and broadcast links * AP-mode - links indexed by HLID. The global and broadcast links
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment