brcm47xx: drop 3.14
[openwrt/staging/luka.git] / target / linux / generic / patches-3.14 / 402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
index 92a3ee7633ff1c1ff79f743def618de9c6f03194..6eef4cb093c56d3a2edbd026e90cf91e993a7a51 100644 (file)
 +      return nr_parts;
 +}
 +
- static inline unsigned long
- mtd_pad_erasesize(struct mtd_info *mtd, int offset, int len)
+ #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #define SPLIT_FIRMWARE_NAME   CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #else
+@@ -636,6 +667,7 @@ EXPORT_SYMBOL_GPL(mtd_del_partition);
+ static void split_firmware(struct mtd_info *master, struct mtd_part *part)
  {
-@@ -660,6 +691,10 @@ static void split_rootfs_data(struct mtd
-       unsigned int split_size;
-       int ret;
++      run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
+ }
  
-+      ret = run_parsers_by_type(part, MTD_PARSER_TYPE_ROOTFS);
-+      if (ret > 0)
-+              return;
-+
-       ret = split_squashfs(master, part->offset, &split_offset);
-       if (ret)
+ void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,
+@@ -650,6 +682,12 @@ static void mtd_partition_split(struct m
+       if (rootfs_found)
                return;
-@@ -709,6 +744,12 @@ static void split_uimage(struct mtd_info
  
- static void split_firmware(struct mtd_info *master, struct mtd_part *part)
- {
-+      int ret;
++      if (!strcmp(part->mtd.name, "rootfs")) {
++              run_parsers_by_type(part, MTD_PARSER_TYPE_ROOTFS);
 +
-+      ret = run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
-+      if (ret > 0)
-+              return;
++              rootfs_found = 1;
++      }
 +
-       if (config_enabled(CONFIG_MTD_UIMAGE_SPLIT))
-               split_uimage(master, part);
- }
+       if (!strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) &&
+           config_enabled(CONFIG_MTD_SPLIT_FIRMWARE))
+               split_firmware(master, part);
 --- a/include/linux/mtd/partitions.h
 +++ b/include/linux/mtd/partitions.h
 @@ -70,6 +70,8 @@ struct mtd_part_parser_data {