firmware: imx: scu-pd: ignore power domain not owned
authorPeng Fan <peng.fan@nxp.com>
Tue, 8 Sep 2020 10:07:01 +0000 (18:07 +0800)
committerShawn Guo <shawnguo@kernel.org>
Sun, 13 Sep 2020 01:45:53 +0000 (09:45 +0800)
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>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
drivers/firmware/imx/scu-pd.c

index af3d6d9ead28c1809667c6df3a79674cb995344c..946eea292b52fde6068c7414537ae49bc9eb78f5 100644 (file)
@@ -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);