kernel: move old firmware uimage splitter into separated patch
authorRafał Miłecki <zajec5@gmail.com>
Sat, 13 Dec 2014 20:06:47 +0000 (20:06 +0000)
committerRafał Miłecki <zajec5@gmail.com>
Sat, 13 Dec 2014 20:06:47 +0000 (20:06 +0000)
This will allow us to drop it in the future. This patch doesn't change
the final mtdpart.c, it remains the same.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 43696

14 files changed:
target/linux/generic/patches-3.14/400-mtd-add-rootfs-split-support.patch
target/linux/generic/patches-3.14/401-mtd-add-support-for-different-partition-parser-types.patch
target/linux/generic/patches-3.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
target/linux/generic/patches-3.14/403-mtd-hook-mtdsplit-to-Kbuild.patch
target/linux/generic/patches-3.14/405-mtd-add-more-helper-functions.patch
target/linux/generic/patches-3.14/406-mtd-hook-mtdsplit-into-Kbuild.patch
target/linux/generic/patches-3.14/407-mtd-old-firmware-uimage-splitter.patch [new file with mode: 0644]
target/linux/generic/patches-3.18/400-mtd-add-rootfs-split-support.patch
target/linux/generic/patches-3.18/401-mtd-add-support-for-different-partition-parser-types.patch
target/linux/generic/patches-3.18/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
target/linux/generic/patches-3.18/403-mtd-hook-mtdsplit-to-Kbuild.patch
target/linux/generic/patches-3.18/405-mtd-add-more-helper-functions.patch
target/linux/generic/patches-3.18/406-mtd-hook-mtdsplit-into-Kbuild.patch
target/linux/generic/patches-3.18/407-mtd-old-firmware-uimage-splitter.patch [new file with mode: 0644]

index ede59104b3cca8f8a791ed848d01fc0db7e5a5e8..5ffacaf6424ad3ffd1b62ef44f2a2127f33c2dac 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -12,6 +12,28 @@ menuconfig MTD
+@@ -12,6 +12,23 @@ menuconfig MTD
  
  if MTD
  
 +      depends on MTD_SPLIT_FIRMWARE
 +      default "firmware"
 +
-+config MTD_UIMAGE_SPLIT
-+      bool "Enable split support for firmware partitions containing a uImage"
-+      depends on MTD_SPLIT_FIRMWARE
-+      default y
-+
 +endmenu
 +
  config MTD_TESTS
  int mtd_del_partition(struct mtd_info *master, int partno)
  {
        struct mtd_part *slave, *next;
-@@ -614,6 +628,74 @@ int mtd_del_partition(struct mtd_info *m
+@@ -614,6 +628,35 @@ int mtd_del_partition(struct mtd_info *m
  }
  EXPORT_SYMBOL_GPL(mtd_del_partition);
  
-+static inline unsigned long
-+mtd_pad_erasesize(struct mtd_info *mtd, int offset, int len)
-+{
-+      unsigned long mask = mtd->erasesize - 1;
-+
-+      len += offset & mask;
-+      len = (len + mask) & ~mask;
-+      len -= offset & mask;
-+      return len;
-+}
-+
-+#define UBOOT_MAGIC   0x27051956
-+
-+static void split_uimage(struct mtd_info *master, struct mtd_part *part)
-+{
-+      struct {
-+              __be32 magic;
-+              __be32 pad[2];
-+              __be32 size;
-+      } hdr;
-+      size_t len;
-+
-+      if (mtd_read(master, part->offset, sizeof(hdr), &len, (void *) &hdr))
-+              return;
-+
-+      if (len != sizeof(hdr) || hdr.magic != cpu_to_be32(UBOOT_MAGIC))
-+              return;
-+
-+      len = be32_to_cpu(hdr.size) + 0x40;
-+      len = mtd_pad_erasesize(master, part->offset, len);
-+      if (len + master->erasesize > part->mtd.size)
-+              return;
-+
-+      __mtd_add_partition(master, "rootfs", part->offset + len,
-+                          part->mtd.size - len, false);
-+}
-+
 +#ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
 +#define SPLIT_FIRMWARE_NAME   CONFIG_MTD_SPLIT_FIRMWARE_NAME
 +#else
 +
 +static void split_firmware(struct mtd_info *master, struct mtd_part *part)
 +{
-+      if (config_enabled(CONFIG_MTD_UIMAGE_SPLIT))
-+              split_uimage(master, part);
 +}
 +
 +void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,
  /*
   * 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
-@@ -643,6 +725,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -643,6 +686,7 @@ int add_mtd_partitions(struct mtd_info *
                mutex_unlock(&mtd_partitions_mutex);
  
                add_mtd_device(&slave->mtd);
index d996b60eb5f655d37bf2176b3d6761fd3585fdce..cf3502411996054dae4f25ab7832af98978ffb4f 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -755,6 +755,30 @@ static struct mtd_part_parser *get_parti
+@@ -716,6 +716,30 @@ static struct mtd_part_parser *get_parti
  
  #define put_partition_parser(p) do { module_put((p)->owner); } while (0)
  
@@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  void register_mtd_parser(struct mtd_part_parser *p)
  {
        spin_lock(&part_parser_lock);
-@@ -828,6 +852,38 @@ int parse_mtd_partitions(struct mtd_info
+@@ -789,6 +813,38 @@ int parse_mtd_partitions(struct mtd_info
        return ret;
  }
  
index 242d9576674c8bde01694fbb36d3c267bbfaa4db..6eef4cb093c56d3a2edbd026e90cf91e993a7a51 100644 (file)
 +      return nr_parts;
 +}
 +
- static inline unsigned long
- mtd_pad_erasesize(struct mtd_info *mtd, int offset, int len)
- {
-@@ -673,6 +704,12 @@ static void split_uimage(struct mtd_info
+ #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)
  {
-+      int ret;
-+
-+      ret = run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
-+      if (ret > 0)
-+              return;
-+
-       if (config_enabled(CONFIG_MTD_UIMAGE_SPLIT))
-               split_uimage(master, part);
++      run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
  }
-@@ -689,6 +726,12 @@ static void mtd_partition_split(struct m
+ 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;
  
index a70f81828cac69f00af4c97530f58713ad944c3f..d897034abd37f82a05c773e81bd8706a4ba85b8d 100644 (file)
@@ -1,8 +1,8 @@
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -32,6 +32,11 @@ config MTD_UIMAGE_SPLIT
+@@ -27,6 +27,11 @@ config MTD_SPLIT_FIRMWARE_NAME
        depends on MTD_SPLIT_FIRMWARE
-       default y
+       default "firmware"
  
 +config MTD_SPLIT
 +      def_bool n
index 30292e9316bd415dbe02937c726032262353163e..f3f957b33f59fd80311ea9fafc490b8f1891e5ca 100644 (file)
        }
        if (slave->offset == MTDPART_OFS_RETAIN) {
                slave->offset = cur_offset;
-@@ -944,6 +942,24 @@ int mtd_is_partition(const struct mtd_in
+@@ -659,6 +657,17 @@ run_parsers_by_type(struct mtd_part *sla
+       return nr_parts;
+ }
++static inline unsigned long
++mtd_pad_erasesize(struct mtd_info *mtd, int offset, int len)
++{
++      unsigned long mask = mtd->erasesize - 1;
++
++      len += offset & mask;
++      len = (len + mask) & ~mask;
++      len -= offset & mask;
++      return len;
++}
++
+ #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #define SPLIT_FIRMWARE_NAME   CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #else
+@@ -900,6 +909,24 @@ int mtd_is_partition(const struct mtd_in
  }
  EXPORT_SYMBOL_GPL(mtd_is_partition);
  
index f022405be4b1a6c7659fe1a7f0f212f27a848664..008714bd157c4a6e2cd56164f70b1fc9b0cdf78f 100644 (file)
@@ -1,8 +1,8 @@
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -32,6 +32,8 @@ config MTD_UIMAGE_SPLIT
+@@ -27,6 +27,8 @@ config MTD_SPLIT_FIRMWARE_NAME
        depends on MTD_SPLIT_FIRMWARE
-       default y
+       default "firmware"
  
 +source "drivers/mtd/mtdsplit/Kconfig"
 +
diff --git a/target/linux/generic/patches-3.14/407-mtd-old-firmware-uimage-splitter.patch b/target/linux/generic/patches-3.14/407-mtd-old-firmware-uimage-splitter.patch
new file mode 100644 (file)
index 0000000..9d8d975
--- /dev/null
@@ -0,0 +1,65 @@
+--- a/drivers/mtd/Kconfig
++++ b/drivers/mtd/Kconfig
+@@ -27,6 +27,11 @@ config MTD_SPLIT_FIRMWARE_NAME
+       depends on MTD_SPLIT_FIRMWARE
+       default "firmware"
++config MTD_UIMAGE_SPLIT
++      bool "Enable split support for firmware partitions containing a uImage"
++      depends on MTD_SPLIT_FIRMWARE
++      default y
++
+ source "drivers/mtd/mtdsplit/Kconfig"
+ config MTD_SPLIT
+--- a/drivers/mtd/mtdpart.c
++++ b/drivers/mtd/mtdpart.c
+@@ -668,6 +668,32 @@ mtd_pad_erasesize(struct mtd_info *mtd,
+       return len;
+ }
++#define UBOOT_MAGIC   0x27051956
++
++static void split_uimage(struct mtd_info *master, struct mtd_part *part)
++{
++      struct {
++              __be32 magic;
++              __be32 pad[2];
++              __be32 size;
++      } hdr;
++      size_t len;
++
++      if (mtd_read(master, part->offset, sizeof(hdr), &len, (void *) &hdr))
++              return;
++
++      if (len != sizeof(hdr) || hdr.magic != cpu_to_be32(UBOOT_MAGIC))
++              return;
++
++      len = be32_to_cpu(hdr.size) + 0x40;
++      len = mtd_pad_erasesize(master, part->offset, len);
++      if (len + master->erasesize > part->mtd.size)
++              return;
++
++      __mtd_add_partition(master, "rootfs", part->offset + len,
++                          part->mtd.size - len, false);
++}
++
+ #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #define SPLIT_FIRMWARE_NAME   CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #else
+@@ -676,7 +702,14 @@ mtd_pad_erasesize(struct mtd_info *mtd,
+ static void split_firmware(struct mtd_info *master, struct mtd_part *part)
+ {
+-      run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
++      int ret;
++
++      ret = run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
++      if (ret > 0)
++              return;
++
++      if (config_enabled(CONFIG_MTD_UIMAGE_SPLIT))
++              split_uimage(master, part);
+ }
+ void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,
index 6ec19b119b1262cebb8094209a1a5d3552ec04f6..597adf5445506bbe7faaa3a3dc40d44af703b7c1 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -12,6 +12,28 @@ menuconfig MTD
+@@ -12,6 +12,23 @@ menuconfig MTD
  
  if MTD
  
 +      depends on MTD_SPLIT_FIRMWARE
 +      default "firmware"
 +
-+config MTD_UIMAGE_SPLIT
-+      bool "Enable split support for firmware partitions containing a uImage"
-+      depends on MTD_SPLIT_FIRMWARE
-+      default y
-+
 +endmenu
 +
  config MTD_TESTS
  int mtd_del_partition(struct mtd_info *master, int partno)
  {
        struct mtd_part *slave, *next;
-@@ -627,6 +641,74 @@ int mtd_del_partition(struct mtd_info *m
+@@ -627,6 +641,35 @@ int mtd_del_partition(struct mtd_info *m
  }
  EXPORT_SYMBOL_GPL(mtd_del_partition);
  
-+static inline unsigned long
-+mtd_pad_erasesize(struct mtd_info *mtd, int offset, int len)
-+{
-+      unsigned long mask = mtd->erasesize - 1;
-+
-+      len += offset & mask;
-+      len = (len + mask) & ~mask;
-+      len -= offset & mask;
-+      return len;
-+}
-+
-+#define UBOOT_MAGIC   0x27051956
-+
-+static void split_uimage(struct mtd_info *master, struct mtd_part *part)
-+{
-+      struct {
-+              __be32 magic;
-+              __be32 pad[2];
-+              __be32 size;
-+      } hdr;
-+      size_t len;
-+
-+      if (mtd_read(master, part->offset, sizeof(hdr), &len, (void *) &hdr))
-+              return;
-+
-+      if (len != sizeof(hdr) || hdr.magic != cpu_to_be32(UBOOT_MAGIC))
-+              return;
-+
-+      len = be32_to_cpu(hdr.size) + 0x40;
-+      len = mtd_pad_erasesize(master, part->offset, len);
-+      if (len + master->erasesize > part->mtd.size)
-+              return;
-+
-+      __mtd_add_partition(master, "rootfs", part->offset + len,
-+                          part->mtd.size - len, false);
-+}
-+
 +#ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
 +#define SPLIT_FIRMWARE_NAME   CONFIG_MTD_SPLIT_FIRMWARE_NAME
 +#else
 +
 +static void split_firmware(struct mtd_info *master, struct mtd_part *part)
 +{
-+      if (config_enabled(CONFIG_MTD_UIMAGE_SPLIT))
-+              split_uimage(master, part);
 +}
 +
 +void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,
  /*
   * 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
-@@ -656,6 +738,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -656,6 +699,7 @@ int add_mtd_partitions(struct mtd_info *
                mutex_unlock(&mtd_partitions_mutex);
  
                add_mtd_device(&slave->mtd);
index 4102453998a82088566053602a20268723776b26..2ddcbff011c2a1aeccdc0f3cd1e115a09baca595 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -768,6 +768,30 @@ static struct mtd_part_parser *get_parti
+@@ -729,6 +729,30 @@ static struct mtd_part_parser *get_parti
  
  #define put_partition_parser(p) do { module_put((p)->owner); } while (0)
  
@@ -42,7 +42,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  void register_mtd_parser(struct mtd_part_parser *p)
  {
        spin_lock(&part_parser_lock);
-@@ -841,6 +865,38 @@ int parse_mtd_partitions(struct mtd_info
+@@ -802,6 +826,38 @@ int parse_mtd_partitions(struct mtd_info
        return ret;
  }
  
index 0c335683ca3dfab06f9c7207c5beb4238fd99703..4d994221c52da6692695b6970dddc7f8a6a4b914 100644 (file)
 +      return nr_parts;
 +}
 +
- static inline unsigned long
- mtd_pad_erasesize(struct mtd_info *mtd, int offset, int len)
- {
-@@ -686,6 +717,12 @@ static void split_uimage(struct mtd_info
+ #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #define SPLIT_FIRMWARE_NAME   CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #else
+@@ -649,6 +680,7 @@ EXPORT_SYMBOL_GPL(mtd_del_partition);
  
  static void split_firmware(struct mtd_info *master, struct mtd_part *part)
  {
-+      int ret;
-+
-+      ret = run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
-+      if (ret > 0)
-+              return;
-+
-       if (config_enabled(CONFIG_MTD_UIMAGE_SPLIT))
-               split_uimage(master, part);
++      run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
  }
-@@ -702,6 +739,12 @@ static void mtd_partition_split(struct m
+ void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,
+@@ -663,6 +695,12 @@ static void mtd_partition_split(struct m
        if (rootfs_found)
                return;
  
index a70f81828cac69f00af4c97530f58713ad944c3f..d897034abd37f82a05c773e81bd8706a4ba85b8d 100644 (file)
@@ -1,8 +1,8 @@
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -32,6 +32,11 @@ config MTD_UIMAGE_SPLIT
+@@ -27,6 +27,11 @@ config MTD_SPLIT_FIRMWARE_NAME
        depends on MTD_SPLIT_FIRMWARE
-       default y
+       default "firmware"
  
 +config MTD_SPLIT
 +      def_bool n
index b59166c489bc5e5ea95a31b7de0400c4700c7e2b..d7c38011ec7f09950c6a80b006c93834063ce5e7 100644 (file)
        }
        if (slave->offset == MTDPART_OFS_RETAIN) {
                slave->offset = cur_offset;
-@@ -957,6 +955,24 @@ int mtd_is_partition(const struct mtd_in
+@@ -672,6 +670,17 @@ run_parsers_by_type(struct mtd_part *sla
+       return nr_parts;
+ }
++static inline unsigned long
++mtd_pad_erasesize(struct mtd_info *mtd, int offset, int len)
++{
++      unsigned long mask = mtd->erasesize - 1;
++
++      len += offset & mask;
++      len = (len + mask) & ~mask;
++      len -= offset & mask;
++      return len;
++}
++
+ #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #define SPLIT_FIRMWARE_NAME   CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #else
+@@ -913,6 +922,24 @@ int mtd_is_partition(const struct mtd_in
  }
  EXPORT_SYMBOL_GPL(mtd_is_partition);
  
index f022405be4b1a6c7659fe1a7f0f212f27a848664..008714bd157c4a6e2cd56164f70b1fc9b0cdf78f 100644 (file)
@@ -1,8 +1,8 @@
 --- a/drivers/mtd/Kconfig
 +++ b/drivers/mtd/Kconfig
-@@ -32,6 +32,8 @@ config MTD_UIMAGE_SPLIT
+@@ -27,6 +27,8 @@ config MTD_SPLIT_FIRMWARE_NAME
        depends on MTD_SPLIT_FIRMWARE
-       default y
+       default "firmware"
  
 +source "drivers/mtd/mtdsplit/Kconfig"
 +
diff --git a/target/linux/generic/patches-3.18/407-mtd-old-firmware-uimage-splitter.patch b/target/linux/generic/patches-3.18/407-mtd-old-firmware-uimage-splitter.patch
new file mode 100644 (file)
index 0000000..b63690a
--- /dev/null
@@ -0,0 +1,65 @@
+--- a/drivers/mtd/Kconfig
++++ b/drivers/mtd/Kconfig
+@@ -27,6 +27,11 @@ config MTD_SPLIT_FIRMWARE_NAME
+       depends on MTD_SPLIT_FIRMWARE
+       default "firmware"
++config MTD_UIMAGE_SPLIT
++      bool "Enable split support for firmware partitions containing a uImage"
++      depends on MTD_SPLIT_FIRMWARE
++      default y
++
+ source "drivers/mtd/mtdsplit/Kconfig"
+ config MTD_SPLIT
+--- a/drivers/mtd/mtdpart.c
++++ b/drivers/mtd/mtdpart.c
+@@ -681,6 +681,32 @@ mtd_pad_erasesize(struct mtd_info *mtd,
+       return len;
+ }
++#define UBOOT_MAGIC   0x27051956
++
++static void split_uimage(struct mtd_info *master, struct mtd_part *part)
++{
++      struct {
++              __be32 magic;
++              __be32 pad[2];
++              __be32 size;
++      } hdr;
++      size_t len;
++
++      if (mtd_read(master, part->offset, sizeof(hdr), &len, (void *) &hdr))
++              return;
++
++      if (len != sizeof(hdr) || hdr.magic != cpu_to_be32(UBOOT_MAGIC))
++              return;
++
++      len = be32_to_cpu(hdr.size) + 0x40;
++      len = mtd_pad_erasesize(master, part->offset, len);
++      if (len + master->erasesize > part->mtd.size)
++              return;
++
++      __mtd_add_partition(master, "rootfs", part->offset + len,
++                          part->mtd.size - len, false);
++}
++
+ #ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #define SPLIT_FIRMWARE_NAME   CONFIG_MTD_SPLIT_FIRMWARE_NAME
+ #else
+@@ -689,7 +715,14 @@ mtd_pad_erasesize(struct mtd_info *mtd,
+ static void split_firmware(struct mtd_info *master, struct mtd_part *part)
+ {
+-      run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
++      int ret;
++
++      ret = run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
++      if (ret > 0)
++              return;
++
++      if (config_enabled(CONFIG_MTD_UIMAGE_SPLIT))
++              split_uimage(master, part);
+ }
+ void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,