diff options
author | wdenk <wdenk> | 2004-01-06 22:38:14 +0000 |
---|---|---|
committer | wdenk <wdenk> | 2004-01-06 22:38:14 +0000 |
commit | c83bf6a2d00ef846c1fb2b0c60540f03ef203125 (patch) | |
tree | e410334c86d491dbbec765a5765eef9cccd3135a /board/pn62 | |
parent | b299e41a0d34bf96202d9bbb72739bdd9414b0cc (diff) | |
download | u-boot-imx-c83bf6a2d00ef846c1fb2b0c60540f03ef203125.zip u-boot-imx-c83bf6a2d00ef846c1fb2b0c60540f03ef203125.tar.gz u-boot-imx-c83bf6a2d00ef846c1fb2b0c60540f03ef203125.tar.bz2 |
Add a common get_ram_size() function and modify the the
board-specific files to invoke that common implementation.
Diffstat (limited to 'board/pn62')
-rw-r--r-- | board/pn62/pn62.c | 59 |
1 files changed, 15 insertions, 44 deletions
diff --git a/board/pn62/pn62.c b/board/pn62/pn62.c index 9b1fc00..c0111dc 100644 --- a/board/pn62/pn62.c +++ b/board/pn62/pn62.c @@ -76,55 +76,26 @@ int checkboard (void) long int initdram (int board_type) { - int i, cnt; - volatile uchar *base = CFG_SDRAM_BASE; - volatile ulong *addr; - ulong save[32]; - ulong val, ret = 0; + long size; + long new_bank0_end; + long mear1; + long emear1; show_startup_phase (2); - for (i = 0, cnt = (CFG_MAX_RAM_SIZE / sizeof (long)) >> 1; cnt > 0; - cnt >>= 1) { - addr = (volatile ulong *) base + cnt; - save[i++] = *addr; - *addr = ~cnt; - } - - addr = (volatile ulong *) base; - save[i] = *addr; - *addr = 0; + size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE); - if (*addr != 0) { - *addr = save[i]; - goto Done; - } - - for (cnt = 1; cnt <= CFG_MAX_RAM_SIZE / sizeof (long); cnt <<= 1) { - addr = (volatile ulong *) base + cnt; - val = *addr; - *addr = save[--i]; - if (val != ~cnt) { - ulong new_bank0_end = cnt * sizeof (long) - 1; - ulong mear1 = mpc824x_mpc107_getreg (MEAR1); - ulong emear1 = mpc824x_mpc107_getreg (EMEAR1); - - mear1 = (mear1 & 0xFFFFFF00) | - ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT); - emear1 = (emear1 & 0xFFFFFF00) | - ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT); - mpc824x_mpc107_setreg (MEAR1, mear1); - mpc824x_mpc107_setreg (EMEAR1, emear1); - - ret = cnt * sizeof (long); - goto Done; - } - } + new_bank0_end = size - 1; + mear1 = mpc824x_mpc107_getreg (MEAR1); + emear1 = mpc824x_mpc107_getreg (EMEAR1); + mear1 = (mear1 & 0xFFFFFF00) | + ((new_bank0_end & MICR_ADDR_MASK) >> MICR_ADDR_SHIFT); + emear1 = (emear1 & 0xFFFFFF00) | + ((new_bank0_end & MICR_ADDR_MASK) >> MICR_EADDR_SHIFT); + mpc824x_mpc107_setreg (MEAR1, mear1); + mpc824x_mpc107_setreg (EMEAR1, emear1); - ret = CFG_MAX_RAM_SIZE; - Done: - show_startup_phase (3); - return ret; + return (size); } /* |