Fix problems with CMC_PU2 flash driver.
authorwdenk <wdenk>
Mon, 20 Dec 2004 11:18:07 +0000 (11:18 +0000)
committerwdenk <wdenk>
Mon, 20 Dec 2004 11:18:07 +0000 (11:18 +0000)
board/cmc_pu2/flash.c

index f119765a99c1f67dca893c4409720eadc12567eb..846a2e6bf136432e8559580ccd915d013083b143 100644 (file)
@@ -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);
                }