clk and pinctrl will be get(probed) during each device probe,
we don't need to probe them in scu driver. Only need to bind the sub-nodes
(clk and iomuxc) of MU node with their drivers.

So drop the code to probe the clk/pinctrl, and this patch will make it
easy to add more subnodes.

Signed-off-by: Peng Fan <peng....@nxp.com>
---
 drivers/misc/imx8/scu.c | 46 +++++++---------------------------------------
 1 file changed, 7 insertions(+), 39 deletions(-)

diff --git a/drivers/misc/imx8/scu.c b/drivers/misc/imx8/scu.c
index 9ec00457b8..a7654a7817 100644
--- a/drivers/misc/imx8/scu.c
+++ b/drivers/misc/imx8/scu.c
@@ -26,8 +26,6 @@ struct mu_type {
 
 struct imx8_scu {
        struct mu_type *base;
-       struct udevice *clk;
-       struct udevice *pinclk;
 };
 
 #define MU_CR_GIE_MASK         0xF0000000u
@@ -202,9 +200,6 @@ static int imx8_scu_probe(struct udevice *dev)
 
        gd->arch.scu_dev = dev;
 
-       device_probe(plat->clk);
-       device_probe(plat->pinclk);
-
        return 0;
 }
 
@@ -215,44 +210,17 @@ static int imx8_scu_remove(struct udevice *dev)
 
 static int imx8_scu_bind(struct udevice *dev)
 {
-       struct imx8_scu *plat = dev_get_platdata(dev);
        int ret;
        struct udevice *child;
-       int node;
-       char *clk_compatible, *iomuxc_compatible;
-
-       if (IS_ENABLED(CONFIG_IMX8QXP)) {
-               clk_compatible = "fsl,imx8qxp-clk";
-               iomuxc_compatible = "fsl,imx8qxp-iomuxc";
-       } else if (IS_ENABLED(CONFIG_IMX8QM)) {
-               clk_compatible = "fsl,imx8qm-clk";
-               iomuxc_compatible = "fsl,imx8qm-iomuxc";
-       } else {
-               return -EINVAL;
-       }
+       ofnode node;
 
        debug("%s(dev=%p)\n", __func__, dev);
-
-       node = fdt_node_offset_by_compatible(gd->fdt_blob, -1, clk_compatible);
-       if (node < 0)
-               panic("No clk node found\n");
-
-       ret = lists_bind_fdt(dev, offset_to_ofnode(node), &child, true);
-       if (ret)
-               return ret;
-
-       plat->clk = child;
-
-       node = fdt_node_offset_by_compatible(gd->fdt_blob, -1,
-                                            iomuxc_compatible);
-       if (node < 0)
-               panic("No iomuxc node found\n");
-
-       ret = lists_bind_fdt(dev, offset_to_ofnode(node), &child, true);
-       if (ret)
-               return ret;
-
-       plat->pinclk = child;
+       ofnode_for_each_subnode(node, dev_ofnode(dev)) {
+               ret = lists_bind_fdt(dev, node, &child, true);
+               if (ret)
+                       return ret;
+               debug("bind child dev %s\n", child->name);
+       }
 
        return 0;
 }
-- 
2.16.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to