arm nomadik: allow Nand and OneNand to coexists
authorAlessandro Rubini <rubini@unipv.it>
Mon, 22 Jun 2009 07:18:57 +0000 (09:18 +0200)
committerJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Mon, 6 Jul 2009 19:53:06 +0000 (21:53 +0200)
The evaluation kit has both Nand and OneNand, both drivers are there
and the two configurations only select a different default for the
jffs partition. This adds the OneNand driver and cleans up storage.

Signed-off-by: Alessandro Rubini <rubini@unipv.it>
Acked-by: Andrea Gallo <andrea.gallo@stericsson.com>
Makefile
board/st/nhk8815/nhk8815.c
doc/README.nhk8815
include/configs/nhk8815.h

index 3877c97209821a4be294936184e2ea0184b2653c..d486b55422c3d18c3bf78cf19dce6138822c39cd 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2860,9 +2860,9 @@ nhk8815_onenand_config:   unconfig
        @ > $(obj)include/config.h
        @if [ "$(findstring _onenand, $@)" ] ; then \
                echo "#define CONFIG_BOOT_ONENAND" >> $(obj)include/config.h; \
-               $(XECHO) "... configured for OneNand Flash"; \
+               $(XECHO) "... configured to boot from OneNand Flash"; \
        else \
-               $(XECHO) "... configured for Nand Flash"; \
+               $(XECHO) "... configured to boot from Nand Flash"; \
        fi
        @$(MKCONFIG) -a nhk8815 arm arm926ejs nhk8815 st nomadik
 
index edf46262f5d7c3ba564199466c1931ab73c61494..085a5e0a42731151f8ff29b30a42f68e62551b45 100644 (file)
@@ -53,6 +53,10 @@ int board_init(void)
        writel(0x0000305b, REG_FSMC_BCR1);
        writel(0x00033f33, REG_FSMC_BTR1);
 
+       /* Set up SMCS0 for OneNand: sram-like once again */
+       writel(0x000030db, NOMADIK_FSMC_BASE + 0x00); /* FSMC_BCR0 */
+       writel(0x02100551, NOMADIK_FSMC_BASE + 0x04); /* FSMC_BTR0 */
+
        icache_enable();
        return 0;
 }
index 453cfaeab8b52f2b97e39e9c9d5e72fd6b325480..9008e39363755e433b663f8bd7508ca46ca570da 100644 (file)
@@ -15,6 +15,16 @@ SDRAM configuration, PLL setup and initial loading from NAND is
 implemented in the X-Loader, so U-Boot is already running in SDRAM
 when control is handed over to it.
 
+The Makefile offers two different configurations to be used if you
+boot from Nand or OneNand.
+
+    make nhk8815_config
+    make nhk8815_onenand_config
+
+Both support OneNand and Nand. Since U-Boot, running in RAM, can't know
+where it was loaded from, the configurations differ in where the filesystem
+is looked for by default.
+
 
 On www.st.com/nomadik and on www.stnwireless.com there are documents,
 summary data and white papers on Nomadik. The full datasheet for
index 321adfacfda8fdfca9822c7282d90df450250e21..bf1a91538193567a6969e646940805bf0d281f14 100644 (file)
@@ -55,6 +55,7 @@
 #define CONFIG_SYS_HUSH_PARSER
 #define CONFIG_SYS_PROMPT              "Nomadik> "
 #define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
+#define CONFIG_CMDLINE_EDITING
 #define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size */
 #define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE \
                                        + sizeof(CONFIG_SYS_PROMPT) + 16)
@@ -90,6 +91,7 @@
 #define CONFIG_SYS_MEMTEST_END         0x0FFFFFFF
 #define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 256 * 1024)
 #define CONFIG_SYS_GBL_DATA_SIZE       128     /* for initial data */
+#define CONFIG_SYS_64BIT_VSPRINTF      /* mtd desires this */
 
 #define CONFIG_MISC_INIT_R     /* call misc_init_r during start up */
 
 #define CONFIG_SMC_USE_32_BIT
 #define CONFIG_BOOTFILE                "uImage"
 
-/* flash memory and filesystem information */
-#define CONFIG_DOS_PARTITION
+/* Storage information: onenand and nand */
+#define CONFIG_CMD_ONENAND
 #define CONFIG_MTD_ONENAND_VERIFY_WRITE
 #define CONFIG_SYS_ONENAND_BASE                0x30000000
+
+#define CONFIG_CMD_NAND
 #define CONFIG_SYS_MAX_NAND_DEVICE     1
 #define CONFIG_SYS_NAND_BASE           0x40000000 /* SMPS0n */
 
+/*
+ * Filesystem information
+ *
+ * Since U-Boot has been loaded to RAM by vendor code, we could use
+ * either or both OneNand and Nand. However, we need to know where the
+ * filesystem lives. Comments below report vendor-selected partitions
+ */
 #ifdef CONFIG_BOOT_ONENAND
-
-#   define CONFIG_CMD_ONENAND /* Temporary: nand and onenand can't coexist */
    /* Partition                                Size    Start
     * XloaderTOC + X-Loader            256KB   0x00000000
     * Memory init function             256KB   0x00040000
-    * U-Boot                           2MB     0x00080000
+    * U-Boot + env                     2MB     0x00080000
     * Sysimage (kernel + ramdisk)      4MB     0x00280000
     * JFFS2 Root filesystem            22MB    0x00680000
     * JFFS2 User Data                  227.5MB 0x01C80000
     */
-#   define CONFIG_JFFS2_PART_SIZE      0x400000
-#   define CONFIG_JFFS2_PART_OFFSET    0x280000
-
+#   define CONFIG_JFFS2_DEV            "onenand0"
+#   define CONFIG_JFFS2_PART_SIZE      0x01600000
+#   define CONFIG_JFFS2_PART_OFFSET    0x00680000
 #   define CONFIG_ENV_IS_IN_ONENAND
-#   define CONFIG_ENV_SIZE             (256 * 1024)
-#   define CONFIG_ENV_ADDR             0x30300000
-
-#else /* ! CONFIG_BOOT_ONENAND */
-
-#   define CONFIG_CMD_NAND /* Temporary: nand and onenand can't coexist */
+#   define CONFIG_ENV_SIZE             0x20000 /* 128 Kb - one sector */
+#   define CONFIG_ENV_ADDR             (0x00280000 - CONFIG_ENV_SIZE)
 
+#else /*  BOOT_NAND */
+   /* Partition                                Size    Start
+    * XloaderTOC + X-Loader            256KB   0x00000000
+    * Memory init function             256KB   0x00040000
+    * U-Boot + env                     2MB     0x00080000
+    * Kernel Image                     3MB     0x00280000
+    * JFFS2 Root filesystem            22MB    0x00580000
+    * JFFS2 User Data                  100.5MB 0x01b80000
+    */
 #   define CONFIG_JFFS2_DEV            "nand0"
 #   define CONFIG_JFFS2_NAND           1 /* For the jffs2 support*/
-#   define CONFIG_JFFS2_PART_SIZE      0x00300000
-#   define CONFIG_JFFS2_PART_OFFSET    0x00280000
-
+#   define CONFIG_JFFS2_PART_SIZE      0x01600000
+#   define CONFIG_JFFS2_PART_OFFSET    0x00580000
 #   define CONFIG_ENV_IS_IN_NAND
 #   define CONFIG_ENV_SIZE             0x20000 /* 128 Kb - one sector */
-#   define CONFIG_ENV_OFFSET           (0x8000000 - CONFIG_ENV_SIZE)
+#   define CONFIG_ENV_OFFSET           (0x00280000 - CONFIG_ENV_SIZE)
 
 #endif /* CONFIG_BOOT_ONENAND */