[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240704132116.2865864-4-ciprianmarian.costea@oss.nxp.com>
Date: Thu, 4 Jul 2024 16:21:15 +0300
From: Ciprian Costea <ciprianmarian.costea@....nxp.com>
To: Shawn Guo <shawnguo@...nel.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>,
Haibo Chen <haibo.chen@....com>
Cc: linux-kernel@...r.kernel.org,
imx@...ts.linux.dev,
linux-arm-kernel@...ts.infradead.org,
s32@....com,
Ciprian Costea <ciprianmarian.costea@....nxp.com>
Subject: [PATCH 3/4] mmc: sdhci-esdhc-imx: add option to not change pinctrl state in suspend
On some boards such as S32G based, changing the pinctrl state
in suspend routine may not be supported.
For this scenario the newly introduced flag
'ESDHC_FLAG_SKIP_PINCTRL_SLEEP' is used.
Signed-off-by: Ciprian Costea <ciprianmarian.costea@....nxp.com>
---
drivers/mmc/host/sdhci-esdhc-imx.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index 8f0bc6dca2b0..c3ff7fccd051 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -204,6 +204,9 @@
/* The IP does not have GPIO CD wake capabilities */
#define ESDHC_FLAG_SKIP_CD_WAKE BIT(18)
+/* The IP does not support transition to pinctrl sleep state */
+#define ESDHC_FLAG_SKIP_PINCTRL_SLEEP BIT(19)
+
enum wp_types {
ESDHC_WP_NONE, /* no WP, neither controller nor gpio */
ESDHC_WP_CONTROLLER, /* mmc controller internal WP */
@@ -301,7 +304,8 @@ static struct esdhc_soc_data usdhc_s32g2_data = {
.flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_MAN_TUNING
| ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200
| ESDHC_FLAG_HS400 | ESDHC_FLAG_HS400_ES
- | ESDHC_FLAG_SKIP_ERR004536 | ESDHC_FLAG_SKIP_CD_WAKE,
+ | ESDHC_FLAG_SKIP_ERR004536 | ESDHC_FLAG_SKIP_CD_WAKE
+ | ESDHC_FLAG_SKIP_PINCTRL_SLEEP,
};
static struct esdhc_soc_data usdhc_imx7ulp_data = {
@@ -1884,9 +1888,11 @@ static int sdhci_esdhc_suspend(struct device *dev)
if (ret)
return ret;
- ret = pinctrl_pm_select_sleep_state(dev);
- if (ret)
- return ret;
+ if (!(imx_data->socdata->flags & ESDHC_FLAG_SKIP_PINCTRL_SLEEP)) {
+ ret = pinctrl_pm_select_sleep_state(dev);
+ if (ret)
+ return ret;
+ }
ret = mmc_gpio_set_cd_wake(host->mmc, true);
--
2.45.2
Powered by blists - more mailing lists