dm: fdt: scan for devices under /firmware too
authorJens Wiklander <jens.wiklander@linaro.org>
Tue, 25 Sep 2018 14:40:05 +0000 (16:40 +0200)
committerTom Rini <trini@konsulko.com>
Sun, 7 Oct 2018 14:47:38 +0000 (10:47 -0400)
Just as /chosen may contain devices /firmware may contain devices, scan
for devices under /firmware too.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
drivers/core/root.c

index 47d10b8..b54bf5b 100644 (file)
@@ -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);
                }
        }