summaryrefslogtreecommitdiff
path: root/digital/avr
diff options
context:
space:
mode:
authorNélio Laranjeiro2010-01-13 23:12:46 +0100
committerNélio Laranjeiro2010-01-13 23:12:46 +0100
commit466780f253e1837d7217b98c96b143ff4112e315 (patch)
treee3485172b970ad39e45f7678d4b904305d8f44c6 /digital/avr
parenta20ca6eb18821ee4d5eab5eec33723e7c61d88b6 (diff)
digital/avr/modules/flash: replace callback init by a macro, closes #104
Diffstat (limited to 'digital/avr')
-rw-r--r--digital/avr/modules/flash/flash.c22
-rw-r--r--digital/avr/modules/flash/flash.h13
2 files changed, 15 insertions, 20 deletions
diff --git a/digital/avr/modules/flash/flash.c b/digital/avr/modules/flash/flash.c
index 05151800..dd1bfd41 100644
--- a/digital/avr/modules/flash/flash.c
+++ b/digital/avr/modules/flash/flash.c
@@ -236,29 +236,11 @@ flash_block_size (void)
void
flash_init_sst (void)
{
- flash.erase_func = flash_sst_erase;
- flash.send_cmd_func = flash_sst_send_command;
- flash.read_status_func = flash_sst_read_status;
- flash.is_busy_func = flash_sst_is_busy;
- flash.write_func = flash_sst_write;
- flash.read_func = flash_sst_read;
- flash.read_array_func = flash_sst_read_array;
- flash.write_array_func = flash_sst_write_array;
- flash.flash_size_func = flash_sst_size;
- flash.flash_block_size_func = flash_sst_block_size;
+ FLASH_DRV_INIT (sst);
}
void
flash_init_at (void)
{
- flash.erase_func = flash_at_erase;
- flash.send_cmd_func = flash_at_send_command;
- flash.read_status_func = flash_at_read_status;
- flash.is_busy_func = flash_at_is_busy;
- flash.write_func = flash_at_write;
- flash.read_func = flash_at_read;
- flash.read_array_func = flash_at_read_array;
- flash.write_array_func = flash_at_write_array;
- flash.flash_size_func = flash_at_size;
- flash.flash_block_size_func = flash_at_block_size;
+ FLASH_DRV_INIT (at);
}
diff --git a/digital/avr/modules/flash/flash.h b/digital/avr/modules/flash/flash.h
index 4bbdfd2b..89c492b9 100644
--- a/digital/avr/modules/flash/flash.h
+++ b/digital/avr/modules/flash/flash.h
@@ -38,6 +38,19 @@
#define FLASH_CS_DISABLE \
AC_FLASH_PORT |= _BV(AC_FLASH_BIT_SS);
+/** Initialise the Flash driver callbacks functions. */
+#define FLASH_DRV_INIT(drv) \
+ ({flash.erase_func = flash_ ## drv ## _erase; \
+ flash.send_cmd_func = flash_ ## drv ## _send_command; \
+ flash.read_status_func = flash_ ## drv ## _read_status; \
+ flash.is_busy_func = flash_ ## drv ## _is_busy; \
+ flash.write_func = flash_ ## drv ## _write; \
+ flash.read_func = flash_ ## drv ## _read; \
+ flash.read_array_func = flash_ ## drv ## _read_array; \
+ flash.write_array_func = flash_ ## drv ## _write_array; \
+ flash.flash_size_func = flash_ ## drv ## _size; \
+ flash.flash_block_size_func = flash_ ## drv ## _block_size;})
+
enum flash_cmd_t
{
FLASH_CMD_INIT,