Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+15 −11
Original line number Diff line number Diff line
@@ -272,17 +272,19 @@ static int __devinit wl1271_probe(struct sdio_func *func,
		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);

	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;
	}
	disable_irq(wl->irq);

	ret = wl1271_init_ieee80211(wl);
	if (ret)
@@ -316,8 +318,10 @@ static void __devexit wl1271_remove(struct sdio_func *func)
	pm_runtime_get_noresume(&func->dev);

	wl1271_unregister_hw(wl);
	if (wl->irq_wake_enabled) {
		device_init_wakeup(wl1271_sdio_wl_to_dev(wl), 0);
		disable_irq_wake(wl->irq);
	}
	free_irq(wl->irq, wl);
	wl1271_free_hw(wl);
}
+1 −0
Original line number Diff line number Diff line
@@ -580,6 +580,7 @@ struct wl1271 {
	 * (currently, only "ANY" trigger is supported)
	 */
	bool wow_enabled;
	bool irq_wake_enabled;

	/*
	 * AP-mode - links indexed by HLID. The global and broadcast links