ath6kl: Workaround to support Deep Sleep with MSM.
authorSantosh Sajjan <ssajjan@codeaurora.org>
Mon, 30 Jan 2012 20:02:26 +0000 (22:02 +0200)
committerKalle Valo <kvalo@qca.qualcomm.com>
Tue, 31 Jan 2012 19:06:46 +0000 (21:06 +0200)
Set the host pm flag MMC_PM_WAKE_SDIO_IRQ to allow host
to disable the sdc2_clk and sdc2_h_clk,so that the MSM device
enter into TCXO shutdown.

Signed-off-by: Santosh Sajjan <ssajjan@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath6kl/sdio.c

index 07dcf00ca1a75e091b0c9a033140a69b3f7b6a3c..4febee723495c672f6a4f86e10117b1c81097381 100644 (file)
@@ -856,6 +856,19 @@ static int ath6kl_sdio_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow)
                if (ret)
                        goto cut_pwr;
 
+               /*
+                * Workaround to support Deep Sleep with MSM, set the host pm
+                * flag as MMC_PM_WAKE_SDIO_IRQ to allow SDCC deiver to disable
+                * the sdc2_clock and internally allows MSM to enter
+                * TCXO shutdown properly.
+                */
+               if ((flags & MMC_PM_WAKE_SDIO_IRQ)) {
+                       ret = sdio_set_host_pm_flags(func,
+                                               MMC_PM_WAKE_SDIO_IRQ);
+                       if (ret)
+                               goto cut_pwr;
+               }
+
                ret = ath6kl_cfg80211_suspend(ar, ATH6KL_CFG_SUSPEND_DEEPSLEEP,
                                              NULL);
                if (ret)