diff mbox series

firmware: imx: scu-pd: ignore power domain not owned

Message ID 1599559621-1397-1-git-send-email-peng.fan@nxp.com (mailing list archive)
State New, archived
Headers show
Series firmware: imx: scu-pd: ignore power domain not owned | expand

Commit Message

Peng Fan Sept. 8, 2020, 10:07 a.m. UTC
From: Peng Fan <peng.fan@nxp.com>

Should not register power domain that not owned by current
partition.

Alought power domains will not be registered when power on failure,
we have to let CPU waste more cycles.

Whether power on or owned check, both need communicate with SCU,
but with owned check, we no need to run more code path to save CPU
cycles.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 drivers/firmware/imx/scu-pd.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Shawn Guo Sept. 13, 2020, 1:46 a.m. UTC | #1
On Tue, Sep 08, 2020 at 06:07:01PM +0800, peng.fan@nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Should not register power domain that not owned by current
> partition.
> 
> Alought power domains will not be registered when power on failure,
> we have to let CPU waste more cycles.
> 
> Whether power on or owned check, both need communicate with SCU,
> but with owned check, we no need to run more code path to save CPU
> cycles.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> Reviewed-by: Leonard Crestez <leonard.crestez@nxp.com>

Applied, thanks.
diff mbox series

Patch

diff --git a/drivers/firmware/imx/scu-pd.c b/drivers/firmware/imx/scu-pd.c
index af3d6d9ead28..946eea292b52 100644
--- a/drivers/firmware/imx/scu-pd.c
+++ b/drivers/firmware/imx/scu-pd.c
@@ -46,6 +46,7 @@ 
 
 #include <dt-bindings/firmware/imx/rsrc.h>
 #include <linux/firmware/imx/sci.h>
+#include <linux/firmware/imx/svc/rm.h>
 #include <linux/io.h>
 #include <linux/module.h>
 #include <linux/of.h>
@@ -256,6 +257,9 @@  imx_scu_add_pm_domain(struct device *dev, int idx,
 	struct imx_sc_pm_domain *sc_pd;
 	int ret;
 
+	if (!imx_sc_rm_is_resource_owned(pm_ipc_handle, pd_ranges->rsrc + idx))
+		return NULL;
+
 	sc_pd = devm_kzalloc(dev, sizeof(*sc_pd), GFP_KERNEL);
 	if (!sc_pd)
 		return ERR_PTR(-ENOMEM);