diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index 99c9357c4b05..9b30ce9562b9 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "sdhci-pltfm.h" #include "cqhci.h" @@ -4379,6 +4380,13 @@ static int sdhci_msm_probe(struct platform_device *pdev) } } + /* Toggle wlan_en pin to reset SDIO card to correct state */ + if (host->mmc->pm_caps & MMC_PM_KEEP_POWER) { + pinctrl_pm_select_sleep_state(&pdev->dev); + mdelay(1); + pinctrl_pm_select_default_state(&pdev->dev); + } + /* Reset the vendor spec register to power on reset state */ writel_relaxed(CORE_VENDOR_SPEC_POR_VAL, host->ioaddr + msm_offset->core_vendor_spec);