]> git.sur5r.net Git - u-boot/blobdiff - board/xm250/flash.c
Timer: Fix misuse of ARM *timer_masked() functions outside arch/arm
[u-boot] / board / xm250 / flash.c
index b02149cd641bbfb56c239390bffd5fb847976650..e825abae1a3177a7780326b53da187b22f2163cc 100644 (file)
@@ -250,7 +250,7 @@ static ulong flash_get_size (FPW *addr, flash_info_t *info)
 int flash_erase (flash_info_t *info, int s_first, int s_last)
 {
        int flag, prot, sect;
-       ulong type, start, last;
+       ulong type, start;
        int rcode = 0;
 
        if ((s_first < 0) || (s_first > s_last)) {
@@ -283,9 +283,6 @@ int flash_erase (flash_info_t *info, int s_first, int s_last)
                printf ("\n");
        }
 
-       start = get_timer (0);
-       last = start;
-
        /* Disable interrupts which might cause a timeout here */
        flag = disable_interrupts ();
 
@@ -298,14 +295,14 @@ 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 = (FPW) 0x00500050;       /* clear status register */
                        *addr = (FPW) 0x00200020;       /* erase setup */
                        *addr = (FPW) 0x00D000D0;       /* erase confirm */
 
                        while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
-                               if (get_timer_masked () > CONFIG_SYS_FLASH_ERASE_TOUT) {
+                               if (get_timer(start) > CONFIG_SYS_FLASH_ERASE_TOUT) {
                                        printf ("Timeout\n");
                                        *addr = (FPW) 0x00B000B0;       /* suspend erase     */
                                        *addr = (FPW) 0x00FF00FF;       /* reset to read mode */
@@ -422,6 +419,7 @@ static int write_data (flash_info_t *info, ulong dest, FPW data)
        FPWV *addr = (FPWV *) dest;
        ulong status;
        int flag;
+       ulong start;
 
        /* Check if Flash is (sufficiently) erased */
        if ((*addr & data) != data) {
@@ -435,11 +433,11 @@ static int write_data (flash_info_t *info, ulong dest, FPW 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) & (FPW) 0x00800080) != (FPW) 0x00800080) {
-               if (get_timer_masked () > CONFIG_SYS_FLASH_WRITE_TOUT) {
+               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
                        *addr = (FPW) 0x00FF00FF;       /* restore read mode */
                        return (1);
                }
@@ -470,6 +468,7 @@ int flash_real_protect(flash_info_t *info, long sector, int prot)
        int rc = 0;
        vu_long *addr = (vu_long *)(info->start[sector]);
        int flag = disable_interrupts();
+       ulong start;
 
        *addr = INTEL_CLEAR;    /* Clear status register */
        if (prot) {                     /* Set sector lock bit */
@@ -481,10 +480,10 @@ int flash_real_protect(flash_info_t *info, long sector, int prot)
                *addr = INTEL_CONFIRM;  /* clear */
        }
 
-       reset_timer_masked ();
+       start = get_timer(0);
 
        while ((*addr & INTEL_FINISHED) != INTEL_FINISHED) {
-               if (get_timer_masked () > CONFIG_SYS_FLASH_UNLOCK_TOUT) {
+               if (get_timer(start) > CONFIG_SYS_FLASH_UNLOCK_TOUT) {
                        printf("Flash lock bit operation timed out\n");
                        rc = 1;
                        break;
@@ -510,13 +509,13 @@ int flash_real_protect(flash_info_t *info, long sector, int prot)
                {
                        if (info->protect[i])
                        {
-                               reset_timer_masked ();
+                               start = get_timer(0);
                                addr = (vu_long *)(info->start[i]);
                                *addr = INTEL_LOCKBIT;  /* Sector lock bit */
                                *addr = INTEL_PROTECT;  /* set */
                                while ((*addr & INTEL_FINISHED) != INTEL_FINISHED)
                                {
-                                       if (get_timer_masked () > CONFIG_SYS_FLASH_UNLOCK_TOUT)
+                                       if (get_timer(start) > CONFIG_SYS_FLASH_UNLOCK_TOUT)
                                        {
                                                printf("Flash lock bit operation timed out\n");
                                                rc = 1;