[PATCH 3/4] mmc: sdhci-esdhc-imx: add option to not change pinctrl state in suspend
Ciprian Costea
ciprianmarian.costea at oss.nxp.com
Thu Jul 4 06:21:15 PDT 2024
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 at oss.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
More information about the linux-arm-kernel
mailing list