diff options
author | Jerry Huang <Chang-Ming.Huang@freescale.com> | 2010-01-25 14:33:29 +0800 |
---|---|---|
committer | Scott Sweeny <scott.sweeny@timesys.com> | 2010-09-29 17:32:29 -0400 |
commit | a6060fb63152c705b3a2b1355ce0840ce4afd1dc (patch) | |
tree | f45b9ab1185637a8f328fbd228f604bf56c79db4 | |
parent | 9e2ee7c62e1f7596ad01432063396664f7af0b75 (diff) |
p1022ds: On-Chip ROM boot support
Including boot from eSDHC and eSPI.
Signed-off-by: Jerry Huang <Chang-Ming.Huang@freescale.com>
-rwxr-xr-x | MAKEALL | 2 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | board/freescale/p1022ds/config.mk | 12 | ||||
-rw-r--r-- | board/freescale/p1022ds/p1022ds.c | 4 | ||||
-rw-r--r-- | board/freescale/p1022ds/tlb.c | 15 | ||||
-rw-r--r-- | drivers/misc/fsl_law.c | 3 | ||||
-rw-r--r-- | include/configs/P1022DS.h | 28 |
7 files changed, 61 insertions, 5 deletions
@@ -404,6 +404,8 @@ LIST_85xx=" \ MPC8572DS_36BIT \ P2020DS \ P2020DS_36BIT \ + P1022DS_SDCARD \ + P1022DS_SPIFLASH \ P1011RDB \ P1011RDB_NAND \ P1011RDB_SDCARD \ @@ -2514,6 +2514,8 @@ P2020DS_config: unconfig @$(MKCONFIG) -t $(@:_config=) P2020DS ppc mpc85xx p2020ds freescale P1022DS_36BIT_config \ +P1022DS_SDCARD_config \ +P1022DS_SPIFLASH_config \ P1022DS_config: unconfig @$(MKCONFIG) -t $(@:_config=) P1022DS ppc mpc85xx p1022ds freescale diff --git a/board/freescale/p1022ds/config.mk b/board/freescale/p1022ds/config.mk index be0cb2c48b..75f4e37841 100644 --- a/board/freescale/p1022ds/config.mk +++ b/board/freescale/p1022ds/config.mk @@ -23,8 +23,20 @@ # # p1022ds board # +ifeq ($(CONFIG_MK_SDCARD), y) +TEXT_BASE = $(CONFIG_RAMBOOT_TEXT_BASE) +RESET_VECTOR_ADDRESS = 0x1107fffc +endif + +ifeq ($(CONFIG_MK_SPIFLASH), y) +TEXT_BASE = $(CONFIG_RAMBOOT_TEXT_BASE) +RESET_VECTOR_ADDRESS = 0x1107fffc +endif + ifndef TEXT_BASE TEXT_BASE = 0xeff80000 endif +ifndef RESET_VECTOR_ADDRESS RESET_VECTOR_ADDRESS = 0xeffffffc +endif diff --git a/board/freescale/p1022ds/p1022ds.c b/board/freescale/p1022ds/p1022ds.c index 39c441009e..4b2e1345de 100644 --- a/board/freescale/p1022ds/p1022ds.c +++ b/board/freescale/p1022ds/p1022ds.c @@ -98,6 +98,10 @@ phys_size_t initdram(int board_type) puts("Initializing...."); +#if defined(CONFIG_SYS_RAMBOOT) + return CONFIG_SYS_SDRAM_SIZE * 1024 * 1024; +#endif + #ifdef CONFIG_SPD_EEPROM dram_size = fsl_ddr_sdram(); #else diff --git a/board/freescale/p1022ds/tlb.c b/board/freescale/p1022ds/tlb.c index fac7ebbf09..e5eb93a5d2 100644 --- a/board/freescale/p1022ds/tlb.c +++ b/board/freescale/p1022ds/tlb.c @@ -82,10 +82,17 @@ struct fsl_e_tlb_entry tlb_table[] = { MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 0, 6, BOOKE_PAGESZ_256K, 1), - /* *I*G - NAND */ -/* SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS, */ -/* MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, */ -/* 0, 7, BOOKE_PAGESZ_1M, 1), */ +#ifdef CONFIG_SYS_RAMBOOT + /* *I*G - eSDHC/eSPI/NAND */ + SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE, + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, + 0, 8, BOOKE_PAGESZ_1G, 1), + + SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000, + CONFIG_SYS_DDR_SDRAM_BASE + 0x40000000, + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, + 0, 9, BOOKE_PAGESZ_1G, 1), +#endif SET_TLB_ENTRY(1, PIXIS_BASE, PIXIS_BASE_PHYS, MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, diff --git a/drivers/misc/fsl_law.c b/drivers/misc/fsl_law.c index c70b984b7c..c37383b9f6 100644 --- a/drivers/misc/fsl_law.c +++ b/drivers/misc/fsl_law.c @@ -285,6 +285,9 @@ void init_laws(void) #else #error FSL_HW_NUM_LAWS can not be greater than 32 w/o code changes #endif +#if defined(CONFIG_RAMBOOT_SDCARD) || defined(CONFIG_RAMBOOT_SPIFLASH) + gd->used_laws = (1 << CONFIG_SYS_RESERVED_LAW0); +#endif for (i = 0; i < num_law_entries; i++) { if (law_table[i].index == -1) diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h index ede419e6c8..52be563ea7 100644 --- a/include/configs/P1022DS.h +++ b/include/configs/P1022DS.h @@ -31,6 +31,16 @@ #define CONFIG_PHYS_64BIT #endif +#ifdef CONFIG_MK_SDCARD +#define CONFIG_RAMBOOT_SDCARD 1 +#define CONFIG_RAMBOOT_TEXT_BASE 0x11000000 +#endif + +#ifdef CONFIG_MK_SPIFLASH +#define CONFIG_RAMBOOT_SPIFLASH 1 +#define CONFIG_RAMBOOT_TEXT_BASE 0x11000000 +#endif + /* #define DEBUG */ /* High Level Configuration Options */ #define CONFIG_BOOKE 1 /* BOOKE */ @@ -111,7 +121,7 @@ extern unsigned long calculate_board_ddr_clk(unsigned long dummy); /* DDR Setup */ #define CONFIG_SPD_EEPROM #define CONFIG_DDR_SPD -#define CONFIG_SYS_DDR_TLB_START 9 +#define CONFIG_SYS_DDR_TLB_START 10 #define CONFIG_VERY_BIG_RAM #define CONFIG_FSL_DDR3 1 #undef CONFIG_FSL_DDR_INTERACTIVE @@ -222,6 +232,12 @@ extern unsigned long calculate_board_ddr_clk(unsigned long dummy); #define CONFIG_SYS_MONITOR_BASE TEXT_BASE /* start of monitor */ +#if defined(CONFIG_RAMBOOT_SDCARD) || defined(CONFIG_RAMBOOT_SPIFLASH) +#define CONFIG_SYS_RAMBOOT +#else +#undef CONFIG_SYS_RAMBOOT +#endif + #define CONFIG_FLASH_CFI_DRIVER #define CONFIG_SYS_FLASH_CFI #define CONFIG_SYS_FLASH_EMPTY_INFO @@ -309,6 +325,10 @@ extern unsigned long calculate_board_ddr_clk(unsigned long dummy); #define CONFIG_SYS_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */ #define CONFIG_SYS_MALLOC_LEN (6 * 1024 * 1024) /* Reserved for malloc */ +#if defined(CONFIG_RAMBOOT_SDCARD) || defined(CONFIG_RAMBOOT_SPIFLASH) +#define CONFIG_SYS_RESERVED_LAW0 0 +#endif + /* #define CONFIG_SYS_NAND_BASE 0xffa00000 */ /* #ifdef CONFIG_PHYS_64BIT */ /* #define CONFIG_SYS_NAND_BASE_PHYS 0xfffa00000ull */ @@ -622,6 +642,11 @@ extern unsigned long calculate_board_ddr_clk(unsigned long dummy); /* * Environment */ +#if defined(CONFIG_SYS_RAMBOOT) +#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 +#else #define CONFIG_ENV_IS_IN_FLASH 1 #if CONFIG_SYS_MONITOR_BASE > 0xfff80000 #define CONFIG_ENV_ADDR 0xfff80000 @@ -630,6 +655,7 @@ extern unsigned long calculate_board_ddr_clk(unsigned long dummy); #endif #define CONFIG_ENV_SIZE 0x2000 #define CONFIG_ENV_SECT_SIZE 0x20000 /* 128K (one sector) */ +#endif #define CONFIG_LOADS_ECHO 1 /* echo on for serial download */ #define CONFIG_SYS_LOADS_BAUD_CHANGE 1 /* allow baudrate change */ |