summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG8
-rw-r--r--Makefile9
-rw-r--r--board/omap1610inn/flash.c5
-rw-r--r--board/omap1610inn/omap1610innovator.c10
-rw-r--r--board/omap1610inn/platform.S11
-rw-r--r--include/asm-m68k/global_data.h1
-rw-r--r--include/configs/omap1610h2.h27
-rw-r--r--include/configs/omap1610inn.h27
8 files changed, 78 insertions, 20 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 7922cdefb08..21dddf13b10 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,14 @@
Changes since U-Boot 1.1.1:
======================================================================
+* Patch by Imre Deak, 26 May 2004:
+ On OMAP1610 platforms check if booting from RAM(CS0) or flash(CS3).
+ Set flash base accordingly, and decide whether to do or skip board
+ specific setup steps.
+
+* Patch by Josef Baumgartner, 26 May 2004:
+ Add missing define in include/asm-m68k/global_data.h
+
* Patch by Josef Baumgartner, 25 May 2004:
Add missing functions get_ticks() and get_tbclk() in lib_m68k/time.c
diff --git a/Makefile b/Makefile
index ee667879f12..4b9596de5a1 100644
--- a/Makefile
+++ b/Makefile
@@ -1020,7 +1020,7 @@ shannon_config : unconfig
xtract_trab = $(subst _bigram,,$(subst _bigflash,,$(subst _old,,$(subst _config,,$1))))
-xtract_omap1610xxx = $(subst _cs0boot,,$(subst _cs3boot,, $(subst _config,,$1)))
+xtract_omap1610xxx = $(subst _cs0boot,,$(subst _cs3boot,,$(subst _cs_autoboot,,$(subst _config,,$1))))
xtract_omap730p2 = $(subst _cs0boot,,$(subst _cs3boot,, $(subst _config,,$1)))
@@ -1045,12 +1045,17 @@ omap5912osk_config : unconfig
omap1610inn_config \
omap1610inn_cs0boot_config \
omap1610inn_cs3boot_config \
+omap1610inn_cs_autoboot_config \
omap1610h2_config \
omap1610h2_cs0boot_config \
-omap1610h2_cs3boot_config : unconfig
+omap1610h2_cs3boot_config \
+omap1610h2_cs_autoboot_config: unconfig
@if [ "$(findstring _cs0boot_, $@)" ] ; then \
echo "#define CONFIG_CS0_BOOT" >> ./include/config.h ; \
echo "... configured for CS0 boot"; \
+ elif [ "$(findstring _cs_autoboot_, $@)" ] ; then \
+ echo "#define CONFIG_CS_AUTOBOOT" >> ./include/config.h ; \
+ echo "... configured for CS_AUTO boot"; \
else \
echo "#define CONFIG_CS3_BOOT" >> ./include/config.h ; \
echo "... configured for CS3 boot"; \
diff --git a/board/omap1610inn/flash.c b/board/omap1610inn/flash.c
index 9b7e4ad023a..c8e4c9e25ab 100644
--- a/board/omap1610inn/flash.c
+++ b/board/omap1610inn/flash.c
@@ -89,11 +89,12 @@ unsigned long flash_init (void)
{
int i;
ulong size = 0;
+
for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
switch (i) {
case 0:
- flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
- flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
+ flash_get_size ((FPW *) CFG_FLASH_BASE, &flash_info[i]);
+ flash_get_offsets (CFG_FLASH_BASE, &flash_info[i]);
/* to reset the lock bit */
flash_unlock(&flash_info[i]);
break;
diff --git a/board/omap1610inn/omap1610innovator.c b/board/omap1610inn/omap1610innovator.c
index 521eee34c39..ab1dabeb9ff 100644
--- a/board/omap1610inn/omap1610innovator.c
+++ b/board/omap1610inn/omap1610innovator.c
@@ -36,6 +36,10 @@
#include <./configs/omap1510.h>
#endif
+#ifdef CONFIG_CS_AUTOBOOT
+unsigned long omap_flash_base;
+#endif
+
void flash__init (void);
void ether__init (void);
void set_muxconf_regs (void);
@@ -95,6 +99,12 @@ void flash__init (void)
{
#define EMIFS_GlB_Config_REG 0xfffecc0c
unsigned int regval;
+
+#ifdef CONFIG_CS_AUTOBOOT
+ /* Check swapping of CS0 and CS3, set flash base accordingly */
+ omap_flash_base = ((*((u32 *)OMAP_EMIFS_CONFIG_REG) & 0x02) == 0) ?
+ PHYS_FLASH_1_BM0 : PHYS_FLASH_1_BM1;
+#endif
regval = *((volatile unsigned int *) EMIFS_GlB_Config_REG);
/* Turn off write protection for flash devices. */
regval = regval | 0x0001;
diff --git a/board/omap1610inn/platform.S b/board/omap1610inn/platform.S
index 441edc28aed..d694f94bb9d 100644
--- a/board/omap1610inn/platform.S
+++ b/board/omap1610inn/platform.S
@@ -71,6 +71,12 @@ platformsetup:
ldr r1, VAL_ARM_IDLECT3
str r1, [r0]
+#ifdef CONFIG_CS_AUTOBOOT /* do the setup depending on boot mode */
+ ldr r0, CONF_STATUS
+ ldr r1, [r0]
+ tst r1, #0x02
+ beq disable_wd /* booting from RAM, skip setup */
+#endif
mov r1, #0x01 /* PER_EN bit */
ldr r0, REG_ARM_RSTCT2
@@ -118,6 +124,7 @@ lock_end:
/*------------------------------------------------------*
* Turn off the watchdog during init... *
*------------------------------------------------------*/
+disable_wd:
ldr r0, REG_WATCHDOG
ldr r1, WATCHDOG_VAL1
str r1, [r0]
@@ -281,6 +288,10 @@ common_tc:
/* the literal pools origin */
.ltorg
+#ifdef CONFIG_CS_AUTOBOOT
+CONF_STATUS:
+ .word 0xfffe1130 /* 32 bits */
+#endif
REG_TC_EMIFS_CONFIG: /* 32 bits */
.word 0xfffecc0c
diff --git a/include/asm-m68k/global_data.h b/include/asm-m68k/global_data.h
index f8a3d880842..f68352f1206 100644
--- a/include/asm-m68k/global_data.h
+++ b/include/asm-m68k/global_data.h
@@ -56,6 +56,7 @@ typedef struct global_data {
*/
#define GD_FLG_RELOC 0x00001 /* Code was relocated to RAM */
#define GD_FLG_DEVINIT 0x00002 /* Devices have been initialized */
+#define GD_FLG_SILENT 0x00004 /* Silent mode */
#if 0
extern gd_t *global_data;
diff --git a/include/configs/omap1610h2.h b/include/configs/omap1610h2.h
index e512f912a92..b2b0fe721bc 100644
--- a/include/configs/omap1610h2.h
+++ b/include/configs/omap1610h2.h
@@ -142,18 +142,29 @@
/*-----------------------------------------------------------------------
* Physical Memory Map
*/
-#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1 0x10000000 /* SDRAM Bank #1 */
+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1 0x10000000 /* SDRAM Bank #1 */
#define PHYS_SDRAM_1_SIZE 0x02000000 /* 32 MB */
-#ifdef CONFIG_CS0_BOOT
-#define PHYS_FLASH_1 0x0C000000
-#endif
-#ifdef CONFIG_CS3_BOOT
-#define PHYS_FLASH_1 0x00000000
+#define PHYS_FLASH_1_BM1 0x00000000 /* Flash Bank #1 if booting from flash */
+#define PHYS_FLASH_1_BM0 0x0C000000 /* Flash Bank #1 if booting from RAM */
+
+#ifdef CONFIG_CS_AUTOBOOT /* Determine CS assignment in runtime */
+
+#ifndef __ASSEMBLY__
+extern unsigned long omap_flash_base; /* set in flash__init */
#endif
+#define CFG_FLASH_BASE omap_flash_base
+
+#elif defined(CONFIG_CS0_BOOT)
+
+#define CFG_FLASH_BASE PHYS_FLASH_1_BM0
-#define CFG_FLASH_BASE PHYS_FLASH_1
+#else
+
+#define CFG_FLASH_BASE PHYS_FLASH_1_BM1
+
+#endif
/*-----------------------------------------------------------------------
* FLASH and environment organization
diff --git a/include/configs/omap1610inn.h b/include/configs/omap1610inn.h
index da8043db28d..cbf828c56be 100644
--- a/include/configs/omap1610inn.h
+++ b/include/configs/omap1610inn.h
@@ -147,18 +147,29 @@
/*-----------------------------------------------------------------------
* Physical Memory Map
*/
-#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1 0x10000000 /* SDRAM Bank #1 */
+#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
+#define PHYS_SDRAM_1 0x10000000 /* SDRAM Bank #1 */
#define PHYS_SDRAM_1_SIZE 0x02000000 /* 32 MB */
-#ifdef CONFIG_CS0_BOOT
-#define PHYS_FLASH_1 0x0C000000
-#endif
-#ifdef CONFIG_CS3_BOOT
-#define PHYS_FLASH_1 0x00000000
+#define PHYS_FLASH_1_BM1 0x00000000 /* Flash Bank #1 if booting from flash */
+#define PHYS_FLASH_1_BM0 0x0C000000 /* Flash Bank #1 if booting from RAM */
+
+#ifdef CONFIG_CS_AUTOBOOT /* Determine CS assignment in runtime */
+
+#ifndef __ASSEMBLY__
+extern unsigned long omap_flash_base; /* set in flash__init */
#endif
+#define CFG_FLASH_BASE omap_flash_base
+
+#elif defined(CONFIG_CS0_BOOT)
+
+#define CFG_FLASH_BASE PHYS_FLASH_1_BM0
-#define CFG_FLASH_BASE PHYS_FLASH_1
+#else
+
+#define CFG_FLASH_BASE PHYS_FLASH_1_BM1
+
+#endif
/*-----------------------------------------------------------------------
* FLASH and environment organization