diff -rbup current/cdl/flash_intel_28fxxx.cdl current.modified/cdl/flash_intel_28fxxx.cdl --- current/cdl/flash_intel_28fxxx.cdl 2006-05-10 10:40:55.000000000 +0200 +++ current.modified/cdl/flash_intel_28fxxx.cdl 2006-11-17 14:21:48.000000000 +0100 @@ -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" } diff -rbup current/ChangeLog current.modified/ChangeLog --- current/ChangeLog 2006-11-17 14:19:49.000000000 +0100 +++ current.modified/ChangeLog 2006-11-17 14:19:53.000000000 +0100 @@ -1,3 +1,9 @@ +2006-11-17 Alexander Neundorf + + * 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 * cdl/flash_intel_28fxxx.cdl, include/flash_28fxxx_parts.inl: Add diff -rbup current/include/flash_28fxxx.inl current.modified/include/flash_28fxxx.inl --- current/include/flash_28fxxx.inl 2002-12-12 22:15:27.000000000 +0100 +++ current.modified/include/flash_28fxxx.inl 2006-11-17 13:54:50.000000000 +0100 @@ -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; }