
Hi Jens and Simon,
čt 23. 8. 2018 v 12:43 odesílatel Jens Wiklander jens.wiklander@linaro.org napsal:
Just as /chosen may contain devices /firmware may contain devices, scan for devices under /firmware too.
Signed-off-by: Jens Wiklander jens.wiklander@linaro.org
drivers/core/root.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/core/root.c b/drivers/core/root.c index 72bcc7d7f2a3..0dca507e1187 100644 --- a/drivers/core/root.c +++ b/drivers/core/root.c @@ -265,9 +265,15 @@ static int dm_scan_fdt_node(struct udevice *parent, const void *blob, for (offset = fdt_first_subnode(blob, offset); offset > 0; offset = fdt_next_subnode(blob, offset)) {
/* "chosen" node isn't a device itself but may contain some: */
if (!strcmp(fdt_get_name(blob, offset, NULL), "chosen")) {
pr_debug("parsing subnodes of \"chosen\"\n");
const char *node_name = fdt_get_name(blob, offset, NULL);
/*
* The "chosen" and "firmware" nodes aren't devices
* themselves but may contain some:
*/
if (!strcmp(node_name, "chosen") ||
!strcmp(node_name, "firmware")) {
pr_debug("parsing subnodes of \"%s\"\n", node_name); err = dm_scan_fdt_node(parent, blob, offset, pre_reloc_only);
@@ -286,8 +292,7 @@ static int dm_scan_fdt_node(struct udevice *parent, const void *blob, err = lists_bind_fdt(parent, offset_to_ofnode(offset), NULL); if (err && !ret) { ret = err;
debug("%s: ret=%d\n", fdt_get_name(blob, offset, NULL),
ret);
debug("%s: ret=%d\n", node_name, ret); } }
-- 2.17.1
I have debug issue which I see on ZynqMP that firmware nodes are listed in dm tree twice. I was caused by this patch.
firmware 1 [ + ] zynqmp-firmware |-- zynqmp-firmware firmware 2 [ + ] zynqmp-power | `-- zynqmp-power .... firmware 3 [ ] zynqmp-firmware `-- zynqmp-firmware firmware 4 [ ] zynqmp-power `-- zynqmp-power
On ZynqMP firmware node needs to be populated early that's why u-boot,dm-pre-reloc flag is used. That's why I am curious how to fix this. Revert this patch or add flags to Jens case or do more checking to avoid creating duplicated entries of nodes present in firmware node.
Thanks, Michal