]> git.kernelconcepts.de Git - karo-tx-redboot.git/blobdiff - packages/redboot/v2_0/src/flash_load.c
unified MX27, MX25, MX37 trees
[karo-tx-redboot.git] / packages / redboot / v2_0 / src / flash_load.c
index 9082502c318776ede40d7feaf3efe47f45d3bc86..7a7627556909ce95357d189f012d4af8209e1ac8 100644 (file)
@@ -43,9 +43,9 @@
 // Author(s):    Oliver Munz
 // Contributors: om, asl
 // Date:         2006-02-21
-// Purpose:      
-// Description:  
-//              
+// Purpose:
+// Description:
+//
 // This code is part of RedBoot (tm).
 //
 //####DESCRIPTIONEND####
 
 static int flash_block_size;
 
-static cyg_uint8 * current_flash_page;
+static cyg_uint8 *current_flash_page;
 
 /* Allocation of the flash-sector size RAM-buffer is done */
-static bool init_done = false; 
+static bool init_done = false;
 
 /* We have initialized the current page ready for writing */
-static bool flash_page_init = false; 
+static bool flash_page_init = false;
 
 static cyg_uint8 *flash_buffer;
 
 // If the io flash code outputs when erasing/writing it will upset the
 // download over the communications channel. So we install a dummy
 // print function.
-static int dummy_printf(const char *fmt, ...){ 
-  return 0;
+static int dummy_printf(const char *fmt, ...)
+{
+       return 0;
 }
 
 // Calculate the address of the first byte in a flash block
-static cyg_uint8 * flash_block_begin(cyg_uint32 addr) 
+static cyg_uint8 *flash_block_begin(cyg_uint32 addr)
 {
-  return (cyg_uint8 *)
-    ((addr / flash_block_size) * flash_block_size);
+       return (cyg_uint8 *)
+               ((addr / flash_block_size) * flash_block_size);
 }
 
 // Initialize the loading process
 void flash_load_start(void)
 {
-  flash_init(dummy_printf);
-  
-  init_done = true;
-  flash_page_init = false;
+       flash_init(dummy_printf);
+
+       init_done = true;
+       flash_page_init = false;
 }
 
 // Write a byte into flash. We maintain a copy in RAM of the FLASH
@@ -101,66 +102,66 @@ void flash_load_start(void)
 // or the flash_load_finish function is called.
 void flash_load_write(cyg_uint8 *flash_addr, cyg_uint8 value)
 {
-  
-  cyg_uint32 retcode = FLASH_ERR_OK;
-  void * err_addr;
-  cyg_uint32 addr = (cyg_uint32)flash_addr;
-  cyg_uint32 offset;
-  
-  if (!flash_page_init) { 
-    /* First Byte for the current flash block. Read the current contents */
-    current_flash_page = flash_block_begin(addr);
-    flash_read(flash_buffer, current_flash_page, flash_block_size, &err_addr); 
-    flash_page_init = true;
-  } 
-  if (flash_block_begin(addr) != current_flash_page) { 
-    /* We have moved into the next flash page. Write the current
-       page so we can move on */
-    retcode = flash_erase(current_flash_page, flash_block_size, &err_addr);
-    if (retcode != FLASH_ERR_OK){ /* Flash ERROR */
-      diag_printf("Error erase at %p: %s\n", err_addr, flash_errmsg(retcode));
-      return;
-    }
-    
-    retcode = flash_program(current_flash_page, flash_buffer, 
-                            flash_block_size, &err_addr); 
-    if (retcode != FLASH_ERR_OK){ 
-      diag_printf("Error writing at %p: %s\n", 
-                  err_addr, flash_errmsg(retcode));
-      return;
-    }
-    current_flash_page = flash_block_begin(addr);
-    flash_read(flash_buffer, current_flash_page, flash_block_size, &err_addr);
-  }
-  
-  offset = flash_addr - current_flash_page;
-  CYG_ASSERT(offset < flash_block_size, "offset not inside flash block");
-  
-  flash_buffer[offset] = value;
+
+       cyg_uint32 retcode = FLASH_ERR_OK;
+       void *err_addr;
+       cyg_uint32 addr = (cyg_uint32)flash_addr;
+       cyg_uint32 offset;
+
+       if (!flash_page_init) {
+               /* First Byte for the current flash block. Read the current contents */
+               current_flash_page = flash_block_begin(addr);
+               flash_read(flash_buffer, current_flash_page, flash_block_size, &err_addr);
+               flash_page_init = true;
+       }
+       if (flash_block_begin(addr) != current_flash_page) {
+               /* We have moved into the next flash page. Write the current
+                  page so we can move on */
+               retcode = flash_erase(current_flash_page, flash_block_size, &err_addr);
+               if (retcode != FLASH_ERR_OK){ /* Flash ERROR */
+                       diag_printf("Error erase at %p: %s\n", err_addr, flash_errmsg(retcode));
+                       return;
+               }
+
+               retcode = flash_program(current_flash_page, flash_buffer,
+                                                               flash_block_size, &err_addr);
+               if (retcode != FLASH_ERR_OK){
+                       diag_printf("Error writing at %p: %s\n",
+                                               err_addr, flash_errmsg(retcode));
+                       return;
+               }
+               current_flash_page = flash_block_begin(addr);
+               flash_read(flash_buffer, current_flash_page, flash_block_size, &err_addr);
+       }
+
+       offset = flash_addr - current_flash_page;
+       CYG_ASSERT(offset < flash_block_size, "offset not inside flash block");
+
+       flash_buffer[offset] = value;
 }
 
 // Program the current page into flash.
 void flash_load_finish(void)
 {
-  cyg_uint32 retcode = FLASH_ERR_OK;
-  void * err_addr;
-  
-  if (init_done && flash_page_init) {
-    flash_page_init = false;
-    
-    retcode = flash_erase(current_flash_page, flash_block_size, &err_addr);
-    if (retcode != FLASH_ERR_OK){
-      diag_printf("Error erase at %p: %s\n", err_addr, flash_errmsg(retcode));
-    } else {
-      retcode = flash_program(current_flash_page, flash_buffer, 
-                              flash_block_size, &err_addr);
-      if (retcode != FLASH_ERR_OK){ 
-        diag_printf("Error writing at %p: %s\n", 
-                    err_addr, flash_errmsg(retcode));
-      }
-    }
-  }
-  flash_init(diag_printf);
+       cyg_uint32 retcode = FLASH_ERR_OK;
+       void *err_addr;
+
+       if (init_done && flash_page_init) {
+               flash_page_init = false;
+
+               retcode = flash_erase(current_flash_page, flash_block_size, &err_addr);
+               if (retcode != FLASH_ERR_OK){
+                       diag_printf("Error erase at %p: %s\n", err_addr, flash_errmsg(retcode));
+               } else {
+                       retcode = flash_program(current_flash_page, flash_buffer,
+                                                                       flash_block_size, &err_addr);
+                       if (retcode != FLASH_ERR_OK){
+                               diag_printf("Error writing at %p: %s\n",
+                                                       err_addr, flash_errmsg(retcode));
+                       }
+               }
+       }
+       flash_init(diag_printf);
 }
 
 // This is called during redboot start up. We allocate a buffer the
@@ -168,16 +169,13 @@ void flash_load_finish(void)
 void
 flash_load_init(void)
 {
-  int flash_blocks;
+       int flash_blocks;
 
-  flash_get_block_info(&flash_block_size, &flash_blocks);
-  workspace_end -= flash_block_size;
-  
-  flash_buffer = workspace_end;
+       flash_get_block_info(&flash_block_size, &flash_blocks);
+       workspace_end -= flash_block_size;
+
+       flash_buffer = workspace_end;
 }
 
 // Register this initialization function in the table
 RedBoot_init(flash_load_init, RedBoot_INIT_LAST);
-
-
-