X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fflash%2Faduc702x.c;h=643705cae287c0df6cf1cc0ec31626c1ab99ca0b;hb=e1ec02bb055fa356b058dddc0a15710e0fdc9870;hp=0e862e9b8397d1feacf1b0bc3e614862b2f312c6;hpb=0796dfff89bf00f82a780d7719767bcffe881d67;p=openocd.git diff --git a/src/flash/aduc702x.c b/src/flash/aduc702x.c index 0e862e9b83..643705cae2 100644 --- a/src/flash/aduc702x.c +++ b/src/flash/aduc702x.c @@ -27,11 +27,12 @@ #include "armv4_5.h" #include "binarybuffer.h" #include "time_support.h" +#include "algorithm.h" -static int aduc702x_build_sector_list(struct flash_bank_s *bank); -static int aduc702x_check_flash_completion(target_t* target, unsigned int timeout_ms); -static int aduc702x_set_write_enable(target_t *target, int enable); +static int aduc702x_build_sector_list(struct flash_bank *bank); +static int aduc702x_check_flash_completion(struct target* target, unsigned int timeout_ms); +static int aduc702x_set_write_enable(struct target *target, int enable); #define ADUC702x_FLASH 0xfffff800 #define ADUC702x_FLASH_FEESTA (0*4) @@ -43,29 +44,17 @@ static int aduc702x_set_write_enable(target_t *target, int enable); #define ADUC702x_FLASH_FEEPRO (6*4) #define ADUC702x_FLASH_FEEHIDE (7*4) -typedef struct { - uint32_t feesta; - uint32_t feemod; - uint32_t feecon; - uint32_t feedat; - uint32_t feeadr; - uint32_t feesign; - uint32_t feepro; - uint32_t feehide; -} ADUC702x_FLASH_MMIO; - -typedef struct -{ - working_area_t *write_algorithm; -} aduc702x_flash_bank_t; +struct aduc702x_flash_bank { + struct working_area *write_algorithm; +}; /* flash bank aduc702x 0 0 0 0 * The ADC7019-28 devices all have the same flash layout */ FLASH_BANK_COMMAND_HANDLER(aduc702x_flash_bank_command) { - aduc702x_flash_bank_t *nbank; + struct aduc702x_flash_bank *nbank; - nbank = malloc(sizeof(aduc702x_flash_bank_t)); + nbank = malloc(sizeof(struct aduc702x_flash_bank)); bank->base = 0x80000; bank->size = 0xF800; // top 4k not accessible @@ -76,16 +65,16 @@ FLASH_BANK_COMMAND_HANDLER(aduc702x_flash_bank_command) return ERROR_OK; } -static int aduc702x_build_sector_list(struct flash_bank_s *bank) +static int aduc702x_build_sector_list(struct flash_bank *bank) { - //aduc7026_flash_bank_t *aduc7026_info = bank->driver_priv; + //aduc7026_struct flash_bank *aduc7026_info = bank->driver_priv; int i = 0; uint32_t offset = 0; // sector size is 512 bank->num_sectors = bank->size / 512; - bank->sectors = malloc(sizeof(flash_sector_t) * bank->num_sectors); + bank->sectors = malloc(sizeof(struct flash_sector) * bank->num_sectors); for (i = 0; i < bank->num_sectors; ++i) { bank->sectors[i].offset = offset; @@ -98,19 +87,19 @@ static int aduc702x_build_sector_list(struct flash_bank_s *bank) return ERROR_OK; } -static int aduc702x_protect_check(struct flash_bank_s *bank) +static int aduc702x_protect_check(struct flash_bank *bank) { printf("aduc702x_protect_check not implemented yet.\n"); return ERROR_OK; } -static int aduc702x_erase(struct flash_bank_s *bank, int first, int last) +static int aduc702x_erase(struct flash_bank *bank, int first, int last) { //int res; int x; int count; //uint32_t v; - target_t *target = bank->target; + struct target *target = bank->target; aduc702x_set_write_enable(target, 1); @@ -157,7 +146,7 @@ static int aduc702x_erase(struct flash_bank_s *bank, int first, int last) return ERROR_OK; } -static int aduc702x_protect(struct flash_bank_s *bank, int set, int first, int last) +static int aduc702x_protect(struct flash_bank *bank, int set, int first, int last) { printf("aduc702x_protect not implemented yet.\n"); return ERROR_FLASH_OPERATION_FAILED; @@ -168,15 +157,15 @@ static int aduc702x_protect(struct flash_bank_s *bank, int set, int first, int l * * Caller should not check for other return values specifically */ -static int aduc702x_write_block(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count) +static int aduc702x_write_block(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count) { - aduc702x_flash_bank_t *aduc702x_info = bank->driver_priv; - target_t *target = bank->target; + struct aduc702x_flash_bank *aduc702x_info = bank->driver_priv; + struct target *target = bank->target; uint32_t buffer_size = 7000; - working_area_t *source; + struct working_area *source; uint32_t address = bank->base + offset; - reg_param_t reg_params[6]; - armv4_5_algorithm_t armv4_5_info; + struct reg_param reg_params[6]; + struct armv4_5_algorithm armv4_5_info; int retval = ERROR_OK; if (((count%2)!=0)||((offset%2)!=0)) @@ -313,11 +302,11 @@ static int aduc702x_write_block(struct flash_bank_s *bank, uint8_t *buffer, uint /* All-JTAG, single-access method. Very slow. Used only if there is no * working area available. */ -static int aduc702x_write_single(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count) +static int aduc702x_write_single(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count) { uint32_t x; uint8_t b; - target_t *target = bank->target; + struct target *target = bank->target; aduc702x_set_write_enable(target, 1); @@ -354,7 +343,7 @@ static int aduc702x_write_single(struct flash_bank_s *bank, uint8_t *buffer, uin return ERROR_OK; } -int aduc702x_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count) +int aduc702x_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count) { int retval; @@ -378,12 +367,12 @@ int aduc702x_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, return retval; } -static int aduc702x_probe(struct flash_bank_s *bank) +static int aduc702x_probe(struct flash_bank *bank) { return ERROR_OK; } -static int aduc702x_info(struct flash_bank_s *bank, char *buf, int buf_size) +static int aduc702x_info(struct flash_bank *bank, char *buf, int buf_size) { snprintf(buf, buf_size, "aduc702x flash driver info"); return ERROR_OK; @@ -391,7 +380,7 @@ static int aduc702x_info(struct flash_bank_s *bank, char *buf, int buf_size) /* sets FEEMOD bit 3 * enable = 1 enables writes & erases, 0 disables them */ -static int aduc702x_set_write_enable(target_t *target, int enable) +static int aduc702x_set_write_enable(struct target *target, int enable) { // don't bother to preserve int enable bit here target_write_u16(target, ADUC702x_FLASH + ADUC702x_FLASH_FEEMOD, enable ? 8 : 0); @@ -404,7 +393,7 @@ static int aduc702x_set_write_enable(target_t *target, int enable) * * this function sleeps 1ms between checks (after the first one), * so in some cases may slow things down without a usleep after the first read */ -static int aduc702x_check_flash_completion(target_t* target, unsigned int timeout_ms) +static int aduc702x_check_flash_completion(struct target* target, unsigned int timeout_ms) { uint8_t v = 4; @@ -422,7 +411,7 @@ static int aduc702x_check_flash_completion(target_t* target, unsigned int timeou else return ERROR_OK; } -flash_driver_t aduc702x_flash = { +struct flash_driver aduc702x_flash = { .name = "aduc702x", .flash_bank_command = &aduc702x_flash_bank_command, .erase = &aduc702x_erase,