wl12xx_sdio: declare support for NL80211_WOW_TRIGGER_ANYTHING trigger
authorEliad Peller <eliad@wizery.com>
Fri, 13 May 2011 08:57:12 +0000 (11:57 +0300)
committerLuciano Coelho <coelho@ti.com>
Fri, 13 May 2011 11:55:49 +0000 (14:55 +0300)
Since wowlan requires the ability to stay awake while the host
is suspended, declare support for NL80211_WOW_TRIGGER_ANYTHING
if the MMC_PM_KEEP_POWER capability is being supported.

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

index 41183db3483605efc88bee2b50dcbdccd9f6b993..92d29a860fc08566b6eab3220eae4392ce46e3e2 100644 (file)
@@ -231,6 +231,7 @@ static int __devinit wl1271_probe(struct sdio_func *func,
        const struct wl12xx_platform_data *wlan_data;
        struct wl1271 *wl;
        unsigned long irqflags;
+       mmc_pm_flag_t mmcflags;
        int ret;
 
        /* We are only able to handle the wlan function */
@@ -282,6 +283,13 @@ static int __devinit wl1271_probe(struct sdio_func *func,
 
        disable_irq(wl->irq);
 
+       /* if sdio can keep power while host is suspended, enable wow */
+       mmcflags = sdio_get_host_pm_caps(func);
+       wl1271_debug(DEBUG_SDIO, "sdio PM caps = 0x%x", mmcflags);
+
+       if (mmcflags & MMC_PM_KEEP_POWER)
+               hw->wiphy->wowlan.flags = WIPHY_WOWLAN_ANY;
+
        ret = wl1271_init_ieee80211(wl);
        if (ret)
                goto out_irq;