]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
firmware: xilinx: Use of_genpd_sync_state()
authorUlf Hansson <ulf.hansson@linaro.org>
Tue, 1 Jul 2025 11:47:18 +0000 (13:47 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Wed, 9 Jul 2025 11:29:34 +0000 (13:29 +0200)
To make sure genpd tries to power off unused PM domains, let's call
of_genpd_sync_state() from our own ->sync_state() callback.

Cc: Michal Simek <michal.simek@amd.com>
Tested-by: Hiago De Franco <hiago.franco@toradex.com> # Colibri iMX8X
Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> # TI AM62A,Xilinx ZynqMP ZCU106
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Link: https://lore.kernel.org/r/20250701114733.636510-17-ulf.hansson@linaro.org
drivers/firmware/xilinx/zynqmp.c

index 87ddbb7d11c2704781803a289ddac86fcad47c1c..02da3e48bc8f35a292363be2e86d8b757a761264 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/of.h>
 #include <linux/of_platform.h>
 #include <linux/platform_device.h>
+#include <linux/pm_domain.h>
 #include <linux/slab.h>
 #include <linux/uaccess.h>
 #include <linux/hashtable.h>
@@ -2101,9 +2102,13 @@ static void zynqmp_firmware_remove(struct platform_device *pdev)
 
 static void zynqmp_firmware_sync_state(struct device *dev)
 {
-       if (!of_device_is_compatible(dev->of_node, "xlnx,zynqmp-firmware"))
+       struct device_node *np = dev->of_node;
+
+       if (!of_device_is_compatible(np, "xlnx,zynqmp-firmware"))
                return;
 
+       of_genpd_sync_state(np);
+
        if (zynqmp_pm_init_finalize())
                dev_warn(dev, "failed to release power management to firmware\n");
 }