aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/gemini/patches-4.19/0010-mtd-partitions-Add-second-compatible-for-redboot.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/gemini/patches-4.19/0010-mtd-partitions-Add-second-compatible-for-redboot.patch')
-rw-r--r--target/linux/gemini/patches-4.19/0010-mtd-partitions-Add-second-compatible-for-redboot.patch77
1 files changed, 77 insertions, 0 deletions
diff --git a/target/linux/gemini/patches-4.19/0010-mtd-partitions-Add-second-compatible-for-redboot.patch b/target/linux/gemini/patches-4.19/0010-mtd-partitions-Add-second-compatible-for-redboot.patch
new file mode 100644
index 0000000000..451ba3af8b
--- /dev/null
+++ b/target/linux/gemini/patches-4.19/0010-mtd-partitions-Add-second-compatible-for-redboot.patch
@@ -0,0 +1,77 @@
+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(-)
+
+diff --git a/drivers/mtd/redboot.c b/drivers/mtd/redboot.c
+index fe3df7437483..e9c21579ba35 100644
+--- 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(struct fis_image_desc *img)
+ 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(struct mtd_info *master,
+ #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(struct mtd_info *master,
+
+ 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);
+--
+2.19.2
+