X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Flpc2000.c;h=5442e712fde924fa81836bf785fda7762037dfe6;hp=27eec7f3b1f84ef3aac27c787895e4cd31244bcc;hb=d6c8945662e6027f6ba12d73bac2473088672db5;hpb=632fd663a821047df9a9b965ec1c35d6b034ebba;ds=sidebyside diff --git a/src/flash/lpc2000.c b/src/flash/lpc2000.c index 27eec7f3b1..5442e712fd 100644 --- a/src/flash/lpc2000.c +++ b/src/flash/lpc2000.c @@ -26,9 +26,9 @@ #endif #include "lpc2000.h" -#include "armv4_5.h" #include "armv7m.h" #include "binarybuffer.h" +#include "algorithm.h" /* flash programming support for NXP LPC17xx and LPC2xxx devices @@ -53,9 +53,9 @@ * - 176x (tested with LPC1768) */ -static int lpc2000_build_sector_list(struct flash_bank_s *bank) +static int lpc2000_build_sector_list(struct flash_bank *bank) { - lpc2000_flash_bank_t *lpc2000_info = bank->driver_priv; + struct lpc2000_flash_bank *lpc2000_info = bank->driver_priv; int i; uint32_t offset = 0; @@ -234,15 +234,15 @@ static int lpc2000_build_sector_list(struct flash_bank_s *bank) * 0x20 to 0x33: command result table (1+4 words) * 0x34 to 0xb3: stack (only 128b needed) */ -static int lpc2000_iap_call(flash_bank_t *bank, int code, uint32_t param_table[5], uint32_t result_table[4]) +static int lpc2000_iap_call(struct flash_bank *bank, int code, uint32_t param_table[5], uint32_t result_table[4]) { int retval; - lpc2000_flash_bank_t *lpc2000_info = bank->driver_priv; - target_t *target = bank->target; - mem_param_t mem_params[2]; - reg_param_t reg_params[5]; - armv4_5_algorithm_t armv4_5_info; /* for LPC2000 */ - armv7m_algorithm_t armv7m_info; /* for LPC1700 */ + struct lpc2000_flash_bank *lpc2000_info = bank->driver_priv; + struct target *target = bank->target; + struct mem_param mem_params[2]; + struct reg_param reg_params[5]; + struct armv4_5_algorithm armv4_5_info; /* for LPC2000 */ + struct armv7m_algorithm armv7m_info; /* for LPC1700 */ uint32_t status_code; uint32_t iap_entry_point = 0; /* to make compiler happier */ @@ -375,7 +375,7 @@ static int lpc2000_iap_call(flash_bank_t *bank, int code, uint32_t param_table[5 return status_code; } -static int lpc2000_iap_blank_check(struct flash_bank_s *bank, int first, int last) +static int lpc2000_iap_blank_check(struct flash_bank *bank, int first, int last) { uint32_t param_table[5]; uint32_t result_table[4]; @@ -421,18 +421,18 @@ static int lpc2000_iap_blank_check(struct flash_bank_s *bank, int first, int las */ FLASH_BANK_COMMAND_HANDLER(lpc2000_flash_bank_command) { - lpc2000_flash_bank_t *lpc2000_info; + struct lpc2000_flash_bank *lpc2000_info; - if (argc < 8) + if (CMD_ARGC < 8) { LOG_WARNING("incomplete flash_bank lpc2000 configuration"); return ERROR_FLASH_BANK_INVALID; } - lpc2000_info = malloc(sizeof(lpc2000_flash_bank_t)); + lpc2000_info = malloc(sizeof(struct lpc2000_flash_bank)); bank->driver_priv = lpc2000_info; - if (strcmp(args[6], "lpc2000_v1") == 0) + if (strcmp(CMD_ARGV[6], "lpc2000_v1") == 0) { lpc2000_info->variant = lpc2000_v1; lpc2000_info->cmd51_dst_boundary = 512; @@ -440,7 +440,7 @@ FLASH_BANK_COMMAND_HANDLER(lpc2000_flash_bank_command) lpc2000_info->cmd51_can_8192b = 1; lpc2000_info->checksum_vector = 5; } - else if (strcmp(args[6], "lpc2000_v2") == 0) + else if (strcmp(CMD_ARGV[6], "lpc2000_v2") == 0) { lpc2000_info->variant = lpc2000_v2; lpc2000_info->cmd51_dst_boundary = 256; @@ -448,7 +448,7 @@ FLASH_BANK_COMMAND_HANDLER(lpc2000_flash_bank_command) lpc2000_info->cmd51_can_8192b = 0; lpc2000_info->checksum_vector = 5; } - else if (strcmp(args[6], "lpc1700") == 0) + else if (strcmp(CMD_ARGV[6], "lpc1700") == 0) { lpc2000_info->variant = lpc1700; lpc2000_info->cmd51_dst_boundary = 256; @@ -458,28 +458,28 @@ FLASH_BANK_COMMAND_HANDLER(lpc2000_flash_bank_command) } else { - LOG_ERROR("unknown LPC2000 variant: %s", args[6]); + LOG_ERROR("unknown LPC2000 variant: %s", CMD_ARGV[6]); free(lpc2000_info); return ERROR_FLASH_BANK_INVALID; } lpc2000_info->iap_working_area = NULL; - COMMAND_PARSE_NUMBER(u32, args[7], lpc2000_info->cclk); + COMMAND_PARSE_NUMBER(u32, CMD_ARGV[7], lpc2000_info->cclk); lpc2000_info->calc_checksum = 0; lpc2000_build_sector_list(bank); - if (argc >= 9) + if (CMD_ARGC >= 9) { - if (strcmp(args[8], "calc_checksum") == 0) + if (strcmp(CMD_ARGV[8], "calc_checksum") == 0) lpc2000_info->calc_checksum = 1; } return ERROR_OK; } -static int lpc2000_erase(struct flash_bank_s *bank, int first, int last) +static int lpc2000_erase(struct flash_bank *bank, int first, int last) { - lpc2000_flash_bank_t *lpc2000_info = bank->driver_priv; + struct lpc2000_flash_bank *lpc2000_info = bank->driver_priv; uint32_t param_table[5]; uint32_t result_table[4]; int status_code; @@ -529,16 +529,16 @@ static int lpc2000_erase(struct flash_bank_s *bank, int first, int last) return ERROR_OK; } -static int lpc2000_protect(struct flash_bank_s *bank, int set, int first, int last) +static int lpc2000_protect(struct flash_bank *bank, int set, int first, int last) { /* can't protect/unprotect on the lpc2000 */ return ERROR_OK; } -static int lpc2000_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count) +static int lpc2000_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count) { - lpc2000_flash_bank_t *lpc2000_info = bank->driver_priv; - target_t *target = bank->target; + struct lpc2000_flash_bank *lpc2000_info = bank->driver_priv; + struct target *target = bank->target; uint32_t dst_min_alignment; uint32_t bytes_remaining = count; uint32_t bytes_written = 0; @@ -548,7 +548,7 @@ static int lpc2000_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t of uint32_t result_table[4]; int status_code; int i; - working_area_t *download_area; + struct working_area *download_area; int retval = ERROR_OK; if (bank->target->state != TARGET_HALTED) @@ -572,7 +572,7 @@ static int lpc2000_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t of { if (offset >= bank->sectors[i].offset) first_sector = i; - if (offset + CEIL(count, dst_min_alignment) * dst_min_alignment > bank->sectors[i].offset) + if (offset + DIV_ROUND_UP(count, dst_min_alignment) * dst_min_alignment > bank->sectors[i].offset) last_sector = i; } @@ -703,7 +703,7 @@ static int lpc2000_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t of return retval; } -static int lpc2000_probe(struct flash_bank_s *bank) +static int lpc2000_probe(struct flash_bank *bank) { /* we can't probe on an lpc2000 * if this is an lpc2xxx, it has the configured flash @@ -711,7 +711,7 @@ static int lpc2000_probe(struct flash_bank_s *bank) return ERROR_OK; } -static int lpc2000_erase_check(struct flash_bank_s *bank) +static int lpc2000_erase_check(struct flash_bank *bank) { if (bank->target->state != TARGET_HALTED) { @@ -722,15 +722,15 @@ static int lpc2000_erase_check(struct flash_bank_s *bank) return lpc2000_iap_blank_check(bank, 0, bank->num_sectors - 1); } -static int lpc2000_protect_check(struct flash_bank_s *bank) +static int lpc2000_protect_check(struct flash_bank *bank) { /* sectors are always protected */ return ERROR_OK; } -static int lpc2000_info(struct flash_bank_s *bank, char *buf, int buf_size) +static int lpc2000_info(struct flash_bank *bank, char *buf, int buf_size) { - lpc2000_flash_bank_t *lpc2000_info = bank->driver_priv; + struct lpc2000_flash_bank *lpc2000_info = bank->driver_priv; snprintf(buf, buf_size, "lpc2000 flash driver variant: %i, clk: %" PRIi32 "kHz" , lpc2000_info->variant, lpc2000_info->cclk); @@ -743,13 +743,13 @@ COMMAND_HANDLER(lpc2000_handle_part_id_command) uint32_t result_table[4]; int status_code; - if (argc < 1) + if (CMD_ARGC < 1) { 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_by_num, 0, &bank); if (ERROR_OK != retval) return retval; @@ -763,22 +763,22 @@ COMMAND_HANDLER(lpc2000_handle_part_id_command) { if (status_code == ERROR_FLASH_OPERATION_FAILED) { - command_print(cmd_ctx, "no sufficient working area specified, can't access LPC2000 IAP interface"); + command_print(CMD_CTX, "no sufficient working area specified, can't access LPC2000 IAP interface"); return ERROR_OK; } - command_print(cmd_ctx, "lpc2000 IAP returned status code %i", status_code); + command_print(CMD_CTX, "lpc2000 IAP returned status code %i", status_code); } else { - command_print(cmd_ctx, "lpc2000 part id: 0x%8.8" PRIx32 , result_table[0]); + command_print(CMD_CTX, "lpc2000 part id: 0x%8.8" PRIx32 , result_table[0]); } return ERROR_OK; } -static int lpc2000_register_commands(struct command_context_s *cmd_ctx) +static int lpc2000_register_commands(struct command_context *cmd_ctx) { - command_t *lpc2000_cmd = register_command(cmd_ctx, NULL, "lpc2000", + struct command *lpc2000_cmd = register_command(cmd_ctx, NULL, "lpc2000", NULL, COMMAND_ANY, NULL); register_command(cmd_ctx, lpc2000_cmd, "part_id",