]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
clk: at91: compat: partially revert "dm: Remove uses of device_bind_offset()"
authorEugen Hristev <eugen.hristev@microchip.com>
Tue, 2 Feb 2021 08:47:58 +0000 (10:47 +0200)
committerEugen Hristev <eugen.hristev@microchip.com>
Thu, 11 Feb 2021 07:26:40 +0000 (09:26 +0200)
Revert changes in at91 compat.c that cause u-boot to fail booting on
sama5d4_xplained and sama5d2_xplained

Log below:

<debug_uart>
No serial driver found
Could not initialize timer (err -19)

Could not initialize timer (err -19)

Could not initialize timer (err -19)

Could not initialize timer (err -19)

Could not initialize timer (err -19)

Could not initialize timer (err -19)

Could not initialize timer (err -19)

Could not initialize timer (err -19)

Fixes: a2703ce10c ("dm: Remove uses of device_bind_offset()")
Cc: Simon Glass <sjg@chromium.org>
Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/clk/at91/compat.c

index e514f26656e215dde31126e12e768797774b525f..dfdc3a6a9275c8a9ef23519a90e8b42b97a44799 100644 (file)
@@ -62,30 +62,34 @@ static int at91_pmc_core_probe(struct udevice *dev)
  */
 int at91_clk_sub_device_bind(struct udevice *dev, const char *drv_name)
 {
-       ofnode parent = dev_ofnode(dev);
-       ofnode node;
+       const void *fdt = gd->fdt_blob;
+       int offset = dev_of_offset(dev);
        bool pre_reloc_only = !(gd->flags & GD_FLG_RELOC);
        const char *name;
        int ret;
 
-       ofnode_for_each_subnode(node, parent) {
-               if (pre_reloc_only && !ofnode_pre_reloc(node))
+       for (offset = fdt_first_subnode(fdt, offset);
+            offset > 0;
+            offset = fdt_next_subnode(fdt, offset)) {
+               if (pre_reloc_only &&
+                   !ofnode_pre_reloc(offset_to_ofnode(offset)))
                        continue;
                /*
                 * If this node has "compatible" property, this is not
                 * a clock sub-node, but a normal device. skip.
                 */
-               if (ofnode_read_prop(node, "compatible", NULL))
+               fdt_get_property(fdt, offset, "compatible", &ret);
+               if (ret >= 0)
                        continue;
 
                if (ret != -FDT_ERR_NOTFOUND)
                        return ret;
 
-               name = ofnode_get_name(node);
+               name = fdt_get_name(fdt, offset, NULL);
                if (!name)
                        return -EINVAL;
-               ret = device_bind_driver_to_node(dev, drv_name, name, node,
-                                                NULL);
+               ret = device_bind_driver_to_node(dev, drv_name, name,
+                                       offset_to_ofnode(offset), NULL);
                if (ret)
                        return ret;
        }