The MPC8536E is capable of booting from the on-chip ROM - boot from eSDHC and boot from eSPI. When power on, the porcessor excutes the ROM code to initialize the eSPI/eSDHC controller, and loads the mian U-Boot image from the memory device that interfaced to the controller, such as the SDCard or SPI EEPROM, to the target memory, e.g. SDRAM or L2SRAM, then boot from it.
The memory device should contain a specific data structure with control word and config word at the fixed address. The config word direct the process how to config the memory device, and the control word direct the processor where to find the image on the memory device, or where copy the main image to. The user can use any method to store the data structure to the memory device, only if store it on the assigned address. The on-chip ROM code will map the whole 4GB address space by setting entry0 in the TLB1, so the main image need to switch to Address space 1 to disable this mapping and map the address space again. This patch implements loading the mian U-Boot image into L2SRAM, so the image can configure the system memory by using SPD EEPROM. Signed-off-by: Mingkai Hu <mingkai...@freescale.com> --- Makefile | 4 +++- board/freescale/mpc8536ds/config.mk | 8 ++++++++ include/configs/MPC8536DS.h | 10 +++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index db69ef3..c4d4906 100644 --- a/Makefile +++ b/Makefile @@ -2407,7 +2407,9 @@ ATUM8548_config: unconfig @$(MKCONFIG) $(@:_config=) ppc mpc85xx atum8548 MPC8536DS_config \ -MPC8536DS_NAND_config: unconfig +MPC8536DS_NAND_config \ +MPC8536DS_SDCARD_config \ +MPC8536DS_SPIFLASH_config: unconfig @$(MKCONFIG) -t $(@:_config=) MPC8536DS ppc mpc85xx mpc8536ds freescale MPC8540ADS_config: unconfig diff --git a/board/freescale/mpc8536ds/config.mk b/board/freescale/mpc8536ds/config.mk index f747fe8..d6b721b 100644 --- a/board/freescale/mpc8536ds/config.mk +++ b/board/freescale/mpc8536ds/config.mk @@ -29,6 +29,14 @@ TEXT_BASE = 0xf8f82000 endif endif +ifeq ($(CONFIG_OPT_SDCARD),y) +TEXT_BASE = 0xf8f80000 +endif + +ifeq ($(CONFIG_OPT_SPIFLASH),y) +TEXT_BASE = 0xf8f80000 +endif + ifndef TEXT_BASE TEXT_BASE = 0xeff80000 endif diff --git a/include/configs/MPC8536DS.h b/include/configs/MPC8536DS.h index 3204bdc..63b86f6 100644 --- a/include/configs/MPC8536DS.h +++ b/include/configs/MPC8536DS.h @@ -207,7 +207,8 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy); #define CONFIG_SYS_MONITOR_BASE TEXT_BASE /* start of monitor */ -#if defined(CONFIG_SYS_SPL) || defined(CONFIG_NAND_U_BOOT) +#if defined(CONFIG_SYS_SPL) || defined(CONFIG_NAND_U_BOOT) \ + || defined(CONFIG_OPT_SDCARD) || defined(CONFIG_OPT_SPIFLASH) #define CONFIG_SYS_RAMBOOT #else #undef CONFIG_SYS_RAMBOOT @@ -549,6 +550,13 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy); #define CONFIG_ENV_IS_IN_NAND 1 #define CONFIG_ENV_SIZE CONFIG_SYS_NAND_BLOCK_SIZE #define CONFIG_ENV_OFFSET ((512 * 1024) + CONFIG_SYS_NAND_BLOCK_SIZE) +#elif defined(CONFIG_OPT_SDCARD) + #define CONFIG_ENV_IS_IN_SDCARD 1 + #define CONFIG_ENV_SIZE 0x2000 +#elif defined(CONFIG_OPT_SPIFLASH) + #define CONFIG_ENV_IS_NOWHERE 1 /* Store ENV in memory only */ + #define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - 0x1000) + #define CONFIG_ENV_SIZE 0x2000 #endif #else #define CONFIG_ENV_IS_IN_FLASH 1 -- 1.5.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot