diff options
author | Rafał Miłecki <rafal@milecki.pl> | 2018-03-14 15:07:03 +0100 |
---|---|---|
committer | Rafał Miłecki <rafal@milecki.pl> | 2018-03-14 15:13:39 +0100 |
commit | ac9bcefa3b044bf556af37a4c6b06e350a3d43c2 (patch) | |
tree | 3a685a97b0ca45a50ae947b312061b5c1f326080 /target/linux/generic/pending-4.14/160-mtd-part-add-generic-parsing-of-linux-part-probe.patch | |
parent | d88e928a44725de6026859cca4248ccd5848f1c3 (diff) | |
download | mtk-20170518-ac9bcefa3b044bf556af37a4c6b06e350a3d43c2.zip mtk-20170518-ac9bcefa3b044bf556af37a4c6b06e350a3d43c2.tar.gz mtk-20170518-ac9bcefa3b044bf556af37a4c6b06e350a3d43c2.tar.bz2 |
kernel: use V10 of mtd patchset adding support for "compatible" string
In the commit bde5e7a632ef0 ("kernel: backport mtd implementation for
"compatible" in "partitions" subnode") patches that got accepted into
l2-mtd.git were backported to the kernels 4.9 and 4.14. Unfortunately
there was a regression report, patches were dropped and never reached
4.16.
This commit replaces these pseudo-backports with the latest version
that includes regression fix and futher changes that were requested.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Diffstat (limited to 'target/linux/generic/pending-4.14/160-mtd-part-add-generic-parsing-of-linux-part-probe.patch')
-rw-r--r-- | target/linux/generic/pending-4.14/160-mtd-part-add-generic-parsing-of-linux-part-probe.patch | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/target/linux/generic/pending-4.14/160-mtd-part-add-generic-parsing-of-linux-part-probe.patch b/target/linux/generic/pending-4.14/160-mtd-part-add-generic-parsing-of-linux-part-probe.patch deleted file mode 100644 index e57214b..0000000 --- a/target/linux/generic/pending-4.14/160-mtd-part-add-generic-parsing-of-linux-part-probe.patch +++ /dev/null @@ -1,161 +0,0 @@ -From: Hauke Mehrtens <hauke@hauke-m.de> -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. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> ---- - 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 -@@ -44,6 +44,22 @@ Optional NAND chip properties: - used by the upper layers, and you want to make your NAND - as reliable as possible. - -+- 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 -@@ -114,37 +114,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 = 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; -- -- 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; -@@ -310,14 +282,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 <linux/kmod.h> - #include <linux/mtd/mtd.h> - #include <linux/mtd/partitions.h> -+#include <linux/of.h> - #include <linux/err.h> - #include <linux/of.h> - -@@ -864,6 +865,32 @@ void deregister_mtd_parser(struct mtd_pa - EXPORT_SYMBOL_GPL(deregister_mtd_parser); - - /* -+ * 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; -+ -+ return res; -+} -+ -+/* - * Do not forget to update 'parse_mtd_partitions()' kerneldoc comment if you - * are changing this array! - */ -@@ -963,6 +990,13 @@ int parse_mtd_partitions(struct mtd_info - struct property *prop; - const char *compat; - 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; -+ } - - np = of_get_child_by_name(mtd_get_of_node(master), "partitions"); - of_property_for_each_string(np, "compatible", prop, compat) { -@@ -1004,6 +1038,7 @@ int parse_mtd_partitions(struct mtd_info - if (ret < 0 && !err) - err = ret; - } -+ kfree(types_of); - return err; - } - |