summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Huang <Chang-Ming.Huang@freescale.com>2010-01-25 14:33:29 +0800
committerScott Sweeny <scott.sweeny@timesys.com>2010-09-29 17:32:29 -0400
commita6060fb63152c705b3a2b1355ce0840ce4afd1dc (patch)
treef45b9ab1185637a8f328fbd228f604bf56c79db4
parent9e2ee7c62e1f7596ad01432063396664f7af0b75 (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-xMAKEALL2
-rw-r--r--Makefile2
-rw-r--r--board/freescale/p1022ds/config.mk12
-rw-r--r--board/freescale/p1022ds/p1022ds.c4
-rw-r--r--board/freescale/p1022ds/tlb.c15
-rw-r--r--drivers/misc/fsl_law.c3
-rw-r--r--include/configs/P1022DS.h28
7 files changed, 61 insertions, 5 deletions
diff --git a/MAKEALL b/MAKEALL
index f9caabd8ff..62a15487c0 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -404,6 +404,8 @@ LIST_85xx=" \
MPC8572DS_36BIT \
P2020DS \
P2020DS_36BIT \
+ P1022DS_SDCARD \
+ P1022DS_SPIFLASH \
P1011RDB \
P1011RDB_NAND \
P1011RDB_SDCARD \
diff --git a/Makefile b/Makefile
index b69e06d933..f0f6818285 100644
--- a/Makefile
+++ b/Makefile
@@ -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 */