diff options
Diffstat (limited to 'board/pn62/pn62.c')
| -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 9b1fc00e3..c0111dcd9 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; - -	if (*addr != 0) { -		*addr = save[i]; -		goto Done; -	} +	size = get_ram_size(CFG_SDRAM_BASE, CFG_MAX_RAM_SIZE); -	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);  }  /* |