update changelogs for Debian build
[fw/altos] / src / ao_flash.c
index 0120382d07615819ada2fb00545edcece3d9de8b..638e51e0ce7bc932e43b8c12cd5e81a332c97117 100644 (file)
@@ -169,6 +169,7 @@ static __pdata uint8_t  ao_flash_write_pending;
 static __pdata uint8_t ao_flash_setup_done;
 static __data uint32_t ao_flash_device_size;
 static __data uint8_t  ao_flash_block_shift;
+static __data uint16_t ao_flash_block_size;
 
 static void
 ao_flash_setup(void)
@@ -183,7 +184,6 @@ ao_flash_setup(void)
                ao_mutex_put(&ao_flash_mutex);
                return;
        }
-       ao_flash_setup_done = 1;
 
        /* On first use, check to see if the flash chip has
         * been programmed to use 512 byte pages. If not, do so.
@@ -238,6 +238,8 @@ ao_flash_setup(void)
        default:
                ao_panic(AO_PANIC_FLASH);
        }
+       ao_flash_block_size = 1 << ao_flash_block_shift;
+       ao_flash_setup_done = 1;
        ao_mutex_put(&ao_flash_mutex);
 }
 
@@ -398,29 +400,6 @@ ao_ee_flush(void) __reentrant
  * the last block of the flash
  */
 
-void
-ao_ee_dump_config(void) __reentrant
-{
-       uint16_t        i;
-       printf("Configuration block %d\n", FLASH_CONFIG_BLOCK);
-       ao_mutex_get(&ao_flash_mutex); {
-               ao_flash_flush_internal();
-               ao_flash_block = FLASH_BLOCK_NONE;
-               ao_flash_fill(FLASH_CONFIG_BLOCK);
-               i = 0;
-               do {
-                       if ((i & 7) == 0) {
-                               if (i)
-                                       putchar('\n');
-                               ao_cmd_put16((uint16_t) i);
-                       }
-                       putchar(' ');
-                       ao_cmd_put8(ao_flash_data[i]);
-                       ++i;
-               } while (i < sizeof (ao_config));
-       } ao_mutex_put(&ao_flash_mutex);
-}
-
 uint8_t
 ao_ee_write_config(uint8_t *buf, uint16_t len) __reentrant
 {
@@ -428,13 +407,11 @@ ao_ee_write_config(uint8_t *buf, uint16_t len) __reentrant
        if (len > FLASH_BLOCK_SIZE)
                return 0;
        ao_mutex_get(&ao_flash_mutex); {
-               printf("FLASH_CONFIG_BLOCK: %d\n", FLASH_CONFIG_BLOCK);
                ao_flash_fill(FLASH_CONFIG_BLOCK);
                memcpy(ao_flash_data, buf, len);
                ao_flash_block_dirty = 1;
                ao_flash_flush_internal();
        } ao_mutex_put(&ao_flash_mutex);
-       ao_ee_dump_config();
        return 1;
 }
 
@@ -444,7 +421,6 @@ ao_ee_read_config(uint8_t *buf, uint16_t len) __reentrant
        ao_flash_setup();
        if (len > FLASH_BLOCK_SIZE)
                return 0;
-       ao_ee_dump_config();
        ao_mutex_get(&ao_flash_mutex); {
                ao_flash_fill(FLASH_CONFIG_BLOCK);
                memcpy(buf, ao_flash_data, len);
@@ -507,6 +483,29 @@ flash_store(void) __reentrant
        ao_ee_flush();
 }
 
+void
+ao_ee_dump_config(void) __reentrant
+{
+       uint16_t        i;
+       printf("Configuration block %d\n", FLASH_CONFIG_BLOCK);
+       ao_mutex_get(&ao_flash_mutex); {
+               ao_flash_flush_internal();
+               ao_flash_block = FLASH_BLOCK_NONE;
+               ao_flash_fill(FLASH_CONFIG_BLOCK);
+               i = 0;
+               do {
+                       if ((i & 7) == 0) {
+                               if (i)
+                                       putchar('\n');
+                               ao_cmd_put16((uint16_t) i);
+                       }
+                       putchar(' ');
+                       ao_cmd_put8(ao_flash_data[i]);
+                       ++i;
+               } while (i < sizeof (ao_config));
+       } ao_mutex_put(&ao_flash_mutex);
+}
+
 static void
 flash_status(void) __reentrant
 {