From 991d5b4eda2b223f64b3bc17129cd4660398a2f3 Mon Sep 17 00:00:00 2001 From: Shawn Guo Date: Mon, 9 Sep 2019 10:57:12 +0800 Subject: [PATCH] mmc: pwrseq_simple: select pinctrl state during suspend/resume To support suspend/resume from LPSR mode, we need to select default pinctrl state in resume, so that IOMUXC settings can be restored from power losing. Signed-off-by: Shawn Guo --- drivers/mmc/core/pwrseq_simple.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/mmc/core/pwrseq_simple.c b/drivers/mmc/core/pwrseq_simple.c index ea4d3670560e..9565f6400620 100644 --- a/drivers/mmc/core/pwrseq_simple.c +++ b/drivers/mmc/core/pwrseq_simple.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -151,12 +152,30 @@ static int mmc_pwrseq_simple_remove(struct platform_device *pdev) return 0; } +static int mmc_pwrseq_simple_suspend(struct device *dev) +{ + pinctrl_pm_select_sleep_state(dev); + + return 0; +} + +static int mmc_pwrseq_simple_resume(struct device *dev) +{ + pinctrl_pm_select_default_state(dev); + + return 0; +} + +SIMPLE_DEV_PM_OPS(mmc_pwrseq_simple_pm_ops, mmc_pwrseq_simple_suspend, + mmc_pwrseq_simple_resume); + static struct platform_driver mmc_pwrseq_simple_driver = { .probe = mmc_pwrseq_simple_probe, .remove = mmc_pwrseq_simple_remove, .driver = { .name = "pwrseq_simple", .of_match_table = mmc_pwrseq_simple_of_match, + .pm = &mmc_pwrseq_simple_pm_ops, }, };