diff options
Diffstat (limited to 'board/cm4008/flash.c')
| -rw-r--r-- | board/cm4008/flash.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/board/cm4008/flash.c b/board/cm4008/flash.c index 2e6687246..d6fd5195d 100644 --- a/board/cm4008/flash.c +++ b/board/cm4008/flash.c @@ -209,6 +209,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)  	int flag, prot, sect;  	ulong type;  	int rcode = 0; +	ulong start;  	if ((s_first < 0) || (s_first > s_last)) {  		if (info->flash_id == FLASH_UNKNOWN) { @@ -250,7 +251,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)  			printf ("Erasing sector %2d ... ", sect);  			/* arm simple, non interrupt dependent timer */ -			reset_timer_masked (); +			start = get_timer(0);  			addr = (volatile unsigned char *) (info->start[sect]);  			*addr = 0x50;	/* clear status register */ @@ -258,7 +259,7 @@ int flash_erase (flash_info_t * info, int s_first, int s_last)  			*addr = 0xD0;	/* erase confirm */  			while (((status = *addr) & 0x80) != 0x80) { -				if (get_timer_masked () > +				if (get_timer(start) >  				    CONFIG_SYS_FLASH_ERASE_TOUT) {  					printf ("Timeout\n");  					*addr = 0xB0;	/* suspend erase */ @@ -370,6 +371,7 @@ static int write_data (flash_info_t * info, ulong dest, unsigned char data)  	volatile unsigned char *addr = (volatile unsigned char *) dest;  	ulong status;  	int flag; +	ulong start;  	/* Check if Flash is (sufficiently) erased */  	if ((*addr & data) != data) { @@ -384,11 +386,11 @@ static int write_data (flash_info_t * info, ulong dest, unsigned char data)  	*addr = data;  	/* arm simple, non interrupt dependent timer */ -	reset_timer_masked (); +	start = get_timer(0);  	/* wait while polling the status register */  	while (((status = *addr) & 0x80) != 0x80) { -		if (get_timer_masked () > CONFIG_SYS_FLASH_WRITE_TOUT) { +		if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {  			*addr = 0xFF;	/* restore read mode */  			return (1);  		} |