X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fao_flash.c;h=638e51e0ce7bc932e43b8c12cd5e81a332c97117;hp=0120382d07615819ada2fb00545edcece3d9de8b;hb=afea6c264c5ebf12f1d629bd4bc724da86d11b7a;hpb=327e5e782958e516a7b7a786ab6c176b0decb8b8 diff --git a/src/ao_flash.c b/src/ao_flash.c index 0120382d..638e51e0 100644 --- a/src/ao_flash.c +++ b/src/ao_flash.c @@ -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 {