]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
net: wireless: bcmdhd: prior cleanup power on
authorBitan Biswas <bbiswas@nvidia.com>
Fri, 15 Nov 2013 09:29:08 +0000 (14:59 +0530)
committerBitan Biswas <bbiswas@nvidia.com>
Thu, 26 Dec 2013 11:53:12 +0000 (03:53 -0800)
Before low level access ensure power is restored
if in power save mode.

bug 1397397

Change-Id: Ib99b6cf32344b40b75dc57d4eca1233e7b963c57
Signed-off-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-on: http://git-master/r/331574

drivers/net/wireless/bcmdhd/bcmsdh_sdmmc_linux.c

index ffc79c88f32c1abe759ad4df8741623259d6831b..8f8846b883027bfaf357cb924504b968f1a5a601 100644 (file)
@@ -172,8 +172,17 @@ static void bcmsdh_sdmmc_remove(struct sdio_func *func)
 
                if (gInstance->func[2]) {
                        sd_trace(("F2 found, calling bcmsdh_remove...\n"));
-                       bcmsdh_remove(&func->dev);
-                       gInstance->func[2] = NULL;
+                       /* Restore power before accessing lower layer since
+                        * we are in power save mode after probe
+                        */
+                       if (mmc_power_restore_host(
+                               (gInstance->func[2])->card->host)) {
+                               sd_err(("%s: card power restore fail",
+                                       __func__));
+                       } else {
+                               bcmsdh_remove(&func->dev);
+                               gInstance->func[2] = NULL;
+                       }
                }
                if (func->num == 1) {
                        sdio_claim_host(func);