]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
mtd: partitions: factor out code calling parser
authorBrian Norris <computersforpeace@gmail.com>
Tue, 23 May 2017 05:30:20 +0000 (07:30 +0200)
committerBrian Norris <computersforpeace@gmail.com>
Tue, 20 Jun 2017 19:59:23 +0000 (12:59 -0700)
This code is going to be reused for parsers matched using OF so let's
factor it out to make this easier.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Acked-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/mtdpart.c

index 2e152e53ace0f104a061601ac102062e695bd04e..7ececd3d7799341a9ab4879431a95b04702854d8 100644 (file)
@@ -807,6 +807,27 @@ static const char * const default_mtd_part_types[] = {
        NULL
 };
 
+static int mtd_part_do_parse(struct mtd_part_parser *parser,
+                            struct mtd_info *master,
+                            struct mtd_partitions *pparts,
+                            struct mtd_part_parser_data *data)
+{
+       int ret;
+
+       ret = (*parser->parse_fn)(master, &pparts->parts, data);
+       pr_debug("%s: parser %s: %i\n", master->name, parser->name, ret);
+       if (ret <= 0)
+               return ret;
+
+       pr_notice("%d %s partitions found on MTD device %s\n", ret,
+                 parser->name, master->name);
+
+       pparts->nr_parts = ret;
+       pparts->parser = parser;
+
+       return ret;
+}
+
 /**
  * parse_mtd_partitions - parse MTD partitions
  * @master: the master partition (describes whole MTD device)
@@ -847,16 +868,10 @@ int parse_mtd_partitions(struct mtd_info *master, const char *const *types,
                         parser ? parser->name : NULL);
                if (!parser)
                        continue;
-               ret = (*parser->parse_fn)(master, &pparts->parts, data);
-               pr_debug("%s: parser %s: %i\n",
-                        master->name, parser->name, ret);
-               if (ret > 0) {
-                       printk(KERN_NOTICE "%d %s partitions found on MTD device %s\n",
-                              ret, parser->name, master->name);
-                       pparts->nr_parts = ret;
-                       pparts->parser = parser;
+               ret = mtd_part_do_parse(parser, master, pparts, data);
+               /* Found partitions! */
+               if (ret > 0)
                        return 0;
-               }
                mtd_part_parser_put(parser);
                /*
                 * Stash the first error we see; only report it if no parser