]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
firmware: zynqmp: Load config overlay for core0 to pmufw
authorAshok Reddy Soma <ashok.reddy.soma@xilinx.com>
Fri, 22 Jul 2022 08:46:55 +0000 (02:46 -0600)
committerMichal Simek <michal.simek@amd.com>
Tue, 26 Jul 2022 06:36:10 +0000 (08:36 +0200)
Try loading pmufw config overlay for core0, if it doesn't return any
error it means pmufw is accepting nodes for other IP's. Otherwise dont
try to load config object for any other IP, just return from
zynqmp_pmufw_node function.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/20220722084658.30995-3-ashok.reddy.soma@xilinx.com
drivers/firmware/firmware-zynqmp.c

index 325e4ddea6d2064b3c951574502563b222c3abc5..76ddc6b4f40419674111e09a4f20a2a84375ca9e 100644 (file)
@@ -70,11 +70,20 @@ int zynqmp_pmufw_config_close(void)
 
 int zynqmp_pmufw_node(u32 id)
 {
+       static bool skip_config;
+       int ret;
+
+       if (skip_config)
+               return 0;
+
        /* Record power domain id */
        xpm_configobject[NODE_ID_LOCATION] = id;
 
-       zynqmp_pmufw_load_config_object(xpm_configobject,
-                                       sizeof(xpm_configobject));
+       ret = zynqmp_pmufw_load_config_object(xpm_configobject,
+                                             sizeof(xpm_configobject));
+
+       if (ret && id == NODE_APU_0)
+               skip_config = true;
 
        return 0;
 }
@@ -284,6 +293,9 @@ static int zynqmp_power_probe(struct udevice *dev)
               ret >> ZYNQMP_PM_VERSION_MAJOR_SHIFT,
               ret & ZYNQMP_PM_VERSION_MINOR_MASK);
 
+       if (IS_ENABLED(CONFIG_ARCH_ZYNQMP))
+               zynqmp_pmufw_node(NODE_APU_0);
+
        return 0;
 };