Message ID | 20230720091701.517197-5-peng.fan@oss.nxp.com |
---|---|
State | Superseded |
Headers | show |
Series | [V2,1/8] genpd: imx: relocate scu-pd under genpd | expand |
On Thu, 20 Jul 2023 at 11:12, Peng Fan (OSS) <peng.fan@oss.nxp.com> wrote: > > From: Dong Aisheng <aisheng.dong@nxp.com> > > Do not power off console if no_console_suspend > > Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> > Signed-off-by: Peng Fan <peng.fan@nxp.com> > --- > drivers/genpd/imx/scu-pd.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/genpd/imx/scu-pd.c b/drivers/genpd/imx/scu-pd.c > index 08583a10ac62..6770be51d234 100644 > --- a/drivers/genpd/imx/scu-pd.c > +++ b/drivers/genpd/imx/scu-pd.c > @@ -52,6 +52,7 @@ > */ > > #include <dt-bindings/firmware/imx/rsrc.h> > +#include <linux/console.h> > #include <linux/firmware/imx/sci.h> > #include <linux/firmware/imx/svc/rm.h> > #include <linux/io.h> > @@ -324,6 +325,10 @@ static int imx_sc_pd_power(struct generic_pm_domain *domain, bool power_on) > msg.resource = pd->rsrc; > msg.mode = power_on ? IMX_SC_PM_PW_MODE_ON : IMX_SC_PM_PW_MODE_LP; > > + /* keep uart console power on for no_console_suspend */ > + if (imx_con_rsrc == pd->rsrc && !console_suspend_enabled && !power_on) > + return 0; By returning 0, genpd belives that the power off has successfully succeeded. Should we return -EBUSY here instead? > + > ret = imx_scu_call_rpc(pm_ipc_handle, &msg, true); > if (ret) > dev_err(&domain->dev, "failed to power %s resource %d ret %d\n", > -- > 2.37.1 > Kind regards Uffe
diff --git a/drivers/genpd/imx/scu-pd.c b/drivers/genpd/imx/scu-pd.c index 08583a10ac62..6770be51d234 100644 --- a/drivers/genpd/imx/scu-pd.c +++ b/drivers/genpd/imx/scu-pd.c @@ -52,6 +52,7 @@ */ #include <dt-bindings/firmware/imx/rsrc.h> +#include <linux/console.h> #include <linux/firmware/imx/sci.h> #include <linux/firmware/imx/svc/rm.h> #include <linux/io.h> @@ -324,6 +325,10 @@ static int imx_sc_pd_power(struct generic_pm_domain *domain, bool power_on) msg.resource = pd->rsrc; msg.mode = power_on ? IMX_SC_PM_PW_MODE_ON : IMX_SC_PM_PW_MODE_LP; + /* keep uart console power on for no_console_suspend */ + if (imx_con_rsrc == pd->rsrc && !console_suspend_enabled && !power_on) + return 0; + ret = imx_scu_call_rpc(pm_ipc_handle, &msg, true); if (ret) dev_err(&domain->dev, "failed to power %s resource %d ret %d\n",