From: Rain Yang <[email protected]>

Some platforms, such as i.MX95, utilize multiple power domains that need
to be attached explicitly. This patch ensures that the driver properly
attaches all available power domains using devm_pm_domain_attach_list().

Suggested-by: Boris Brezillon <[email protected]>
Suggested-by: Steven Price <[email protected]>
Signed-off-by: Prabhu Sundararaj <[email protected]>
Signed-off-by: Rain Yang <[email protected]>
---
 drivers/gpu/drm/panthor/panthor_device.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/gpu/drm/panthor/panthor_device.c 
b/drivers/gpu/drm/panthor/panthor_device.c
index f0b2da5b2b96..c39b9812eaa7 100644
--- a/drivers/gpu/drm/panthor/panthor_device.c
+++ b/drivers/gpu/drm/panthor/panthor_device.c
@@ -64,6 +64,16 @@ static int panthor_clk_init(struct panthor_device *ptdev)
        return 0;
 }
 
+static int panthor_init_power(struct device *dev)
+{
+       struct dev_pm_domain_list  *pd_list = NULL;
+
+       if (dev->pm_domain)
+               return 0;
+
+       return devm_pm_domain_attach_list(dev, NULL, &pd_list);
+}
+
 void panthor_device_unplug(struct panthor_device *ptdev)
 {
        /* This function can be called from two different path: the reset work
@@ -218,6 +228,12 @@ int panthor_device_init(struct panthor_device *ptdev)
        if (ret)
                return ret;
 
+       ret = panthor_init_power(ptdev->base.dev);
+       if (ret < 0) {
+               drm_err(&ptdev->base, "init power domains failed, ret=%d", ret);
+               return ret;
+       }
+
        ret = panthor_devfreq_init(ptdev);
        if (ret)
                return ret;
-- 
2.39.5

Reply via email to