* [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state
@ 2024-05-14 20:05 Shenwei Wang
2024-06-14 18:43 ` Shenwei Wang
2024-07-01 20:45 ` Uwe Kleine-König
0 siblings, 2 replies; 5+ messages in thread
From: Shenwei Wang @ 2024-05-14 20:05 UTC (permalink / raw)
To: Uwe Kleine-König, Shawn Guo, Sascha Hauer
Cc: Pengutronix Kernel Team, Fabio Estevam, linux-pwm, imx,
linux-arm-kernel, linux-imx, Shenwei Wang
Apply the pinctrl setting of sleep state when system enters
suspend state.
Restore to the default pinctrl setting when system resumes.
Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com>
---
drivers/pwm/pwm-imx-tpm.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/pwm/pwm-imx-tpm.c b/drivers/pwm/pwm-imx-tpm.c
index c50ddbac43c8..19245790c67c 100644
--- a/drivers/pwm/pwm-imx-tpm.c
+++ b/drivers/pwm/pwm-imx-tpm.c
@@ -393,7 +393,7 @@ static int pwm_imx_tpm_suspend(struct device *dev)
clk_disable_unprepare(tpm->clk);
- return 0;
+ return pinctrl_pm_select_sleep_state(dev);
}
static int pwm_imx_tpm_resume(struct device *dev)
@@ -401,6 +401,10 @@ static int pwm_imx_tpm_resume(struct device *dev)
struct imx_tpm_pwm_chip *tpm = dev_get_drvdata(dev);
int ret = 0;
+ ret = pinctrl_pm_select_default_state(dev);
+ if (ret)
+ return ret;
+
ret = clk_prepare_enable(tpm->clk);
if (ret)
dev_err(dev, "failed to prepare or enable clock: %d\n", ret);
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state
2024-05-14 20:05 [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state Shenwei Wang
@ 2024-06-14 18:43 ` Shenwei Wang
2024-07-01 19:48 ` Shenwei Wang
2024-07-01 20:45 ` Uwe Kleine-König
1 sibling, 1 reply; 5+ messages in thread
From: Shenwei Wang @ 2024-06-14 18:43 UTC (permalink / raw)
To: Uwe Kleine-König, Shawn Guo, Sascha Hauer
Cc: Pengutronix Kernel Team, Fabio Estevam, linux-pwm@vger.kernel.org,
imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
dl-linux-imx
> -----Original Message-----
> From: Shenwei Wang <shenwei.wang@nxp.com>
> Sent: Tuesday, May 14, 2024 3:06 PM
> To: Uwe Kleine-König <ukleinek@kernel.org>; Shawn Guo
> <shawnguo@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>; Fabio Estevam
> <festevam@gmail.com>; linux-pwm@vger.kernel.org; imx@lists.linux.dev;
> linux-arm-kernel@lists.infradead.org; dl-linux-imx <linux-imx@nxp.com>;
> Shenwei Wang <shenwei.wang@nxp.com>
> Subject: [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state
>
> Apply the pinctrl setting of sleep state when system enters suspend state.
> Restore to the default pinctrl setting when system resumes.
>
Ping @Uwe
Thanks,
Shenwei
> Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com>
> ---
> drivers/pwm/pwm-imx-tpm.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pwm/pwm-imx-tpm.c b/drivers/pwm/pwm-imx-tpm.c index
> c50ddbac43c8..19245790c67c 100644
> --- a/drivers/pwm/pwm-imx-tpm.c
> +++ b/drivers/pwm/pwm-imx-tpm.c
> @@ -393,7 +393,7 @@ static int pwm_imx_tpm_suspend(struct device *dev)
>
> clk_disable_unprepare(tpm->clk);
>
> - return 0;
> + return pinctrl_pm_select_sleep_state(dev);
> }
>
> static int pwm_imx_tpm_resume(struct device *dev) @@ -401,6 +401,10 @@
> static int pwm_imx_tpm_resume(struct device *dev)
> struct imx_tpm_pwm_chip *tpm = dev_get_drvdata(dev);
> int ret = 0;
>
> + ret = pinctrl_pm_select_default_state(dev);
> + if (ret)
> + return ret;
> +
> ret = clk_prepare_enable(tpm->clk);
> if (ret)
> dev_err(dev, "failed to prepare or enable clock: %d\n", ret);
> --
> 2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state
2024-06-14 18:43 ` Shenwei Wang
@ 2024-07-01 19:48 ` Shenwei Wang
0 siblings, 0 replies; 5+ messages in thread
From: Shenwei Wang @ 2024-07-01 19:48 UTC (permalink / raw)
To: Uwe Kleine-König, Shawn Guo, Sascha Hauer
Cc: Pengutronix Kernel Team, Fabio Estevam, linux-pwm@vger.kernel.org,
imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
dl-linux-imx
> -----Original Message-----
> From: Shenwei Wang
> Sent: Friday, June 14, 2024 1:43 PM
> To: Uwe Kleine-König <ukleinek@kernel.org>; Shawn Guo
> <shawnguo@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>
> > -----Original Message-----
> > From: Shenwei Wang <shenwei.wang@nxp.com>
> > Sent: Tuesday, May 14, 2024 3:06 PM
> > To: Uwe Kleine-König <ukleinek@kernel.org>; Shawn Guo
> > <shawnguo@kernel.org>; Sascha Hauer <s.hauer@pengutronix.de>
> > Cc: Pengutronix Kernel Team <kernel@pengutronix.de>; Fabio Estevam
> > <festevam@gmail.com>; linux-pwm@vger.kernel.org; imx@lists.linux.dev;
> > linux-arm-kernel@lists.infradead.org; dl-linux-imx
> > <linux-imx@nxp.com>; Shenwei Wang <shenwei.wang@nxp.com>
> > Subject: [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state
> >
> > Apply the pinctrl setting of sleep state when system enters suspend state.
> > Restore to the default pinctrl setting when system resumes.
> >
>
> Ping @Uwe
2nd Ping.
Hi Uwe,
Can you please provide your feedback on this patch?
Thanks,
Shenwei
>
> Thanks,
> Shenwei
>
> > Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com>
> > ---
> > drivers/pwm/pwm-imx-tpm.c | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/pwm/pwm-imx-tpm.c b/drivers/pwm/pwm-imx-tpm.c
> > index c50ddbac43c8..19245790c67c 100644
> > --- a/drivers/pwm/pwm-imx-tpm.c
> > +++ b/drivers/pwm/pwm-imx-tpm.c
> > @@ -393,7 +393,7 @@ static int pwm_imx_tpm_suspend(struct device
> *dev)
> >
> > clk_disable_unprepare(tpm->clk);
> >
> > - return 0;
> > + return pinctrl_pm_select_sleep_state(dev);
> > }
> >
> > static int pwm_imx_tpm_resume(struct device *dev) @@ -401,6 +401,10
> > @@ static int pwm_imx_tpm_resume(struct device *dev)
> > struct imx_tpm_pwm_chip *tpm = dev_get_drvdata(dev);
> > int ret = 0;
> >
> > + ret = pinctrl_pm_select_default_state(dev);
> > + if (ret)
> > + return ret;
> > +
> > ret = clk_prepare_enable(tpm->clk);
> > if (ret)
> > dev_err(dev, "failed to prepare or enable clock: %d\n", ret);
> > --
> > 2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state
2024-05-14 20:05 [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state Shenwei Wang
2024-06-14 18:43 ` Shenwei Wang
@ 2024-07-01 20:45 ` Uwe Kleine-König
2024-07-01 21:14 ` Shenwei Wang
1 sibling, 1 reply; 5+ messages in thread
From: Uwe Kleine-König @ 2024-07-01 20:45 UTC (permalink / raw)
To: Shenwei Wang
Cc: Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
linux-pwm, imx, linux-arm-kernel, linux-imx
[-- Attachment #1: Type: text/plain, Size: 1435 bytes --]
Hello,
On Tue, May 14, 2024 at 03:05:34PM -0500, Shenwei Wang wrote:
> Apply the pinctrl setting of sleep state when system enters
> suspend state.
> Restore to the default pinctrl setting when system resumes.
>
> Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com>
> ---
> drivers/pwm/pwm-imx-tpm.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pwm/pwm-imx-tpm.c b/drivers/pwm/pwm-imx-tpm.c
> index c50ddbac43c8..19245790c67c 100644
> --- a/drivers/pwm/pwm-imx-tpm.c
> +++ b/drivers/pwm/pwm-imx-tpm.c
> @@ -393,7 +393,7 @@ static int pwm_imx_tpm_suspend(struct device *dev)
>
> clk_disable_unprepare(tpm->clk);
>
> - return 0;
> + return pinctrl_pm_select_sleep_state(dev);
> }
>
> static int pwm_imx_tpm_resume(struct device *dev)
> @@ -401,6 +401,10 @@ static int pwm_imx_tpm_resume(struct device *dev)
> struct imx_tpm_pwm_chip *tpm = dev_get_drvdata(dev);
> int ret = 0;
>
> + ret = pinctrl_pm_select_default_state(dev);
> + if (ret)
> + return ret;
> +
> ret = clk_prepare_enable(tpm->clk);
> if (ret)
> dev_err(dev, "failed to prepare or enable clock: %d\n", ret);
If .resume() failed (consider clk_prepare_enable() failing), and
the resume is retried later: Is there an unexpected (though maybe
harmless) imbalance because pinctrl_pm_select_default_state() isn't
undone in .resume()'s error path?
Best regards
Uwe
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state
2024-07-01 20:45 ` Uwe Kleine-König
@ 2024-07-01 21:14 ` Shenwei Wang
0 siblings, 0 replies; 5+ messages in thread
From: Shenwei Wang @ 2024-07-01 21:14 UTC (permalink / raw)
To: Uwe Kleine-König
Cc: Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
linux-pwm@vger.kernel.org, imx@lists.linux.dev,
linux-arm-kernel@lists.infradead.org, dl-linux-imx
> -----Original Message-----
> From: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
> Sent: Monday, July 1, 2024 3:46 PM
> To: Shenwei Wang <shenwei.wang@nxp.com>
> Cc: Shawn Guo <shawnguo@kernel.org>; Sascha Hauer
> <s.hauer@pengutronix.de>; Pengutronix Kernel Team
> <kernel@pengutronix.de>; Fabio Estevam <festevam@gmail.com>; linux-
> pwm@vger.kernel.org; imx@lists.linux.dev; linux-arm-
> kernel@lists.infradead.org; dl-linux-imx <linux-imx@nxp.com>
> Subject: [EXT] Re: [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state
>
> Hello,
>
> On Tue, May 14, 2024 at 03:05:34PM -0500, Shenwei Wang wrote:
> > Apply the pinctrl setting of sleep state when system enters suspend
> > state.
> > Restore to the default pinctrl setting when system resumes.
> >
> > Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com>
> > ---
> > drivers/pwm/pwm-imx-tpm.c | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/pwm/pwm-imx-tpm.c b/drivers/pwm/pwm-imx-tpm.c
> > index c50ddbac43c8..19245790c67c 100644
> > --- a/drivers/pwm/pwm-imx-tpm.c
> > +++ b/drivers/pwm/pwm-imx-tpm.c
> > @@ -393,7 +393,7 @@ static int pwm_imx_tpm_suspend(struct device
> *dev)
> >
> > clk_disable_unprepare(tpm->clk);
> >
> > - return 0;
> > + return pinctrl_pm_select_sleep_state(dev);
> > }
> >
> > static int pwm_imx_tpm_resume(struct device *dev) @@ -401,6 +401,10
> > @@ static int pwm_imx_tpm_resume(struct device *dev)
> > struct imx_tpm_pwm_chip *tpm = dev_get_drvdata(dev);
> > int ret = 0;
> >
> > + ret = pinctrl_pm_select_default_state(dev);
> > + if (ret)
> > + return ret;
> > +
> > ret = clk_prepare_enable(tpm->clk);
> > if (ret)
> > dev_err(dev, "failed to prepare or enable clock: %d\n", ret);
>
> If .resume() failed (consider clk_prepare_enable() failing), and the resume is
> retried later: Is there an unexpected (though maybe
> harmless) imbalance because pinctrl_pm_select_default_state() isn't undone
> in .resume()'s error path?
>
If we need to take care the imbalance of pinctrl states in the error path in .resume
function, should I also take care of the imbalance of clk states in the error path in .suspend function?
Thank you for the review!
Shenwei
> Best regards
> Uwe
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-07-01 21:14 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-14 20:05 [PATCH] pwm: imx-tpm: Enable pinctrl setting for sleep state Shenwei Wang
2024-06-14 18:43 ` Shenwei Wang
2024-07-01 19:48 ` Shenwei Wang
2024-07-01 20:45 ` Uwe Kleine-König
2024-07-01 21:14 ` Shenwei Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).