diff options
Diffstat (limited to 'target/linux/s3c24xx/patches/0002-gta01-no_nand_partitions.patch.patch')
-rwxr-xr-x | target/linux/s3c24xx/patches/0002-gta01-no_nand_partitions.patch.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches/0002-gta01-no_nand_partitions.patch.patch b/target/linux/s3c24xx/patches/0002-gta01-no_nand_partitions.patch.patch new file mode 100755 index 0000000000..d011ef9f89 --- /dev/null +++ b/target/linux/s3c24xx/patches/0002-gta01-no_nand_partitions.patch.patch @@ -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 + |