mirror of
https://github.com/linux-sunxi/u-boot-sunxi.git
synced 2024-02-12 11:16:03 +08:00
* 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
This commit is contained in:
@ -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
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user