OSDN Git Service

mtd: core: simplify (a bit) code find partition-matching dynamic OF node
authorRafał Miłecki <rafal@milecki.pl>
Tue, 4 Oct 2022 08:37:09 +0000 (10:37 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 7 Nov 2022 16:06:30 +0000 (17:06 +0100)
1. Don't hardcode "partition-" string twice
2. Use simpler logic & use ->name to avoid of_property_read_string()
3. Use mtd_get_of_node() helper

Cc: Christian Marangi <ansuelsmth@gmail.com>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20221004083710.27704-1-zajec5@gmail.com
drivers/mtd/mtdcore.c

index 0b4ca0a..6ad62ff 100644 (file)
@@ -551,18 +551,17 @@ static void mtd_check_of_node(struct mtd_info *mtd)
        struct device_node *partitions, *parent_dn, *mtd_dn = NULL;
        const char *pname, *prefix = "partition-";
        int plen, mtd_name_len, offset, prefix_len;
-       struct mtd_info *parent;
        bool found = false;
 
        /* Check if MTD already has a device node */
-       if (dev_of_node(&mtd->dev))
+       if (mtd_get_of_node(mtd))
                return;
 
        /* Check if a partitions node exist */
        if (!mtd_is_partition(mtd))
                return;
-       parent = mtd->parent;
-       parent_dn = of_node_get(dev_of_node(&parent->dev));
+
+       parent_dn = of_node_get(mtd_get_of_node(mtd->parent));
        if (!parent_dn)
                return;
 
@@ -575,15 +574,15 @@ static void mtd_check_of_node(struct mtd_info *mtd)
 
        /* Search if a partition is defined with the same name */
        for_each_child_of_node(partitions, mtd_dn) {
-               offset = 0;
-
                /* Skip partition with no/wrong prefix */
-               if (!of_node_name_prefix(mtd_dn, "partition-"))
+               if (!of_node_name_prefix(mtd_dn, prefix))
                        continue;
 
                /* Label have priority. Check that first */
-               if (of_property_read_string(mtd_dn, "label", &pname)) {
-                       of_property_read_string(mtd_dn, "name", &pname);
+               if (!of_property_read_string(mtd_dn, "label", &pname)) {
+                       offset = 0;
+               } else {
+                       pname = mtd_dn->name;
                        offset = prefix_len;
                }