]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
ARM: S3C64XX: add nand support for mach-mini6410
authorDarius Augulis <augulis.darius@gmail.com>
Tue, 19 Oct 2010 07:04:16 +0000 (16:04 +0900)
committerKukjin Kim <kgene.kim@samsung.com>
Wed, 20 Oct 2010 22:42:44 +0000 (07:42 +0900)
Add nand device support and mtd partition
table for mini6410

Signed-off-by: Darius Augulis <augulis.darius@gmail.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
arch/arm/mach-s3c64xx/Kconfig
arch/arm/mach-s3c64xx/mach-mini6410.c

index bbeb4cae4650137b919a2b88148212104020fe76..3bbd2045da551b89b5aa2e33ca2ade60a6bb09ef 100644 (file)
@@ -105,6 +105,7 @@ config MACH_MINI6410
        select S3C_DEV_HSMMC1
        select S3C64XX_SETUP_SDHCI
        select S3C_DEV_USB_HOST
+       select S3C_DEV_NAND
        help
          Machine support for the FriendlyARM MINI6410
 
index 39701256452839ffd8c37a48523a0910cf28a31f..d079ecf235004156953f6eb16bdef0fda9477d4d 100644 (file)
@@ -18,6 +18,8 @@
 #include <linux/kernel.h>
 #include <linux/list.h>
 #include <linux/dm9000.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
 #include <linux/serial_core.h>
 #include <linux/types.h>
 
@@ -32,6 +34,7 @@
 
 #include <plat/cpu.h>
 #include <plat/devs.h>
+#include <plat/nand.h>
 #include <plat/regs-serial.h>
 
 #define UCON (S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK)
@@ -103,11 +106,47 @@ static struct platform_device mini6410_device_eth = {
        },
 };
 
+static struct mtd_partition mini6410_nand_part[] = {
+       [0] = {
+               .name   = "uboot",
+               .size   = SZ_1M,
+               .offset = 0,
+       },
+       [1] = {
+               .name   = "kernel",
+               .size   = SZ_2M,
+               .offset = SZ_1M,
+       },
+       [2] = {
+               .name   = "rootfs",
+               .size   = MTDPART_SIZ_FULL,
+               .offset = SZ_1M + SZ_2M,
+       },
+};
+
+static struct s3c2410_nand_set mini6410_nand_sets[] = {
+       [0] = {
+               .name           = "nand",
+               .nr_chips       = 1,
+               .nr_partitions  = ARRAY_SIZE(mini6410_nand_part),
+               .partitions     = mini6410_nand_part,
+       },
+};
+
+static struct s3c2410_platform_nand mini6410_nand_info = {
+       .tacls          = 25,
+       .twrph0         = 55,
+       .twrph1         = 40,
+       .nr_sets        = ARRAY_SIZE(mini6410_nand_sets),
+       .sets           = mini6410_nand_sets,
+};
+
 static struct platform_device *mini6410_devices[] __initdata = {
        &mini6410_device_eth,
        &s3c_device_hsmmc0,
        &s3c_device_hsmmc1,
        &s3c_device_ohci,
+       &s3c_device_nand,
 };
 
 static void __init mini6410_map_io(void)
@@ -121,6 +160,8 @@ static void __init mini6410_machine_init(void)
 {
        u32 cs1;
 
+       s3c_nand_set_platdata(&mini6410_nand_info);
+
        /* configure nCS1 width to 16 bits */
 
        cs1 = __raw_readl(S3C64XX_SROM_BW) &