changeset 2211:acfe2ec52590

Fix build problems on systems without FLASH locking
author gthomas
date Tue, 23 May 2006 11:56:45 +0000
parents 7f47e5d2fe20
children 990ca86dc9d4
files packages/redboot/current/ChangeLog packages/redboot/current/src/flash.c
diffstat 2 files changed, 14 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/packages/redboot/current/ChangeLog
+++ b/packages/redboot/current/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-23  Gary Thomas  <gary@mlbassoc.com>
+
+	* src/flash.c (fis_update_directory): Fix problems building on systems
+	with no FLASH locking.
+
 2006-04-19 Alexander Neundorf <alexander.neundorf@jenoptik.com>
 	* src/flash.c, src/main.c, src/fconfig.c: 
         * include/fis.h, include/redboot.h:
--- a/packages/redboot/current/src/flash.c
+++ b/packages/redboot/current/src/flash.c
@@ -295,12 +295,14 @@ fis_update_directory(int autolock, int e
 {
    void* err_addr=0;
 
+#ifdef CYGHWR_IO_FLASH_BLOCK_LOCKING
 #ifdef CYGSEM_REDBOOT_FLASH_LOCK_SPECIAL
    // Ensure [quietly] that the directory is unlocked before trying to update and locked again afterwards
    int do_autolock=1;
 #else
    int do_autolock=autolock;
 #endif
+#endif
 
 #ifdef CYGOPT_REDBOOT_REDUNDANT_FIS
 
@@ -330,8 +332,10 @@ fis_update_directory(int autolock, int e
 
       flash_program(tmp_fis_addr, img->u.valid_info.valid_flag, sizeof(img->u.valid_info.valid_flag), (void **)&err_addr);
    }
+#ifdef CYGHWR_IO_FLASH_BLOCK_LOCKING
    if (do_autolock)
       flash_lock((void *)fis_addr, fisdir_size, (void **)&err_addr);
+#endif
 
 #else // CYGOPT_REDBOOT_REDUNDANT_FIS
     int blk_size = fisdir_size;
@@ -343,8 +347,10 @@ fis_update_directory(int autolock, int e
     conf_endian_fixup((char *)fis_work_block+fisdir_size);
     blk_size += cfg_size;
 #endif
+#ifdef CYGHWR_IO_FLASH_BLOCK_LOCKING
     if (do_autolock)
-    flash_unlock((void *)fis_addr, blk_size, (void **)&err_addr);
+        flash_unlock((void *)fis_addr, blk_size, (void **)&err_addr);
+#endif
 
     if ((stat = flash_erase(fis_addr, blk_size, (void **)&err_addr)) != 0) {
         diag_printf("Error erasing FIS directory at %p: %s\n", err_addr, flash_errmsg(stat));
@@ -356,8 +362,10 @@ fis_update_directory(int autolock, int e
         }
     }
     fis_endian_fixup(fis_work_block);
+#ifdef CYGHWR_IO_FLASH_BLOCK_LOCKING
     if (do_autolock)
        flash_lock((void *)fis_addr, blk_size, (void **)&err_addr);
+#endif
 
 #endif // CYGOPT_REDBOOT_REDUNDANT_FIS