From d4ca31c40e8888b36635967522ec7ea03fd7e70b Mon Sep 17 00:00:00 2001 From: wdenk Date: Fri, 2 Jan 2004 14:00:00 +0000 Subject: * Cleanup lowboot code for MPC5200 * Minor code cleanup (coding style) * Patch by Reinhard Meyer, 30 Dec 2003: - cpu/mpc5xxx/fec.c: added CONFIG_PHY_ADDR, added CONFIG_PHY_TYPE, - added CONFIG_PHY_ADDR to include/configs/IceCube.h, - turned debug print of PHY registers into a function (called in two places) - added support for EMK MPC5200 based modules * Fix MPC8xx PLPRCR_MFD_SHIFT typo * Add support for TQM866M modules * Fixes for TQM855M with 4 MB flash (Am29DL163 = _no_ mirror bit flash) * Fix a few compiler warnings --- board/emk/top5200/config.mk | 12 +++++++++++- board/emk/top5200/flash.c | 31 ++++++++++++++++++++++--------- board/emk/top5200/top5200.c | 11 ++++++++--- 3 files changed, 41 insertions(+), 13 deletions(-) (limited to 'board/emk') 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); -- cgit v1.1