diff options
author | Choi Jong-hwan <jhbird.choi@samsung.com> | 2010-08-03 15:00:49 +0900 |
---|---|---|
committer | Arve Hjønnevåg <arve@android.com> | 2011-11-16 21:48:24 -0800 |
commit | ee64efcba48f78464271bcbc83d9e17c0600f844 (patch) | |
tree | 2bb55e25c0b202594fea323e7719f6f8d9edd3c9 /drivers/mtd/onenand | |
parent | 9af1bb687dd455aa23833433dc76d53370a061e4 (diff) | |
download | kernel_samsung_aries-ee64efcba48f78464271bcbc83d9e17c0600f844.zip kernel_samsung_aries-ee64efcba48f78464271bcbc83d9e17c0600f844.tar.gz kernel_samsung_aries-ee64efcba48f78464271bcbc83d9e17c0600f844.tar.bz2 |
[CREPO] boot up, yaffs mount, android run Success
Diffstat (limited to 'drivers/mtd/onenand')
-rw-r--r-- | drivers/mtd/onenand/samsung.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/drivers/mtd/onenand/samsung.c b/drivers/mtd/onenand/samsung.c index 3306b5b..26bafde 100644 --- a/drivers/mtd/onenand/samsung.c +++ b/drivers/mtd/onenand/samsung.c @@ -36,6 +36,45 @@ enum soc_type { TYPE_S5PC110, }; +struct mtd_partition s3c_partition_info[] = { + { + .name = "misc", + .offset = (768*SZ_1K), /* for bootloader */ + .size = (256*SZ_1K), + .mask_flags = MTD_CAP_NANDFLASH, + }, + { + .name = "recovery", + .offset = MTDPART_OFS_APPEND, + .size = (5*SZ_1M), + }, + { + .name = "kernel", + .offset = MTDPART_OFS_APPEND, + .size = (5*SZ_1M), + }, + { + .name = "ramdisk", + .offset = MTDPART_OFS_APPEND, + .size = (3*SZ_1M), + }, + { + .name = "system", + .offset = MTDPART_OFS_APPEND, + .size = (90*SZ_1M), + }, + { + .name = "cache", + .offset = MTDPART_OFS_APPEND, + .size = (80*SZ_1M), + }, + { + .name = "userdata", + .offset = MTDPART_OFS_APPEND, + .size = MTDPART_SIZ_FULL, + } +}; + #define ONENAND_ERASE_STATUS 0x00 #define ONENAND_MULTI_ERASE_SET 0x01 #define ONENAND_ERASE_START 0x03 @@ -869,6 +908,8 @@ static int s3c_onenand_probe(struct platform_device *pdev) struct mtd_info *mtd; struct resource *r; int size, err; + struct mtd_partition *partitions = NULL; + int num_partitions = 0; pdata = pdev->dev.platform_data; /* No need to check pdata. the platform data is optional */ @@ -1017,6 +1058,27 @@ static int s3c_onenand_probe(struct platform_device *pdev) if (s3c_read_reg(MEM_CFG_OFFSET) & ONENAND_SYS_CFG1_SYNC_READ) dev_info(&onenand->pdev->dev, "OneNAND Sync. Burst Read enabled\n"); +#ifdef CONFIG_MTD_CMDLINE_PARTS + err = parse_mtd_partitions(mtd, part_probes, &onenand->parts, 0); + if (err > 0) + mtd_device_register(mtd, onenand->parts, err); + else if (err <= 0 && pdata && pdata->parts) + mtd_device_register(mtd, pdata->parts, pdata->nr_parts); + else +#endif + if (num_partitions <= 0) { + /* default partition table */ + num_partitions = ARRAY_SIZE(s3c_partition_info); /* pdata->nr_parts */ + partitions = s3c_partition_info; /* pdata->parts */ + } + + if (partitions && num_partitions > 0) + err = mtd_device_register(mtd, partitions, num_partitions); + else + err = mtd_device_register(mtd, NULL, 0); + + +/* err = parse_mtd_partitions(mtd, part_probes, &onenand->parts, 0); if (err > 0) mtd_device_register(mtd, onenand->parts, err); @@ -1024,6 +1086,7 @@ static int s3c_onenand_probe(struct platform_device *pdev) mtd_device_register(mtd, pdata->parts, pdata->nr_parts); else err = mtd_device_register(mtd, NULL, 0); +*/ platform_set_drvdata(pdev, mtd); |