diff options
Diffstat (limited to 'board/oxc/oxc.c')
| -rw-r--r-- | board/oxc/oxc.c | 56 | 
1 files changed, 15 insertions, 41 deletions
| diff --git a/board/oxc/oxc.c b/board/oxc/oxc.c index 0d6fc8536..8ac0e79a0 100644 --- a/board/oxc/oxc.c +++ b/board/oxc/oxc.c @@ -35,50 +35,24 @@ int checkboard (void)  long int initdram (int board_type)  {  #ifndef CFG_RAMBOOT -	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; -	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: -	return ret; +	return (size);  #else  	/* if U-Boot starts from RAM, then suppose we have 16Mb of RAM */  	return (16 << 20); |