aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.24/1002-gta01-no_nand_partitions.patch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.24/1002-gta01-no_nand_partitions.patch.patch')
-rw-r--r--target/linux/s3c24xx/patches-2.6.24/1002-gta01-no_nand_partitions.patch.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.24/1002-gta01-no_nand_partitions.patch.patch b/target/linux/s3c24xx/patches-2.6.24/1002-gta01-no_nand_partitions.patch.patch
new file mode 100644
index 0000000000..88b4d37c82
--- /dev/null
+++ b/target/linux/s3c24xx/patches-2.6.24/1002-gta01-no_nand_partitions.patch.patch
@@ -0,0 +1,60 @@
+From 219a4d34b71c37a2a23739718924b0915790f44f Mon Sep 17 00:00:00 2001
+From: mokopatches <mokopatches@openmoko.org>
+Date: Fri, 4 Apr 2008 11:29:16 +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 66f76e9..355de78 100644
+--- a/drivers/mtd/nand/s3c2410.c
++++ b/drivers/mtd/nand/s3c2410.c
+@@ -559,17 +559,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.5
+