|
@@ -699,17 +699,31 @@ static int s3c24xx_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
|