From: Sarthak Garg <sartgarg@xxxxxxxxxxxxxx> This adds external GPIO wakeup support to sdhci-msm driver for sdio cards. Also enables clk gating only in system Suspend/Resume for SDIO card. Also add the below fixes from 4.9 kernel : c363224b: Fix wakeup functionality for SDIO 61fc5bf6: Remove flag MMC_PM_WAKE_SDIO_IRQ in mmc_resume_host a7a2a82e: Set sdio_pending_processing default state to false. Signed-off-by: Sarthak Garg <sartgarg@xxxxxxxxxxxxxx> Signed-off-by: kamasali <quic_kamasali@xxxxxxxxxxx> Signed-off-by: Srinivasarao Pathipati <quic_spathi@xxxxxxxxxxx> --- drivers/mmc/core/bus.c | 7 +++++++ drivers/mmc/core/sdio.c | 1 + 2 files changed, 8 insertions(+) diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c index 58a60af..a475fe1 100644 --- a/drivers/mmc/core/bus.c +++ b/drivers/mmc/core/bus.c @@ -364,6 +364,13 @@ int mmc_add_card(struct mmc_card *card) #endif card->dev.of_node = mmc_of_find_child_device(card->host, 0); + if (mmc_card_sdio(card)) { + ret = device_init_wakeup(&card->dev, true); + if (ret) + pr_err("%s: %s: failed to init wakeup: %d\n", + mmc_hostname(card->host), __func__, ret); + } + device_enable_async_suspend(&card->dev); ret = device_add(&card->dev); diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index 25799ac..9502318 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c @@ -1096,6 +1096,7 @@ static int mmc_sdio_resume(struct mmc_host *host) mmc_release_host(host); host->pm_flags &= ~MMC_PM_KEEP_POWER; + host->pm_flags &= ~MMC_PM_WAKE_SDIO_IRQ; return err; } -- 2.7.4