pvr_power_domains_init() currently fails probe with -ENOENT when the
device tree node has no "power-domains" property. On some platforms
(e.g. SpacemiT K3) the GPU power domain is brought up by the bootloader
and is not modeled or managed by Linux, so there is legitimately no
power-domains phandle to attach.

Treat a missing "power-domains" property as "nothing to attach" and
continue probing, rather than failing.

Signed-off-by: Sterling-Ash <[email protected]>
---
 drivers/gpu/drm/imagination/pvr_power.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/imagination/pvr_power.c 
b/drivers/gpu/drm/imagination/pvr_power.c
index a71d5b35601e..5751e2d814b0 100644
--- a/drivers/gpu/drm/imagination/pvr_power.c
+++ b/drivers/gpu/drm/imagination/pvr_power.c
@@ -635,6 +635,15 @@ int pvr_power_domains_init(struct pvr_device *pvr_dev)
 
        domain_count = of_count_phandle_with_args(dev->of_node, "power-domains",
                                                  "#power-domain-cells");
+       if (domain_count == -ENOENT) {
+               /*
+                * No "power-domains" property in the device tree: the platform
+                * handles power domains transparently or at the 
firmware/bootloader level,
+                * so there is no domain to attach. Treat this as non-fatal.
+                */
+               err = 0;
+               goto out;
+       }
        if (domain_count < 0) {
                err = domain_count;
                goto out;
-- 
2.34.1

Reply via email to