diff options
Diffstat (limited to 'board/hymod/flash.c')
| -rw-r--r-- | board/hymod/flash.c | 24 | 
1 files changed, 12 insertions, 12 deletions
| diff --git a/board/hymod/flash.c b/board/hymod/flash.c index 7d1ae30e4..ad0a229d9 100644 --- a/board/hymod/flash.c +++ b/board/hymod/flash.c @@ -43,29 +43,26 @@ flash_info_t flash_info[CFG_MAX_FLASH_BANKS];	/* info for FLASH chips */   * in the flash_info entry "fip". Fatal error if nothing there.   */  static void -bank_probe (flash_info_t *fip, bank_addr_t base) +bank_probe (flash_info_t *fip, volatile bank_addr_t base)  { -	bank_addr_t addr; +	volatile bank_addr_t addr;  	bank_word_t word;  	int i;  	/* reset the flash */  	*base = BANK_CMD_RST; -	/* check the manufacturer id - must be intel */ +	/* put flash into read id mode */  	*base = BANK_CMD_RD_ID; -	word = *BANK_REG_MAN_CODE (base); -	*base = BANK_CMD_RST; +	/* check the manufacturer id - must be intel */ +	word = *BANK_REG_MAN_CODE (base);  	if (word != BANK_FILL_WORD (INTEL_MANUFACT&0xff))  		panic ("\nbad manufacturer's code (0x%08lx) at addr 0x%08lx",  			(unsigned long)word, (unsigned long)base);  	/* check the device id */ -	*base = BANK_CMD_RD_ID;  	word = *BANK_REG_DEV_CODE (base); -	*base = BANK_CMD_RST; -  	switch (word) {  	case BANK_FILL_WORD (INTEL_ID_28F320J5&0xff): @@ -110,12 +107,15 @@ bank_probe (flash_info_t *fip, bank_addr_t base)  	}  	fip->size = (bank_size_t)addr - (bank_size_t)base; + +	/* reset the flash */ +	*base = BANK_CMD_RST;  }  static void  bank_reset (flash_info_t *info, int sect)  { -	bank_addr_t addr = (bank_addr_t)info->start[sect]; +	volatile bank_addr_t addr = (bank_addr_t)info->start[sect];  #ifdef FLASH_DEBUG  	printf ("writing reset cmd to addr 0x%08lx\n", (unsigned long)addr); @@ -127,7 +127,7 @@ bank_reset (flash_info_t *info, int sect)  static void  bank_erase_init (flash_info_t *info, int sect)  { -	bank_addr_t addr = (bank_addr_t)info->start[sect]; +	volatile bank_addr_t addr = (bank_addr_t)info->start[sect];  	int flag;  #ifdef FLASH_DEBUG @@ -152,7 +152,7 @@ bank_erase_init (flash_info_t *info, int sect)  static int  bank_erase_poll (flash_info_t *info, int sect)  { -	bank_addr_t addr = (bank_addr_t)info->start[sect]; +	volatile bank_addr_t addr = (bank_addr_t)info->start[sect];  	bank_word_t stat = *addr;  #ifdef FLASH_DEBUG @@ -176,7 +176,7 @@ bank_erase_poll (flash_info_t *info, int sect)  }  static int -bank_write_word (bank_addr_t addr, bank_word_t value) +bank_write_word (volatile bank_addr_t addr, bank_word_t value)  {  	bank_word_t stat;  	ulong start; |