> -----Original Message----- > From: Ciprian Marian Costea (OSS) <ciprianmarian.costea@xxxxxxxxxxx> > Sent: 2024年7月5日 21:47 > To: Bough Chen <haibo.chen@xxxxxxx>; Adrian Hunter > <adrian.hunter@xxxxxxxxx>; Ulf Hansson <ulf.hansson@xxxxxxxxxx>; Shawn Guo > <shawnguo@xxxxxxxxxx>; Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>; > Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx>; Fabio Estevam > <festevam@xxxxxxxxx> > Cc: linux-kernel@xxxxxxxxxxxxxxx; linux-mmc@xxxxxxxxxxxxxxx; > imx@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; dl-S32 > <S32@xxxxxxx>; Ciprian Marian Costea (OSS) > <ciprianmarian.costea@xxxxxxxxxxx> > 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. If so, why not dop the "sleep" pinctrl in device tree file? Best Regards Haibo Chen > > For this scenario the newly introduced flag 'ESDHC_FLAG_SKIP_PINCTRL_SLEEP' > is used. > > Signed-off-by: Ciprian Costea <ciprianmarian.costea@xxxxxxxxxxx> > --- > 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