PM runtime support is safe and applicable across all i.MX platforms, not
just those using the SCU API. Remove the conditional check and enable PM
runtime unconditionally to simplify the code and ensure consistent power
management behavior.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
drivers/remoteproc/imx_rproc.c | 22 ++++++++--------------
1 file changed, 8 insertions(+), 14 deletions(-)
diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 820b0cd5adbb17ce5665e7ec2786bca23f1a67ea..25f5cb4d414eabed7a166eb2a8ae5e20b6b4f667 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -1119,12 +1119,10 @@ static int imx_rproc_probe(struct platform_device *pdev)
return dev_err_probe(dev, ret, "register restart handler failure\n");
}
- if (dcfg->method == IMX_RPROC_SCU_API) {
- pm_runtime_enable(dev);
- ret = pm_runtime_resume_and_get(dev);
- if (ret)
- return dev_err_probe(dev, ret, "pm_runtime get failed\n");
- }
+ pm_runtime_enable(dev);
+ ret = pm_runtime_resume_and_get(dev);
+ if (ret)
+ return dev_err_probe(dev, ret, "pm_runtime get failed\n");
ret = devm_rproc_add(dev, rproc);
if (ret) {
@@ -1135,10 +1133,8 @@ static int imx_rproc_probe(struct platform_device *pdev)
return 0;
err_put_pm:
- if (dcfg->method == IMX_RPROC_SCU_API) {
- pm_runtime_disable(dev);
- pm_runtime_put_noidle(dev);
- }
+ pm_runtime_disable(dev);
+ pm_runtime_put_noidle(dev);
return ret;
}
@@ -1148,10 +1144,8 @@ static void imx_rproc_remove(struct platform_device *pdev)
struct rproc *rproc = platform_get_drvdata(pdev);
struct imx_rproc *priv = rproc->priv;
- if (priv->dcfg->method == IMX_RPROC_SCU_API) {
- pm_runtime_disable(priv->dev);
- pm_runtime_put_noidle(priv->dev);
- }
+ pm_runtime_disable(priv->dev);
+ pm_runtime_put_noidle(priv->dev);
}
static const struct imx_rproc_plat_ops imx_rproc_ops_arm_smc = {
--
2.37.1
On Wed, Oct 15, 2025 at 4:54 PM Peng Fan <peng.fan@nxp.com> wrote: > > PM runtime support is safe and applicable across all i.MX platforms, not > just those using the SCU API. Remove the conditional check and enable PM > runtime unconditionally to simplify the code and ensure consistent power > management behavior. > > Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com> Thanks Peng. Makes sense.
On Wed, Oct 15, 2025 at 09:52:57PM +0800, Peng Fan wrote:
> PM runtime support is safe and applicable across all i.MX platforms, not
> just those using the SCU API. Remove the conditional check and enable PM
> runtime unconditionally to simplify the code and ensure consistent power
> management behavior.
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> drivers/remoteproc/imx_rproc.c | 22 ++++++++--------------
> 1 file changed, 8 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 820b0cd5adbb17ce5665e7ec2786bca23f1a67ea..25f5cb4d414eabed7a166eb2a8ae5e20b6b4f667 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -1119,12 +1119,10 @@ static int imx_rproc_probe(struct platform_device *pdev)
> return dev_err_probe(dev, ret, "register restart handler failure\n");
> }
>
> - if (dcfg->method == IMX_RPROC_SCU_API) {
> - pm_runtime_enable(dev);
> - ret = pm_runtime_resume_and_get(dev);
> - if (ret)
> - return dev_err_probe(dev, ret, "pm_runtime get failed\n");
> - }
> + pm_runtime_enable(dev);
> + ret = pm_runtime_resume_and_get(dev);
> + if (ret)
> + return dev_err_probe(dev, ret, "pm_runtime get failed\n");
>
> ret = devm_rproc_add(dev, rproc);
> if (ret) {
> @@ -1135,10 +1133,8 @@ static int imx_rproc_probe(struct platform_device *pdev)
> return 0;
>
> err_put_pm:
> - if (dcfg->method == IMX_RPROC_SCU_API) {
> - pm_runtime_disable(dev);
> - pm_runtime_put_noidle(dev);
> - }
> + pm_runtime_disable(dev);
> + pm_runtime_put_noidle(dev);
>
> return ret;
> }
> @@ -1148,10 +1144,8 @@ static void imx_rproc_remove(struct platform_device *pdev)
> struct rproc *rproc = platform_get_drvdata(pdev);
> struct imx_rproc *priv = rproc->priv;
>
> - if (priv->dcfg->method == IMX_RPROC_SCU_API) {
> - pm_runtime_disable(priv->dev);
> - pm_runtime_put_noidle(priv->dev);
> - }
> + pm_runtime_disable(priv->dev);
> + pm_runtime_put_noidle(priv->dev);
> }
Daniel - what is your take on this one?
>
> static const struct imx_rproc_plat_ops imx_rproc_ops_arm_smc = {
>
> --
> 2.37.1
>
On Mon, Oct 20, 2025 at 6:40 PM Mathieu Poirier
<mathieu.poirier@linaro.org> wrote:
>
> On Wed, Oct 15, 2025 at 09:52:57PM +0800, Peng Fan wrote:
> > PM runtime support is safe and applicable across all i.MX platforms, not
> > just those using the SCU API. Remove the conditional check and enable PM
> > runtime unconditionally to simplify the code and ensure consistent power
> > management behavior.
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> > drivers/remoteproc/imx_rproc.c | 22 ++++++++--------------
> > 1 file changed, 8 insertions(+), 14 deletions(-)
> >
> > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> > index 820b0cd5adbb17ce5665e7ec2786bca23f1a67ea..25f5cb4d414eabed7a166eb2a8ae5e20b6b4f667 100644
> > --- a/drivers/remoteproc/imx_rproc.c
> > +++ b/drivers/remoteproc/imx_rproc.c
> > @@ -1119,12 +1119,10 @@ static int imx_rproc_probe(struct platform_device *pdev)
> > return dev_err_probe(dev, ret, "register restart handler failure\n");
> > }
> >
> > - if (dcfg->method == IMX_RPROC_SCU_API) {
> > - pm_runtime_enable(dev);
> > - ret = pm_runtime_resume_and_get(dev);
> > - if (ret)
> > - return dev_err_probe(dev, ret, "pm_runtime get failed\n");
> > - }
> > + pm_runtime_enable(dev);
> > + ret = pm_runtime_resume_and_get(dev);
> > + if (ret)
> > + return dev_err_probe(dev, ret, "pm_runtime get failed\n");
> >
> > ret = devm_rproc_add(dev, rproc);
> > if (ret) {
> > @@ -1135,10 +1133,8 @@ static int imx_rproc_probe(struct platform_device *pdev)
> > return 0;
> >
> > err_put_pm:
> > - if (dcfg->method == IMX_RPROC_SCU_API) {
> > - pm_runtime_disable(dev);
> > - pm_runtime_put_noidle(dev);
> > - }
> > + pm_runtime_disable(dev);
> > + pm_runtime_put_noidle(dev);
> >
> > return ret;
> > }
> > @@ -1148,10 +1144,8 @@ static void imx_rproc_remove(struct platform_device *pdev)
> > struct rproc *rproc = platform_get_drvdata(pdev);
> > struct imx_rproc *priv = rproc->priv;
> >
> > - if (priv->dcfg->method == IMX_RPROC_SCU_API) {
> > - pm_runtime_disable(priv->dev);
> > - pm_runtime_put_noidle(priv->dev);
> > - }
> > + pm_runtime_disable(priv->dev);
> > + pm_runtime_put_noidle(priv->dev);
> > }
>
> Daniel - what is your take on this one?
This is on my todo list for review. Will send it asap.
On Wed, Oct 15, 2025 at 09:52:57PM +0800, Peng Fan wrote:
> PM runtime support is safe and applicable across all i.MX platforms, not
> just those using the SCU API. Remove the conditional check and enable PM
> runtime unconditionally to simplify the code and ensure consistent power
> management behavior.
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
Reviewed-by: Frank Li <Frank.Li@nxp.com>
> drivers/remoteproc/imx_rproc.c | 22 ++++++++--------------
> 1 file changed, 8 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 820b0cd5adbb17ce5665e7ec2786bca23f1a67ea..25f5cb4d414eabed7a166eb2a8ae5e20b6b4f667 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -1119,12 +1119,10 @@ static int imx_rproc_probe(struct platform_device *pdev)
> return dev_err_probe(dev, ret, "register restart handler failure\n");
> }
>
> - if (dcfg->method == IMX_RPROC_SCU_API) {
> - pm_runtime_enable(dev);
> - ret = pm_runtime_resume_and_get(dev);
> - if (ret)
> - return dev_err_probe(dev, ret, "pm_runtime get failed\n");
> - }
> + pm_runtime_enable(dev);
> + ret = pm_runtime_resume_and_get(dev);
> + if (ret)
> + return dev_err_probe(dev, ret, "pm_runtime get failed\n");
>
> ret = devm_rproc_add(dev, rproc);
> if (ret) {
> @@ -1135,10 +1133,8 @@ static int imx_rproc_probe(struct platform_device *pdev)
> return 0;
>
> err_put_pm:
> - if (dcfg->method == IMX_RPROC_SCU_API) {
> - pm_runtime_disable(dev);
> - pm_runtime_put_noidle(dev);
> - }
> + pm_runtime_disable(dev);
> + pm_runtime_put_noidle(dev);
>
> return ret;
> }
> @@ -1148,10 +1144,8 @@ static void imx_rproc_remove(struct platform_device *pdev)
> struct rproc *rproc = platform_get_drvdata(pdev);
> struct imx_rproc *priv = rproc->priv;
>
> - if (priv->dcfg->method == IMX_RPROC_SCU_API) {
> - pm_runtime_disable(priv->dev);
> - pm_runtime_put_noidle(priv->dev);
> - }
> + pm_runtime_disable(priv->dev);
> + pm_runtime_put_noidle(priv->dev);
> }
>
> static const struct imx_rproc_plat_ops imx_rproc_ops_arm_smc = {
>
> --
> 2.37.1
>
© 2016 - 2025 Red Hat, Inc.