summaryrefslogtreecommitdiff
path: root/board/cmc_pu2/flash.c
diff options
context:
space:
mode:
authorwdenk <wdenk>2004-12-20 11:18:07 +0000
committerwdenk <wdenk>2004-12-20 11:18:07 +0000
commit400ab719c6025c176c50bcdff342384222d7424b (patch)
tree377fb7b9c6f473464e84743dc6378d9528c9f0db /board/cmc_pu2/flash.c
parent08f272787a93cb11338fd81ab92a7439a361e3b2 (diff)
downloadu-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/flash.c')
-rw-r--r--board/cmc_pu2/flash.c15
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);
}