You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
16 years ago
|
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
|
||
|
|