OpenWrt – Rev 1

Subversion Repositories:
Rev:
From e1b9d122030220d8b8176d9e23568e26fa2f9d23 Mon Sep 17 00:00:00 2001
From: Linus Walleij <linus.walleij@linaro.org>
Date: Fri, 19 Oct 2018 08:56:41 +0200
Subject: [PATCH 10/18] mtd: partitions: Add second compatible for redboot

Simple backport of the upstream redboot partition table
bindings that are used in the mainline Linux kernel.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/mtd/redboot.c | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

--- a/drivers/mtd/redboot.c
+++ b/drivers/mtd/redboot.c
@@ -25,7 +25,7 @@
 #include <linux/slab.h>
 #include <linux/init.h>
 #include <linux/vmalloc.h>
-
+#include <linux/of.h>
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/partitions.h>
 #include <linux/module.h>
@@ -56,6 +56,31 @@ static inline int redboot_checksum(struc
        return 1;
 }
 
+#ifdef CONFIG_OF
+static void parse_redboot_of(struct mtd_info *master)
+{
+       struct device_node *np;
+       u32 dirblock;
+       int ret;
+
+       np = mtd_get_of_node(master);
+       if (!np)
+               return;
+       ret = of_property_read_u32(np, "fis-index-block", &dirblock);
+       if (ret)
+               return;
+       /*
+        * Assign the block found in the device tree to the local
+        * directory block pointer.
+        */
+       directory = dirblock;
+}
+#else
+static void parse_redboot_of(struct mtd_info *master)
+{
+}
+#endif
+
 static int parse_redboot_partitions(struct mtd_info *master,
                                    const struct mtd_partition **pparts,
                                    struct mtd_part_parser_data *data)
@@ -75,6 +100,7 @@ static int parse_redboot_partitions(stru
 #ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
        static char nullstring[] = "unallocated";
 #endif
+       parse_redboot_of(master);
 
        if ( directory < 0 ) {
                offset = master->size + directory * master->erasesize;
@@ -298,6 +324,7 @@ static int parse_redboot_partitions(stru
 
 static const struct of_device_id redboot_parser_of_match_table[] = {
        { .compatible = "ecoscentric,redboot-fis-partitions" },
+       { .compatible = "redboot-fis" },
        {},
 };
 MODULE_DEVICE_TABLE(of, redboot_parser_of_match_table);