imx: power-domain: Descend into pgc subnode if present
authorMarek Vasut <marex@denx.de>
Tue, 12 Apr 2022 22:42:49 +0000 (00:42 +0200)
committerStefano Babic <sbabic@denx.de>
Thu, 21 Apr 2022 10:44:23 +0000 (12:44 +0200)
In case the power domain node structure is gpc@303a0000/pgc/power-domain@N,
do not bind power domain driver to the 'pgc' node, but rather descend into
it and only bind power domain drivers to power-domain@N subnodes. This way
we do not waste one useless driver instance associated with 'pgc' node.

Tested-By: Tim Harvey <tharvey@gateworks.com> #imx8mp-venice-defconfig
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Stefano Babic <sbabic@denx.de>
drivers/power/domain/imx8m-power-domain.c

index 6082ee6ff8c96977a1ee5ade324c9aa81a0d0480..ac7411f83270b75e0d5e2087c67410734ae89d8e 100644 (file)
@@ -73,6 +73,12 @@ static int imx8m_power_domain_bind(struct udevice *dev)
                /* Bind the subnode to this driver */
                name = fdt_get_name(gd->fdt_blob, offset, NULL);
 
+               /* Descend into 'pgc' subnode */
+               if (!strstr(name, "power-domain")) {
+                       offset = fdt_first_subnode(gd->fdt_blob, offset);
+                       name = fdt_get_name(gd->fdt_blob, offset, NULL);
+               }
+
                ret = device_bind_with_driver_data(dev, dev->driver, name,
                                                   dev->driver_data,
                                                   offset_to_ofnode(offset),