]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
common: fdt_support: add support for "partitions" subnode to fdt_fixup_mtdparts()
authorMatthias Schiffer <matthias.schiffer@ew.tq-group.com>
Thu, 3 Feb 2022 14:14:47 +0000 (15:14 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 11 Feb 2022 14:00:47 +0000 (09:00 -0500)
Listing MTD partitions directly in the flash mode has been deprecated
for a while for kernel Device Trees. Look for a node "partitions" in the
found flash nodes and use it instead of the flash node itself for the
partition list when it exists, so Device Trees following the current
best practices can be fixed up.

Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
common/fdt_support.c

index daa24d4c10bc8f14c296ed27afe242548e552c67..ea18ea3f0451d8c960fa84cfb9f0305523ad9b3c 100644 (file)
@@ -988,7 +988,7 @@ void fdt_fixup_mtdparts(void *blob, const struct node_info *node_info,
 {
        struct mtd_device *dev;
        int i, idx;
-       int noff;
+       int noff, parts;
        bool inited = false;
 
        for (i = 0; i < node_info_size; i++) {
@@ -1014,7 +1014,12 @@ void fdt_fixup_mtdparts(void *blob, const struct node_info *node_info,
 
                        dev = device_find(node_info[i].type, idx++);
                        if (dev) {
-                               if (fdt_node_set_part_info(blob, noff, dev))
+                               parts = fdt_subnode_offset(blob, noff,
+                                                          "partitions");
+                               if (parts < 0)
+                                       parts = noff;
+
+                               if (fdt_node_set_part_info(blob, parts, dev))
                                        return; /* return on error */
                        }
                }