arm nomadik: allow Nand and OneNand to coexists

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>
This commit is contained in:
Alessandro Rubini 2009-06-22 09:18:57 +02:00 committed by Jean-Christophe PLAGNIOL-VILLARD
parent fd14c41a86
commit f7aa59b29a
4 changed files with 47 additions and 20 deletions

View File

@ -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

View 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;
}

View 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

View 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 */
@ -120,43 +122,54 @@
#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 */