mmc: sdhci-tegra: Enable wake on SD card event
authorAniruddha Rao <anrao@nvidia.com>
Thu, 13 Jan 2022 05:16:09 +0000 (10:46 +0530)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 28 Feb 2022 12:06:21 +0000 (13:06 +0100)
Enable GPIO wake source on SD card detect line. Physical card
insertion/removal event should wake the system from suspend.

Signed-off-by: Aniruddha Rao <anrao@nvidia.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/1642050969-21152-1-git-send-email-anrao@nvidia.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-tegra.c

index 35ebba067e875034d425bdac1430b8e0a641ed83..5c84bd5764ee1670a83af56ebf6273c9d8b01ba2 100644 (file)
@@ -1673,6 +1673,9 @@ static int sdhci_tegra_probe(struct platform_device *pdev)
        /* HW busy detection is supported, but R1B responses are required. */
        host->mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_NEED_RSP_BUSY;
 
+       /* GPIO CD can be set as a wakeup source */
+       host->mmc->caps |= MMC_CAP_CD_WAKE;
+
        tegra_sdhci_parse_dt(host);
 
        tegra_host->power_gpio = devm_gpiod_get_optional(&pdev->dev, "power",
@@ -1840,7 +1843,7 @@ static int sdhci_tegra_suspend(struct device *dev)
                return ret;
        }
 
-       return 0;
+       return mmc_gpio_set_cd_wake(host->mmc, true);
 }
 
 static int sdhci_tegra_resume(struct device *dev)
@@ -1848,6 +1851,10 @@ static int sdhci_tegra_resume(struct device *dev)
        struct sdhci_host *host = dev_get_drvdata(dev);
        int ret;
 
+       ret = mmc_gpio_set_cd_wake(host->mmc, false);
+       if (ret)
+               return ret;
+
        ret = pm_runtime_force_resume(dev);
        if (ret)
                return ret;