summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugen Hristev <eugen.hristev@microchip.com>2021-02-02 11:47:58 +0300
committerEugen Hristev <eugen.hristev@microchip.com>2021-02-11 10:26:40 +0300
commit65bde1c087f847a2e279501e27eeaddba16e3b51 (patch)
tree3a705f2780f6d26f65a9732f377ab5ef7c2252b0
parent5dc68b07e75d4695a554b60135d70f1847885bd2 (diff)
downloadu-boot-65bde1c087f847a2e279501e27eeaddba16e3b51.tar.xz
clk: at91: compat: partially revert "dm: Remove uses of device_bind_offset()"
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>
-rw-r--r--drivers/clk/at91/compat.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/clk/at91/compat.c b/drivers/clk/at91/compat.c
index e514f26656..dfdc3a6a92 100644
--- a/drivers/clk/at91/compat.c
+++ b/drivers/clk/at91/compat.c
@@ -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;
}