summaryrefslogtreecommitdiff
path: root/board/emk/top5200
diff options
context:
space:
mode:
Diffstat (limited to 'board/emk/top5200')
-rw-r--r--board/emk/top5200/config.mk12
-rw-r--r--board/emk/top5200/flash.c31
-rw-r--r--board/emk/top5200/top5200.c11
3 files changed, 41 insertions, 13 deletions
diff --git a/board/emk/top5200/config.mk b/board/emk/top5200/config.mk
index 14af97a..84131fe 100644
--- a/board/emk/top5200/config.mk
+++ b/board/emk/top5200/config.mk
@@ -2,6 +2,9 @@
# (C) Copyright 2003
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
+# (C) Copyright 2003
+# Reinhard Meyer, EMK Elektronik GmbH, r.meyer@emk-elektronik.de
+#
# See file CREDITS for list of people who contributed to this
# project.
#
@@ -24,8 +27,15 @@
#
# TOP5200 board, on optional MINI5200 and EVAL5200 boards
#
+# allowed and functional TEXT_BASE values:
+#
+# 0xff000000 low boot at 0x00000100 (default board setting)
+# 0xfff00000 high boot at 0xfff00100 (board needs modification)
+# 0x00100000 RAM load and test
+#
-TEXT_BASE = 0xfff00000
+TEXT_BASE = 0xff000000
+#TEXT_BASE = 0xfff00000
#TEXT_BASE = 0x00100000
PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
diff --git a/board/emk/top5200/flash.c b/board/emk/top5200/flash.c
index b951b5f..216bce3 100644
--- a/board/emk/top5200/flash.c
+++ b/board/emk/top5200/flash.c
@@ -2,6 +2,9 @@
* (C) Copyright 2003
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*
+ * (C) Copyright 2003
+ * Reinhard Meyer, EMK Elektronik GmbH, r.meyer@emk-elektronik.de
+ *
* See file CREDITS for list of people who contributed to this
* project.
*
@@ -51,7 +54,7 @@ static flash_info_t *flash_get_info(ulong base);
unsigned long flash_init (void)
{
unsigned long size = 0;
- int i;
+ int i = 0;
extern void flash_preinit(void);
extern void flash_afterinit(uint, ulong, ulong);
ulong flashbase = CFG_FLASH_BASE;
@@ -59,10 +62,10 @@ unsigned long flash_init (void)
flash_preinit();
/* There is only ONE FLASH device */
- memset(&flash_info[0], 0, sizeof(flash_info_t));
- flash_info[0].size =
- flash_get_size((FPW *)flashbase, &flash_info[0]);
- size += flash_info[0].size;
+ memset(&flash_info[i], 0, sizeof(flash_info_t));
+ flash_info[i].size =
+ flash_get_size((FPW *)flashbase, &flash_info[i]);
+ size += flash_info[i].size;
#if CFG_MONITOR_BASE >= CFG_FLASH_BASE
/* monitor protection ON by default */
@@ -81,7 +84,7 @@ unsigned long flash_init (void)
#endif
- flash_afterinit(0, flash_info[0].start[0], flash_info[0].size);
+ flash_afterinit(i, flash_info[i].start[0], flash_info[i].size);
return size ? size : 1;
}
@@ -151,7 +154,8 @@ void flash_print_info (flash_info_t *info)
if (info->flash_id & FLASH_BTYPE) {
boottype = botboottype;
bootletter = botbootletter;
- } else {
+ }
+ else {
boottype = topboottype;
bootletter = topbootletter;
}
@@ -238,12 +242,17 @@ ulong flash_get_size (FPWV *addr, flash_info_t *info)
info->flash_id += FLASH_AM160B;
info->sector_count = 35;
info->size = 0x00200000;
+#ifdef CFG_LOWBOOT
+ offset = 0;
+#else
offset = 0x00e00000;
+#endif
info->start[0] = (ulong)addr + offset;
info->start[1] = (ulong)addr + offset + 0x4000;
info->start[2] = (ulong)addr + offset + 0x6000;
info->start[3] = (ulong)addr + offset + 0x8000;
- for (i = 4; i < info->sector_count; i++) {
+ for (i = 4; i < info->sector_count; i++)
+ {
info->start[i] = (ulong)addr + offset + 0x10000 * (i-3);
}
break;
@@ -252,8 +261,12 @@ ulong flash_get_size (FPWV *addr, flash_info_t *info)
info->flash_id += FLASH_AMDLV065D;
info->sector_count = 128;
info->size = 0x00800000;
+#ifdef CFG_LOWBOOT
+ offset = 0;
+#else
offset = 0x00800000;
- for (i = 0; i < info->sector_count; i++)
+#endif
+ for( i = 0; i < info->sector_count; i++ )
info->start[i] = (ulong)addr + offset + (i * 0x10000);
break; /* => 8 or 16 MB */
diff --git a/board/emk/top5200/top5200.c b/board/emk/top5200/top5200.c
index 536a515..3969e2a 100644
--- a/board/emk/top5200/top5200.c
+++ b/board/emk/top5200/top5200.c
@@ -36,8 +36,10 @@ long int initdram (int board_type)
{
ulong dramsize = 0;
#ifndef CFG_RAMBOOT
+#if 0
ulong t;
ulong tap_del;
+#endif
#define MODE_EN 0x80000000
#define SOFT_PRE 2
@@ -73,16 +75,19 @@ long int initdram (int board_type)
*(vu_long *)MPC5XXX_CDM_PORCFG = CFG_DRAM_TAP_DEL << 24;
#if 0
- for (tap_del = 0; tap_del < 32; tap_del++) {
+ for (tap_del = 0; tap_del < 32; tap_del++)
+ {
*(vu_long *)MPC5XXX_CDM_PORCFG = tap_del << 24;
printf ("\nTAP Delay:%x Filling DRAM...", *(vu_long *)MPC5XXX_CDM_PORCFG);
for (t = 0; t < 0x04000000; t+=4)
*(vu_long *) t = t;
printf ("Checking DRAM...\n");
- for (t = 0; t < 0x04000000; t+=4) {
+ for (t = 0; t < 0x04000000; t+=4)
+ {
ulong rval = *(vu_long *) t;
- if (rval != t) {
+ if (rval != t)
+ {
printf ("mismatch at %x: ", t);
printf (" 1.read %x", rval);
printf (" 2.read %x", *(vu_long *) t);