changeset 2317:ce093f7a0343

* cdl/flash_intel_28fxxx.cdl, include/flash_28fxxx.inl: Make the timeout configurable by adding a new CDL-option CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT
author jlarmour
date Fri, 17 Nov 2006 14:03:34 +0000
parents bc6a2a0cf058
children 6d4c075d2939
files packages/devs/flash/intel/28fxxx/current/ChangeLog packages/devs/flash/intel/28fxxx/current/cdl/flash_intel_28fxxx.cdl packages/devs/flash/intel/28fxxx/current/include/flash_28fxxx.inl
diffstat 3 files changed, 28 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/packages/devs/flash/intel/28fxxx/current/ChangeLog
+++ b/packages/devs/flash/intel/28fxxx/current/ChangeLog
@@ -1,3 +1,9 @@
+2006-11-17  Alexander Neundorf <alexander.neundorf@jenoptik.com>
+
+	* cdl/flash_intel_28fxxx.cdl, include/flash_28fxxx.inl: 
+	Make the timeout configurable by adding a new CDL-option 
+	CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT
+
 2006-05-10  Sergei Gavrikov <sg@belvok.com>
 
 	* cdl/flash_intel_28fxxx.cdl, include/flash_28fxxx_parts.inl: Add
--- a/packages/devs/flash/intel/28fxxx/current/cdl/flash_intel_28fxxx.cdl
+++ b/packages/devs/flash/intel/28fxxx/current/cdl/flash_intel_28fxxx.cdl
@@ -63,6 +63,18 @@ cdl_package CYGPKG_DEVS_FLASH_INTEL_28FX
 
     requires      { CYGINT_DEVS_FLASH_INTEL_VARIANTS != 0 }
 
+    cdl_option CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT {
+        display       "Timeout for flash operations (simple counter based)"
+        flavor        data
+        legal_values  1000000 to 1000000000
+        default_value 50000000
+        description   " 
+            Timeout for flash operations. This is just a simple
+            counter. It depends on the speed of the flash, the processor, etc.
+            It has to be adjusted for each hardware configuration. "
+    }
+
+
     cdl_interface CYGINT_DEVS_FLASH_INTEL_VARIANTS {
         display   "Number of included variants"
     }
--- a/packages/devs/flash/intel/28fxxx/current/include/flash_28fxxx.inl
+++ b/packages/devs/flash/intel/28fxxx/current/include/flash_28fxxx.inl
@@ -297,7 +297,7 @@ flash_erase_block(void* block, unsigned 
         ROM[0] = FLASH_Block_Erase;
         *b_v = FLASH_Confirm;
 
-        timeout = 5000000;
+        timeout = CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT ;
         while(((stat = ROM[0]) & FLASH_Status_Ready) != FLASH_Status_Ready) {
             if (--timeout == 0) break;
         }
@@ -376,7 +376,7 @@ flash_program_buf(void* addr, void* data
             if (wc > len) wc = len;
             len -= wc;
             wc = wc / ((CYGNUM_FLASH_WIDTH/8)*CYGNUM_FLASH_INTERLEAVE);  // Word count
-            timeout = 5000000;
+            timeout = CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT;
             
             *BA = FLASH_Write_Buffer;
             while(((stat = ROM[0]) & FLASH_Status_Ready) != FLASH_Status_Ready) {
@@ -394,7 +394,7 @@ flash_program_buf(void* addr, void* data
             *BA = FLASH_Confirm;
             
             ROM[0] = FLASH_Read_Status;
-            timeout = 5000000;
+            timeout = CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT;
             while(((stat = ROM[0]) & FLASH_Status_Ready) != FLASH_Status_Ready) {
                 if (--timeout == 0) {
                     res = FLASH_ERR_DRV_TIMEOUT;
@@ -409,7 +409,7 @@ flash_program_buf(void* addr, void* data
         addr_v = FLASH_P2V(addr_p++);
         ROM[0] = FLASH_Program;
         *addr_v = *data_p;
-        timeout = 5000000;
+        timeout = CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT;
         while(((stat = ROM[0]) & FLASH_Status_Ready) != FLASH_Status_Ready) {
             if (--timeout == 0) {
                 res = FLASH_ERR_DRV_TIMEOUT;
@@ -458,7 +458,7 @@ flash_lock_block(void* block)
     volatile flash_data_t *ROM;
     int res = FLASH_ERR_OK;
     flash_data_t state;
-    int timeout = 5000000;
+    int timeout = CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT;
     volatile flash_data_t* b_p = (flash_data_t*) block;
     volatile flash_data_t *b_v;
     cyg_bool bootblock;
@@ -531,7 +531,7 @@ flash_unlock_block(void* block, int bloc
     volatile flash_data_t *ROM;
     int res = FLASH_ERR_OK;
     flash_data_t state;
-    int timeout = 5000000;
+    int timeout = CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT;
     volatile flash_data_t* b_p = (flash_data_t*) block;
     volatile flash_data_t *b_v;
 
@@ -599,7 +599,7 @@ flash_unlock_block(void* block, int bloc
     // Clears all lock bits
     ROM[0] = FLASH_Clear_Lock;
     ROM[0] = FLASH_Clear_Lock_Confirm;  // Confirmation
-    timeout = 5000000;
+    timeout = CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT;
     while(((state = ROM[0]) & FLASH_Status_Ready) != FLASH_Status_Ready) {
         if (--timeout == 0) break;
     }
@@ -611,7 +611,7 @@ flash_unlock_block(void* block, int bloc
         if (is_locked[i]) {
             *b_v = FLASH_Set_Lock;
             *b_v = FLASH_Set_Lock_Confirm;  // Confirmation
-            timeout = 5000000;
+            timeout = CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT;
             while(((state = ROM[0]) & FLASH_Status_Ready)
                   != FLASH_Status_Ready) {
                 if (--timeout == 0){
@@ -736,7 +736,7 @@ flash_unlock_block(void* block, int bloc
     // Clears all lock bits
     ROM[0] = FLASH_Clear_Locks;
     ROM[0] = FLASH_Clear_Locks_Confirm;  // Confirmation
-    timeout = 5000000;
+    timeout = CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT;
     while(((stat = ROM[0]) & FLASH_Status_Ready) != FLASH_Status_Ready) {
         if (--timeout == 0) break;
     }
@@ -748,7 +748,7 @@ flash_unlock_block(void* block, int bloc
         if (is_locked[i]) {
             *bpv = FLASH_Set_Lock;
             *bpv = FLASH_Set_Lock_Confirm;  // Confirmation
-            timeout = 5000000;
+            timeout = CYGNUM_DEVS_FLASH_INTEL_28FXXX_TIMEOUT;
             while(((stat = ROM[0]) & FLASH_Status_Ready) != FLASH_Status_Ready) {
                 if (--timeout == 0) break;
             }