diff options
author | wdenk <wdenk> | 2004-12-20 11:18:07 +0000 |
---|---|---|
committer | wdenk <wdenk> | 2004-12-20 11:18:07 +0000 |
commit | 400ab719c6025c176c50bcdff342384222d7424b (patch) | |
tree | 377fb7b9c6f473464e84743dc6378d9528c9f0db /board/cmc_pu2 | |
parent | 08f272787a93cb11338fd81ab92a7439a361e3b2 (diff) | |
download | u-boot-imx-400ab719c6025c176c50bcdff342384222d7424b.zip u-boot-imx-400ab719c6025c176c50bcdff342384222d7424b.tar.gz u-boot-imx-400ab719c6025c176c50bcdff342384222d7424b.tar.bz2 |
Fix problems with CMC_PU2 flash driver.
Diffstat (limited to 'board/cmc_pu2')
-rw-r--r-- | board/cmc_pu2/flash.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/board/cmc_pu2/flash.c b/board/cmc_pu2/flash.c index f119765..846a2e6 100644 --- a/board/cmc_pu2/flash.c +++ b/board/cmc_pu2/flash.c @@ -335,11 +335,11 @@ int flash_erase (flash_info_t *info, int s_first, int s_last) if (l_sect < 0) goto DONE; - start = get_timer (0); + reset_timer_masked (); last = start; addr = (vu_short *)(info->start[l_sect]); while ((addr[0] & 0x0080) != 0x0080) { - if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) { + if ((now = get_timer_masked ()) > CFG_FLASH_ERASE_TOUT) { printf ("Timeout\n"); return 1; } @@ -394,6 +394,7 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt) while (cnt >= 2) { data = *((vu_short *)src); if ((rc = write_word_amd(info, (vu_short *)wp, data)) != 0) { +printf ("write_buff 1: write_word_amd() rc=%d\n", rc); return (rc); } src += 2; @@ -402,13 +403,13 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt) } if (cnt == 0) { - return (0); + return (ERR_OK); } if (cnt == 1) { - data = (*((volatile u8 *) src)) | (*((volatile u8 *) (wp + 1)) - << 8); + data = (*((volatile u8 *) src)) | (*((volatile u8 *) (wp + 1)) << 8); if ((rc = write_word_amd(info, (vu_short *)wp, data)) != 0) { +printf ("write_buff 1: write_word_amd() rc=%d\n", rc); return (rc); } src += 1; @@ -455,11 +456,11 @@ static int write_word_amd (flash_info_t *info, vu_short *dest, ushort data) if (flag) enable_interrupts(); - start = get_timer (0); + reset_timer_masked (); /* data polling for D7 */ while ((*dest & 0x0080) != (data & 0x0080)) { - if (get_timer(start) > CFG_FLASH_WRITE_TOUT) { + if (get_timer_masked () > CFG_FLASH_WRITE_TOUT) { *dest = 0x00F0; /* reset bank */ return (1); } |