changed Makefile and profiles, added patches for kernel 2.6.24 (stable-branch of...
[openwrt/openwrt.git] / target / linux / s3c24xx / patches-2.6.26 / 0002-gta01-no_nand_partitions.patch.patch
diff --git a/target/linux/s3c24xx/patches-2.6.26/0002-gta01-no_nand_partitions.patch.patch b/target/linux/s3c24xx/patches-2.6.26/0002-gta01-no_nand_partitions.patch.patch
new file mode 100755 (executable)
index 0000000..d011ef9
--- /dev/null
@@ -0,0 +1,60 @@
+From 1ef4af1f96284576aa9b7f4490c791350c99fffd Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Wed, 16 Jul 2008 14:44:10 +0100
+Subject: [PATCH] gta01-no_nand_partitions.patch
+ [PATCH] support mtd NAND commandline partitions for S3C2410
+
+This patch adds support for the mtd NAND core standard method of passing
+partition table information from the bootloader into the kernel by using
+the kernel commandline.
+
+The board specific code can still manually override and provide a fixed
+partition table, so this patch will behave backwards compatible.
+
+Signed-off-by: Harald Welte <laforge@openmoko.org>
+Acked-byt: Ben Dooks <ben-linux@fluff.org>
+---
+ drivers/mtd/nand/s3c2410.c |   18 ++++++++++++++++--
+ 1 files changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c
+index b34a460..101b6b5 100644
+--- a/drivers/mtd/nand/s3c2410.c
++++ b/drivers/mtd/nand/s3c2410.c
+@@ -566,17 +566,31 @@ static int s3c2410_nand_remove(struct platform_device *pdev)
+ }
+ #ifdef CONFIG_MTD_PARTITIONS
++const char *part_probes[] = { "cmdlinepart", NULL };
+ static int s3c2410_nand_add_partition(struct s3c2410_nand_info *info,
+                                     struct s3c2410_nand_mtd *mtd,
+                                     struct s3c2410_nand_set *set)
+ {
++      struct mtd_partition *part_info;
++      int nr_part = 0;
++
+       if (set == NULL)
+               return add_mtd_device(&mtd->mtd);
+-      if (set->nr_partitions > 0 && set->partitions != NULL) {
+-              return add_mtd_partitions(&mtd->mtd, set->partitions, set->nr_partitions);
++      if (set->nr_partitions == 0) {
++              mtd->mtd.name = set->name;
++              nr_part = parse_mtd_partitions(&mtd->mtd, part_probes,
++                                              &part_info, 0);
++      } else {
++              if (set->nr_partitions > 0 && set->partitions != NULL) {
++                      nr_part = set->nr_partitions;
++                      part_info = set->partitions;
++              }
+       }
++      if (nr_part > 0 && part_info)
++              return add_mtd_partitions(&mtd->mtd, part_info, nr_part);
++
+       return add_mtd_device(&mtd->mtd);
+ }
+ #else
+-- 
+1.5.6.3
+