Author: rmilecki
Date: 2014-12-13 21:06:47 +0100 (Sat, 13 Dec 2014)
New Revision: 43696

Added:
   
trunk/target/linux/generic/patches-3.14/407-mtd-old-firmware-uimage-splitter.patch
   
trunk/target/linux/generic/patches-3.18/407-mtd-old-firmware-uimage-splitter.patch
Modified:
   
trunk/target/linux/generic/patches-3.14/400-mtd-add-rootfs-split-support.patch
   
trunk/target/linux/generic/patches-3.14/401-mtd-add-support-for-different-partition-parser-types.patch
   
trunk/target/linux/generic/patches-3.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
   trunk/target/linux/generic/patches-3.14/403-mtd-hook-mtdsplit-to-Kbuild.patch
   
trunk/target/linux/generic/patches-3.14/405-mtd-add-more-helper-functions.patch
   
trunk/target/linux/generic/patches-3.14/406-mtd-hook-mtdsplit-into-Kbuild.patch
   
trunk/target/linux/generic/patches-3.18/400-mtd-add-rootfs-split-support.patch
   
trunk/target/linux/generic/patches-3.18/401-mtd-add-support-for-different-partition-parser-types.patch
   
trunk/target/linux/generic/patches-3.18/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
   trunk/target/linux/generic/patches-3.18/403-mtd-hook-mtdsplit-to-Kbuild.patch
   
trunk/target/linux/generic/patches-3.18/405-mtd-add-more-helper-functions.patch
   
trunk/target/linux/generic/patches-3.18/406-mtd-hook-mtdsplit-into-Kbuild.patch
Log:
kernel: move old firmware uimage splitter into separated patch

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?\197?\130 Mi?\197?\130ecki <[email protected]>


Modified: 
trunk/target/linux/generic/patches-3.14/400-mtd-add-rootfs-split-support.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.14/400-mtd-add-rootfs-split-support.patch  
    2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.14/400-mtd-add-rootfs-split-support.patch  
    2014-12-13 20:06:47 UTC (rev 43696)
@@ -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
  
@@ -19,11 +19,6 @@
 +      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
@@ -120,47 +115,10 @@
  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
@@ -169,8 +127,6 @@
 +
 +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,
@@ -195,7 +151,7 @@
  /*
   * 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);

Modified: 
trunk/target/linux/generic/patches-3.14/401-mtd-add-support-for-different-partition-parser-types.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.14/401-mtd-add-support-for-different-partition-parser-types.patch
      2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.14/401-mtd-add-support-for-different-partition-parser-types.patch
      2014-12-13 20:06:47 UTC (rev 43696)
@@ -11,7 +11,7 @@
 
 --- 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 @@
  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;
  }
  

Modified: 
trunk/target/linux/generic/patches-3.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
   2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.14/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
   2014-12-13 20:06:47 UTC (rev 43696)
@@ -35,23 +35,18 @@
 +      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;
  

Modified: 
trunk/target/linux/generic/patches-3.14/403-mtd-hook-mtdsplit-to-Kbuild.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.14/403-mtd-hook-mtdsplit-to-Kbuild.patch   
    2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.14/403-mtd-hook-mtdsplit-to-Kbuild.patch   
    2014-12-13 20:06:47 UTC (rev 43696)
@@ -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

Modified: 
trunk/target/linux/generic/patches-3.14/405-mtd-add-more-helper-functions.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.14/405-mtd-add-more-helper-functions.patch 
    2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.14/405-mtd-add-more-helper-functions.patch 
    2014-12-13 20:06:47 UTC (rev 43696)
@@ -18,8 +18,26 @@
        }
        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);
  
 +struct mtd_info *mtdpart_get_master(const struct mtd_info *mtd)

Modified: 
trunk/target/linux/generic/patches-3.14/406-mtd-hook-mtdsplit-into-Kbuild.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.14/406-mtd-hook-mtdsplit-into-Kbuild.patch 
    2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.14/406-mtd-hook-mtdsplit-into-Kbuild.patch 
    2014-12-13 20:06:47 UTC (rev 43696)
@@ -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"
 +

Added: 
trunk/target/linux/generic/patches-3.14/407-mtd-old-firmware-uimage-splitter.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.14/407-mtd-old-firmware-uimage-splitter.patch
                          (rev 0)
+++ 
trunk/target/linux/generic/patches-3.14/407-mtd-old-firmware-uimage-splitter.patch
  2014-12-13 20:06:47 UTC (rev 43696)
@@ -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,

Modified: 
trunk/target/linux/generic/patches-3.18/400-mtd-add-rootfs-split-support.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.18/400-mtd-add-rootfs-split-support.patch  
    2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.18/400-mtd-add-rootfs-split-support.patch  
    2014-12-13 20:06:47 UTC (rev 43696)
@@ -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
  
@@ -19,11 +19,6 @@
 +      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
@@ -120,47 +115,10 @@
  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
@@ -169,8 +127,6 @@
 +
 +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,
@@ -195,7 +151,7 @@
  /*
   * 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);

Modified: 
trunk/target/linux/generic/patches-3.18/401-mtd-add-support-for-different-partition-parser-types.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.18/401-mtd-add-support-for-different-partition-parser-types.patch
      2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.18/401-mtd-add-support-for-different-partition-parser-types.patch
      2014-12-13 20:06:47 UTC (rev 43696)
@@ -11,7 +11,7 @@
 
 --- 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 @@
  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;
  }
  

Modified: 
trunk/target/linux/generic/patches-3.18/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.18/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
   2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.18/402-mtd-use-typed-mtd-parsers-for-rootfs-and-firmware-split.patch
   2014-12-13 20:06:47 UTC (rev 43696)
@@ -35,23 +35,18 @@
 +      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;
  

Modified: 
trunk/target/linux/generic/patches-3.18/403-mtd-hook-mtdsplit-to-Kbuild.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.18/403-mtd-hook-mtdsplit-to-Kbuild.patch   
    2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.18/403-mtd-hook-mtdsplit-to-Kbuild.patch   
    2014-12-13 20:06:47 UTC (rev 43696)
@@ -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

Modified: 
trunk/target/linux/generic/patches-3.18/405-mtd-add-more-helper-functions.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.18/405-mtd-add-more-helper-functions.patch 
    2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.18/405-mtd-add-more-helper-functions.patch 
    2014-12-13 20:06:47 UTC (rev 43696)
@@ -18,8 +18,26 @@
        }
        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);
  
 +struct mtd_info *mtdpart_get_master(const struct mtd_info *mtd)

Modified: 
trunk/target/linux/generic/patches-3.18/406-mtd-hook-mtdsplit-into-Kbuild.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.18/406-mtd-hook-mtdsplit-into-Kbuild.patch 
    2014-12-13 14:01:26 UTC (rev 43695)
+++ 
trunk/target/linux/generic/patches-3.18/406-mtd-hook-mtdsplit-into-Kbuild.patch 
    2014-12-13 20:06:47 UTC (rev 43696)
@@ -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"
 +

Added: 
trunk/target/linux/generic/patches-3.18/407-mtd-old-firmware-uimage-splitter.patch
===================================================================
--- 
trunk/target/linux/generic/patches-3.18/407-mtd-old-firmware-uimage-splitter.patch
                          (rev 0)
+++ 
trunk/target/linux/generic/patches-3.18/407-mtd-old-firmware-uimage-splitter.patch
  2014-12-13 20:06:47 UTC (rev 43696)
@@ -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,
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to