diff --git a/target/linux/generic/pending-4.19/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch b/target/linux/generic/pending-4.19/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch deleted file mode 100644 index c82ea5ab56d..00000000000 --- a/target/linux/generic/pending-4.19/161-mtd-part-add-generic-parsing-of-linux-part-probe.patch +++ /dev/null @@ -1,172 +0,0 @@ -From: Hauke Mehrtens -Subject: mtd: part: add generic parsing of linux,part-probe - -This moves the linux,part-probe device tree parsing code from -physmap_of.c to mtdpart.c. Now all drivers can use this feature by just -providing a reference to their device tree node in struct -mtd_part_parser_data. - -THIS METHOD HAS BEEN DEPRECATED - -Linux supports "compatible" property in the "partitions" subnode now. It -should be used to specify partitions format (and trigger proper parser -usage) if needed. - -Signed-off-by: Hauke Mehrtens ---- - Documentation/devicetree/bindings/mtd/nand.txt | 16 +++++++++ - drivers/mtd/maps/physmap_of.c | 46 +------------------------- - drivers/mtd/mtdpart.c | 45 +++++++++++++++++++++++++ - 3 files changed, 62 insertions(+), 45 deletions(-) - ---- a/Documentation/devicetree/bindings/mtd/nand.txt -+++ b/Documentation/devicetree/bindings/mtd/nand.txt -@@ -49,6 +49,22 @@ Optional NAND chip properties: - - - nand-rb: shall contain the native Ready/Busy ids. - -+- linux,part-probe: list of name as strings of the partition parser -+ which should be used to parse the partition table. -+ They will be tried in the specified ordering and -+ the next one will be used if the previous one -+ failed. -+ -+ Example: linux,part-probe = "cmdlinepart", "ofpart"; -+ -+ This is also the default value, which will be used -+ if this attribute is not specified. It could be -+ that the flash driver in use overwrote the default -+ value and uses some other default. -+ -+ Possible values are: bcm47xxpart, afs, ar7part, -+ ofoldpart, ofpart, bcm63xxpart, RedBoot, cmdlinepart -+ - The ECC strength and ECC step size properties define the correction capability - of a controller. Together, they say a controller can correct "{strength} bit - errors per {size} bytes". ---- a/drivers/mtd/maps/physmap_of_core.c -+++ b/drivers/mtd/maps/physmap_of_core.c -@@ -115,37 +115,9 @@ static struct mtd_info *obsolete_probe(s - static const char * const part_probe_types_def[] = { - "cmdlinepart", "RedBoot", "ofpart", "ofoldpart", NULL }; - --static const char * const *of_get_probes(struct device_node *dp) --{ -- const char **res; -- int count; -- -- count = of_property_count_strings(dp, "linux,part-probe"); -- if (count < 0) -- return part_probe_types_def; -- -- res = kcalloc(count + 1, sizeof(*res), GFP_KERNEL); -- if (!res) -- return NULL; -- -- count = of_property_read_string_array(dp, "linux,part-probe", res, -- count); -- if (count < 0) -- return NULL; -- -- return res; --} -- --static void of_free_probes(const char * const *probes) --{ -- if (probes != part_probe_types_def) -- kfree(probes); --} -- - static const struct of_device_id of_flash_match[]; - static int of_flash_probe(struct platform_device *dev) - { -- const char * const *part_probe_types; - const struct of_device_id *match; - struct device_node *dp = dev->dev.of_node; - struct resource res; -@@ -316,14 +288,8 @@ static int of_flash_probe(struct platfor - - info->cmtd->dev.parent = &dev->dev; - mtd_set_of_node(info->cmtd, dp); -- part_probe_types = of_get_probes(dp); -- if (!part_probe_types) { -- err = -ENOMEM; -- goto err_out; -- } -- mtd_device_parse_register(info->cmtd, part_probe_types, NULL, -+ mtd_device_parse_register(info->cmtd, part_probe_types_def, NULL, - NULL, 0); -- of_free_probes(part_probe_types); - - kfree(mtd_list); - ---- a/drivers/mtd/mtdpart.c -+++ b/drivers/mtd/mtdpart.c -@@ -29,6 +29,7 @@ - #include - #include - #include -+#include - #include - #include - -@@ -796,6 +797,37 @@ void deregister_mtd_parser(struct mtd_pa - } - EXPORT_SYMBOL_GPL(deregister_mtd_parser); - -+#include -+ -+/* -+ * Parses the linux,part-probe device tree property. -+ * When a non null value is returned it has to be freed with kfree() by -+ * the caller. -+ */ -+static const char * const *of_get_probes(struct device_node *dp) -+{ -+ const char **res; -+ int count; -+ -+ count = of_property_count_strings(dp, "linux,part-probe"); -+ if (count < 0) -+ return NULL; -+ -+ res = kzalloc((count + 1) * sizeof(*res), GFP_KERNEL); -+ if (!res) -+ return NULL; -+ -+ count = of_property_read_string_array(dp, "linux,part-probe", res, -+ count); -+ if (count < 0) -+ return NULL; -+ -+ pr_warn("Support for the generic \"linux,part-probe\" has been deprecated and will be removed soon"); -+ BUILD_BUG_ON(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)); -+ -+ return res; -+} -+ - /* - * Do not forget to update 'parse_mtd_partitions()' kerneldoc comment if you - * are changing this array! -@@ -948,6 +980,13 @@ int parse_mtd_partitions(struct mtd_info - struct mtd_partitions pparts = { }; - struct mtd_part_parser *parser; - int ret, err = 0; -+ const char *const *types_of = NULL; -+ -+ if (mtd_get_of_node(master)) { -+ types_of = of_get_probes(mtd_get_of_node(master)); -+ if (types_of != NULL) -+ types = types_of; -+ } - - if (!types) - types = mtd_is_partition(master) ? default_subpartition_types : -@@ -989,6 +1028,7 @@ int parse_mtd_partitions(struct mtd_info - if (ret < 0 && !err) - err = ret; - } -+ kfree(types_of); - return err; - } - diff --git a/target/linux/generic/pending-4.19/400-mtd-add-rootfs-split-support.patch b/target/linux/generic/pending-4.19/400-mtd-add-rootfs-split-support.patch index c449fef0418..6fdd0267c11 100644 --- a/target/linux/generic/pending-4.19/400-mtd-add-rootfs-split-support.patch +++ b/target/linux/generic/pending-4.19/400-mtd-add-rootfs-split-support.patch @@ -37,12 +37,11 @@ Signed-off-by: Felix Fietkau depends on m --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -29,11 +29,13 @@ +@@ -29,10 +29,12 @@ #include #include #include +#include - #include #include #include @@ -51,7 +50,7 @@ Signed-off-by: Felix Fietkau /* Our partition linked list */ static LIST_HEAD(mtd_partitions); -@@ -53,6 +55,8 @@ struct mtd_part { +@@ -52,6 +54,8 @@ struct mtd_part { struct list_head list; }; @@ -60,7 +59,7 @@ Signed-off-by: Felix Fietkau /* * Given a pointer to the MTD object in the mtd_part structure, we can retrieve * the pointer to that structure. -@@ -620,6 +624,7 @@ int mtd_add_partition(struct mtd_info *p +@@ -619,6 +623,7 @@ int mtd_add_partition(struct mtd_info *p mutex_unlock(&mtd_partitions_mutex); add_mtd_device(&new->mtd); @@ -68,7 +67,7 @@ Signed-off-by: Felix Fietkau mtd_add_partition_attrs(new); -@@ -698,6 +703,29 @@ int mtd_del_partition(struct mtd_info *m +@@ -697,6 +702,29 @@ int mtd_del_partition(struct mtd_info *m } EXPORT_SYMBOL_GPL(mtd_del_partition); @@ -98,7 +97,7 @@ Signed-off-by: Felix Fietkau /* * This function, given a master MTD object and a partition table, creates * and registers slave MTD objects which are bound to the master according to -@@ -729,6 +757,7 @@ int add_mtd_partitions(struct mtd_info * +@@ -728,6 +756,7 @@ int add_mtd_partitions(struct mtd_info * mutex_unlock(&mtd_partitions_mutex); add_mtd_device(&slave->mtd); diff --git a/target/linux/generic/pending-4.19/401-mtd-add-support-for-different-partition-parser-types.patch b/target/linux/generic/pending-4.19/401-mtd-add-support-for-different-partition-parser-types.patch index a454b5cf7ad..d48447fb9ca 100644 --- a/target/linux/generic/pending-4.19/401-mtd-add-support-for-different-partition-parser-types.patch +++ b/target/linux/generic/pending-4.19/401-mtd-add-support-for-different-partition-parser-types.patch @@ -9,7 +9,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -56,6 +56,10 @@ struct mtd_part { +@@ -55,6 +55,10 @@ struct mtd_part { }; static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part); @@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos /* * Given a pointer to the MTD object in the mtd_part structure, we can retrieve -@@ -703,6 +707,36 @@ int mtd_del_partition(struct mtd_info *m +@@ -702,6 +706,36 @@ int mtd_del_partition(struct mtd_info *m } EXPORT_SYMBOL_GPL(mtd_del_partition); @@ -57,7 +57,7 @@ Signed-off-by: Gabor Juhos #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME #define SPLIT_FIRMWARE_NAME CONFIG_MTD_SPLIT_FIRMWARE_NAME #else -@@ -1077,6 +1111,61 @@ void mtd_part_parser_cleanup(struct mtd_ +@@ -1037,6 +1071,61 @@ void mtd_part_parser_cleanup(struct mtd_ } } diff --git a/target/linux/generic/pending-4.19/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch b/target/linux/generic/pending-4.19/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch index afe3ec77563..ca9b6c3594e 100644 --- a/target/linux/generic/pending-4.19/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch +++ b/target/linux/generic/pending-4.19/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -745,6 +745,7 @@ run_parsers_by_type(struct mtd_part *sla +@@ -744,6 +744,7 @@ run_parsers_by_type(struct mtd_part *sla static void split_firmware(struct mtd_info *master, struct mtd_part *part) { @@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos } static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part) -@@ -754,6 +755,12 @@ static void mtd_partition_split(struct m +@@ -753,6 +754,12 @@ static void mtd_partition_split(struct m if (rootfs_found) return; diff --git a/target/linux/generic/pending-4.19/404-mtd-add-more-helper-functions.patch b/target/linux/generic/pending-4.19/404-mtd-add-more-helper-functions.patch index f50d933e1bc..82c74e27a91 100644 --- a/target/linux/generic/pending-4.19/404-mtd-add-more-helper-functions.patch +++ b/target/linux/generic/pending-4.19/404-mtd-add-more-helper-functions.patch @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -1190,6 +1190,24 @@ int mtd_is_partition(const struct mtd_in +@@ -1150,6 +1150,24 @@ int mtd_is_partition(const struct mtd_in } EXPORT_SYMBOL_GPL(mtd_is_partition); diff --git a/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch b/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch index 978d6a6f7ba..0b5e4005ff4 100644 --- a/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch +++ b/target/linux/generic/pending-4.19/411-mtd-partial_eraseblock_write.patch @@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -37,6 +37,8 @@ +@@ -36,6 +36,8 @@ #include "mtdcore.h" #include "mtdsplit/mtdsplit.h" @@ -19,7 +19,7 @@ Signed-off-by: Felix Fietkau /* Our partition linked list */ static LIST_HEAD(mtd_partitions); static DEFINE_MUTEX(mtd_partitions_mutex); -@@ -221,6 +223,53 @@ static int part_erase(struct mtd_info *m +@@ -220,6 +222,53 @@ static int part_erase(struct mtd_info *m { struct mtd_part *part = mtd_to_part(mtd); int ret; @@ -73,7 +73,7 @@ Signed-off-by: Felix Fietkau instr->addr += part->offset; ret = part->parent->_erase(part->parent, instr); -@@ -228,6 +277,24 @@ static int part_erase(struct mtd_info *m +@@ -227,6 +276,24 @@ static int part_erase(struct mtd_info *m instr->fail_addr -= part->offset; instr->addr -= part->offset; @@ -98,7 +98,7 @@ Signed-off-by: Felix Fietkau return ret; } -@@ -536,19 +603,22 @@ static struct mtd_part *allocate_partiti +@@ -535,19 +602,22 @@ static struct mtd_part *allocate_partiti remainder = do_div(tmp, wr_alignment); if ((slave->mtd.flags & MTD_WRITEABLE) && remainder) { /* Doesn't start on a boundary of major erase size */ diff --git a/target/linux/generic/pending-4.19/412-mtd-partial_eraseblock_unlock.patch b/target/linux/generic/pending-4.19/412-mtd-partial_eraseblock_unlock.patch index e038c4e60c0..a54603a0f89 100644 --- a/target/linux/generic/pending-4.19/412-mtd-partial_eraseblock_unlock.patch +++ b/target/linux/generic/pending-4.19/412-mtd-partial_eraseblock_unlock.patch @@ -20,7 +20,7 @@ Signed-off-by: Tim Harvey --- a/drivers/mtd/mtdpart.c +++ b/drivers/mtd/mtdpart.c -@@ -307,7 +307,16 @@ static int part_lock(struct mtd_info *mt +@@ -306,7 +306,16 @@ static int part_lock(struct mtd_info *mt static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len) { struct mtd_part *part = mtd_to_part(mtd);