[ARM] pxa: add pxa3xx NAND support for littleton
authorEric Miao <eric.miao@marvell.com>
Mon, 2 Jun 2008 07:42:14 +0000 (15:42 +0800)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 9 Jul 2008 20:38:33 +0000 (21:38 +0100)
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Cc: Sergey Podstavin <spodstavin@ru.mvista.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-pxa/littleton.c

index ff81a84..9a4f51d 100644 (file)
@@ -38,6 +38,7 @@
 #include <asm/arch/pxafb.h>
 #include <asm/arch/ssp.h>
 #include <asm/arch/pxa27x_keypad.h>
+#include <asm/arch/pxa3xx_nand.h>
 #include <asm/arch/littleton.h>
 
 #include "generic.h"
@@ -361,6 +362,57 @@ static void __init littleton_init_keypad(void)
 static inline void littleton_init_keypad(void) {}
 #endif
 
+#if defined(CONFIG_MTD_NAND_PXA3xx) || defined(CONFIG_MTD_NAND_PXA3xx_MODULE)
+static struct mtd_partition littleton_nand_partitions[] = {
+       [0] = {
+               .name        = "Bootloader",
+               .offset      = 0,
+               .size        = 0x060000,
+               .mask_flags  = MTD_WRITEABLE, /* force read-only */
+       },
+       [1] = {
+               .name        = "Kernel",
+               .offset      = 0x060000,
+               .size        = 0x200000,
+               .mask_flags  = MTD_WRITEABLE, /* force read-only */
+       },
+       [2] = {
+               .name        = "Filesystem",
+               .offset      = 0x0260000,
+               .size        = 0x3000000,     /* 48M - rootfs */
+       },
+       [3] = {
+               .name        = "MassStorage",
+               .offset      = 0x3260000,
+               .size        = 0x3d40000,
+       },
+       [4] = {
+               .name        = "BBT",
+               .offset      = 0x6FA0000,
+               .size        = 0x80000,
+               .mask_flags  = MTD_WRITEABLE,  /* force read-only */
+       },
+       /* NOTE: we reserve some blocks at the end of the NAND flash for
+        * bad block management, and the max number of relocation blocks
+        * differs on different platforms. Please take care with it when
+        * defining the partition table.
+        */
+};
+
+static struct pxa3xx_nand_platform_data littleton_nand_info = {
+       .enable_arbiter = 1,
+       .parts          = littleton_nand_partitions,
+       .nr_parts       = ARRAY_SIZE(littleton_nand_partitions),
+};
+
+static void __init littleton_init_nand(void)
+{
+       pxa3xx_set_nand_info(&littleton_nand_info);
+}
+#else
+static inline void littleton_init_nand(void) {}
+#endif /* CONFIG_MTD_NAND_PXA3xx || CONFIG_MTD_NAND_PXA3xx_MODULE */
+
 static void __init littleton_init(void)
 {
        /* initialize MFP configurations */
@@ -374,6 +426,7 @@ static void __init littleton_init(void)
 
        littleton_init_lcd();
        littleton_init_keypad();
+       littleton_init_nand();
 }
 
 MACHINE_START(LITTLETON, "Marvell Form Factor Development Platform (aka Littleton)")