X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Fstr9x.c;h=98f15e75b4bf7d8d8337b27e70dc7b084fd866e5;hp=665c1607cccd011c9ccf896f9eb66b6668f9288e;hb=c4992c6d863d0ead91d84d19bbfe1643d720b205;hpb=cfc4d5c6b7b6f8f82dc5bbf3ee661c179814666e diff --git a/src/flash/str9x.c b/src/flash/str9x.c index 665c1607cc..98f15e75b4 100644 --- a/src/flash/str9x.c +++ b/src/flash/str9x.c @@ -29,13 +29,14 @@ #include "str9x.h" #include "arm966e.h" +#include "algorithm.h" static uint32_t bank1start = 0x00080000; -static int str9x_build_block_list(struct flash_bank_s *bank) +static int str9x_build_block_list(struct flash_bank *bank) { - str9x_flash_bank_t *str9x_info = bank->driver_priv; + struct str9x_flash_bank *str9x_info = bank->driver_priv; int i; int num_sectors; @@ -83,7 +84,7 @@ static int str9x_build_block_list(struct flash_bank_s *bank) num_sectors = b0_sectors + b1_sectors; bank->num_sectors = num_sectors; - bank->sectors = malloc(sizeof(flash_sector_t) * num_sectors); + bank->sectors = malloc(sizeof(struct flash_sector) * num_sectors); str9x_info->sector_bits = malloc(sizeof(uint32_t) * num_sectors); num_sectors = 0; @@ -116,18 +117,17 @@ static int str9x_build_block_list(struct flash_bank_s *bank) /* flash bank str9x 0 0 */ -static int str9x_flash_bank_command(struct command_context_s *cmd_ctx, - char *cmd, char **args, int argc, struct flash_bank_s *bank) +FLASH_BANK_COMMAND_HANDLER(str9x_flash_bank_command) { - str9x_flash_bank_t *str9x_info; + struct str9x_flash_bank *str9x_info; - if (argc < 6) + if (CMD_ARGC < 6) { LOG_WARNING("incomplete flash_bank str9x configuration"); return ERROR_FLASH_BANK_INVALID; } - str9x_info = malloc(sizeof(str9x_flash_bank_t)); + str9x_info = malloc(sizeof(struct str9x_flash_bank)); bank->driver_priv = str9x_info; str9x_build_block_list(bank); @@ -137,11 +137,11 @@ static int str9x_flash_bank_command(struct command_context_s *cmd_ctx, return ERROR_OK; } -static int str9x_protect_check(struct flash_bank_s *bank) +static int str9x_protect_check(struct flash_bank *bank) { int retval; - str9x_flash_bank_t *str9x_info = bank->driver_priv; - target_t *target = bank->target; + struct str9x_flash_bank *str9x_info = bank->driver_priv; + struct target *target = bank->target; int i; uint32_t adr; @@ -215,9 +215,9 @@ static int str9x_protect_check(struct flash_bank_s *bank) return ERROR_OK; } -static int str9x_erase(struct flash_bank_s *bank, int first, int last) +static int str9x_erase(struct flash_bank *bank, int first, int last) { - target_t *target = bank->target; + struct target *target = bank->target; int i; uint32_t adr; uint8_t status; @@ -307,10 +307,10 @@ static int str9x_erase(struct flash_bank_s *bank, int first, int last) return ERROR_OK; } -static int str9x_protect(struct flash_bank_s *bank, +static int str9x_protect(struct flash_bank *bank, int set, int first, int last) { - target_t *target = bank->target; + struct target *target = bank->target; int i; uint32_t adr; uint8_t status; @@ -346,16 +346,16 @@ static int str9x_protect(struct flash_bank_s *bank, return ERROR_OK; } -static int str9x_write_block(struct flash_bank_s *bank, +static int str9x_write_block(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count) { - str9x_flash_bank_t *str9x_info = bank->driver_priv; - target_t *target = bank->target; + struct str9x_flash_bank *str9x_info = bank->driver_priv; + struct target *target = bank->target; uint32_t buffer_size = 8192; - working_area_t *source; + struct working_area *source; uint32_t address = bank->base + offset; - reg_param_t reg_params[4]; - armv4_5_algorithm_t armv4_5_info; + struct reg_param reg_params[4]; + struct armv4_5_algorithm armv4_5_info; int retval = ERROR_OK; uint32_t str9x_flash_write_code[] = { @@ -455,10 +455,10 @@ static int str9x_write_block(struct flash_bank_s *bank, return retval; } -static int str9x_write(struct flash_bank_s *bank, +static int str9x_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count) { - target_t *target = bank->target; + struct target *target = bank->target; uint32_t words_remaining = (count / 2); uint32_t bytes_remaining = (count & 0x00000001); uint32_t address = bank->base + offset; @@ -613,7 +613,7 @@ static int str9x_write(struct flash_bank_s *bank, return ERROR_OK; } -static int str9x_probe(struct flash_bank_s *bank) +static int str9x_probe(struct flash_bank *bank) { return ERROR_OK; } @@ -625,7 +625,7 @@ COMMAND_HANDLER(str9x_handle_part_id_command) } #endif -static int str9x_info(struct flash_bank_s *bank, char *buf, int buf_size) +static int str9x_info(struct flash_bank *bank, char *buf, int buf_size) { snprintf(buf, buf_size, "str9x flash driver info"); return ERROR_OK; @@ -633,24 +633,24 @@ static int str9x_info(struct flash_bank_s *bank, char *buf, int buf_size) COMMAND_HANDLER(str9x_handle_flash_config_command) { - str9x_flash_bank_t *str9x_info; - target_t *target = NULL; + struct str9x_flash_bank *str9x_info; + struct target *target = NULL; - if (argc < 5) + if (CMD_ARGC < 5) { return ERROR_COMMAND_SYNTAX_ERROR; } - flash_bank_t *bank; - int retval = flash_command_get_bank_by_num(cmd_ctx, args[0], &bank); + struct flash_bank *bank; + int retval = CALL_COMMAND_HANDLER(flash_command_get_bank, 0, &bank); if (ERROR_OK != retval) return retval; uint32_t bbsr, nbbsr, bbadr, nbbadr; - COMMAND_PARSE_NUMBER(u32, args[1], bbsr); - COMMAND_PARSE_NUMBER(u32, args[2], nbbsr); - COMMAND_PARSE_NUMBER(u32, args[3], bbadr); - COMMAND_PARSE_NUMBER(u32, args[4], nbbadr); + COMMAND_PARSE_NUMBER(u32, CMD_ARGV[1], bbsr); + COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], nbbsr); + COMMAND_PARSE_NUMBER(u32, CMD_ARGV[3], bbadr); + COMMAND_PARSE_NUMBER(u32, CMD_ARGV[4], nbbadr); str9x_info = bank->driver_priv; @@ -676,21 +676,29 @@ COMMAND_HANDLER(str9x_handle_flash_config_command) return ERROR_OK; } -static int str9x_register_commands(struct command_context_s *cmd_ctx) -{ - command_t *str9x_cmd = register_command(cmd_ctx, NULL, "str9x", - NULL, COMMAND_ANY, "str9x flash commands"); - - register_command(cmd_ctx, str9x_cmd, "flash_config", - str9x_handle_flash_config_command, COMMAND_EXEC, - "configure str9 flash controller"); - - return ERROR_OK; -} - -flash_driver_t str9x_flash = { +static const struct command_registration str9x_config_command_handlers[] = { + { + .name = "disable_jtag", + .handler = &str9x_handle_flash_config_command, + .mode = COMMAND_EXEC, + .help = "configure str9x flash controller", + .usage = " ", + }, + COMMAND_REGISTRATION_DONE +}; +static const struct command_registration str9x_command_handlers[] = { + { + .name = "str9x", + .mode = COMMAND_ANY, + .help = "str9x flash command group", + .chain = str9x_config_command_handlers, + }, + COMMAND_REGISTRATION_DONE +}; + +struct flash_driver str9x_flash = { .name = "str9x", - .register_commands = &str9x_register_commands, + .commands = str9x_command_handlers, .flash_bank_command = &str9x_flash_bank_command, .erase = &str9x_erase, .protect = &str9x_protect,