stm32x_mem_layout_t -> struct stm32x_mem_layout
[fw/openocd] / src / flash / str9xpec.c
index 711ee7ae77a7ce60203ba96ea816c99c89a540ba..aa19b75efd1209e017c943487c8b782aef20cc21 100644 (file)
 #include "arm7_9_common.h"
 
 
-static int str9xpec_register_commands(struct command_context_s *cmd_ctx);
-static int str9xpec_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct flash_bank_s *bank);
-static int str9xpec_erase(struct flash_bank_s *bank, int first, int last);
-static int str9xpec_protect(struct flash_bank_s *bank, int set, int first, int last);
-static int str9xpec_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count);
-static int str9xpec_probe(struct flash_bank_s *bank);
-static int str9xpec_handle_part_id_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int str9xpec_protect_check(struct flash_bank_s *bank);
-static int str9xpec_erase_check(struct flash_bank_s *bank);
-static int str9xpec_info(struct flash_bank_s *bank, char *buf, int buf_size);
-
 static int str9xpec_erase_area(struct flash_bank_s *bank, int first, int last);
 static int str9xpec_set_address(struct flash_bank_s *bank, uint8_t sector);
 static int str9xpec_write_options(struct flash_bank_s *bank);
 
-static int str9xpec_handle_flash_options_cmap_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int str9xpec_handle_flash_options_lvdthd_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int str9xpec_handle_flash_options_lvdsel_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int str9xpec_handle_flash_options_lvdwarn_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int str9xpec_handle_flash_options_read_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int str9xpec_handle_flash_options_write_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int str9xpec_handle_flash_lock_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int str9xpec_handle_flash_unlock_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int str9xpec_handle_flash_enable_turbo_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-static int str9xpec_handle_flash_disable_turbo_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
-
-flash_driver_t str9xpec_flash =
-{
-       .name = "str9xpec",
-       .register_commands = str9xpec_register_commands,
-       .flash_bank_command = str9xpec_flash_bank_command,
-       .erase = str9xpec_erase,
-       .protect = str9xpec_protect,
-       .write = str9xpec_write,
-       .probe = str9xpec_probe,
-       .auto_probe = str9xpec_probe,
-       .erase_check = str9xpec_erase_check,
-       .protect_check = str9xpec_protect_check,
-       .info = str9xpec_info
-};
-
-static int str9xpec_register_commands(struct command_context_s *cmd_ctx)
-{
-       command_t *str9xpec_cmd = register_command(cmd_ctx, NULL, "str9xpec", NULL, COMMAND_ANY, "str9xpec flash specific commands");
-
-       register_command(cmd_ctx, str9xpec_cmd, "enable_turbo", str9xpec_handle_flash_enable_turbo_command, COMMAND_EXEC,
-                                        "enable str9xpec turbo mode");
-       register_command(cmd_ctx, str9xpec_cmd, "disable_turbo", str9xpec_handle_flash_disable_turbo_command, COMMAND_EXEC,
-                                        "disable str9xpec turbo mode");
-       register_command(cmd_ctx, str9xpec_cmd, "options_cmap", str9xpec_handle_flash_options_cmap_command, COMMAND_EXEC,
-                                        "configure str9xpec boot sector");
-       register_command(cmd_ctx, str9xpec_cmd, "options_lvdthd", str9xpec_handle_flash_options_lvdthd_command, COMMAND_EXEC,
-                                        "configure str9xpec lvd threshold");
-       register_command(cmd_ctx, str9xpec_cmd, "options_lvdsel", str9xpec_handle_flash_options_lvdsel_command, COMMAND_EXEC,
-                                        "configure str9xpec lvd selection");
-       register_command(cmd_ctx, str9xpec_cmd, "options_lvdwarn", str9xpec_handle_flash_options_lvdwarn_command, COMMAND_EXEC,
-                                        "configure str9xpec lvd warning");
-       register_command(cmd_ctx, str9xpec_cmd, "options_read", str9xpec_handle_flash_options_read_command, COMMAND_EXEC,
-                                        "read str9xpec options");
-       register_command(cmd_ctx, str9xpec_cmd, "options_write", str9xpec_handle_flash_options_write_command, COMMAND_EXEC,
-                                        "write str9xpec options");
-       register_command(cmd_ctx, str9xpec_cmd, "lock", str9xpec_handle_flash_lock_command, COMMAND_EXEC,
-                                        "lock str9xpec device");
-       register_command(cmd_ctx, str9xpec_cmd, "unlock", str9xpec_handle_flash_unlock_command, COMMAND_EXEC,
-                                        "unlock str9xpec device");
-       register_command(cmd_ctx, str9xpec_cmd, "part_id", str9xpec_handle_part_id_command, COMMAND_EXEC,
-                                        "print part id of str9xpec flash bank <num>");
-
-       return ERROR_OK;
-}
-
-int str9xpec_set_instr(jtag_tap_t *tap, uint32_t new_instr, tap_state_t end_state)
+int str9xpec_set_instr(struct jtag_tap *tap, uint32_t new_instr, tap_state_t end_state)
 {
        if (tap == NULL) {
                return ERROR_TARGET_INVALID;
@@ -107,7 +40,7 @@ int str9xpec_set_instr(jtag_tap_t *tap, uint32_t new_instr, tap_state_t end_stat
 
        if (buf_get_u32(tap->cur_instr, 0, tap->ir_length) != new_instr)
        {
-               scan_field_t field;
+               struct scan_field field;
 
                field.tap = tap;
                field.num_bits = tap->ir_length;
@@ -123,9 +56,9 @@ int str9xpec_set_instr(jtag_tap_t *tap, uint32_t new_instr, tap_state_t end_stat
        return ERROR_OK;
 }
 
-static uint8_t str9xpec_isc_status(jtag_tap_t *tap)
+static uint8_t str9xpec_isc_status(struct jtag_tap *tap)
 {
-       scan_field_t field;
+       struct scan_field field;
        uint8_t status;
 
        if (str9xpec_set_instr(tap, ISC_NOOP, TAP_IRPAUSE) != ERROR_OK)
@@ -151,7 +84,7 @@ static uint8_t str9xpec_isc_status(jtag_tap_t *tap)
 static int str9xpec_isc_enable(struct flash_bank_s *bank)
 {
        uint8_t status;
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
        str9xpec_flash_controller_t *str9xpec_info = bank->driver_priv;
 
        tap = str9xpec_info->tap;
@@ -178,7 +111,7 @@ static int str9xpec_isc_enable(struct flash_bank_s *bank)
 static int str9xpec_isc_disable(struct flash_bank_s *bank)
 {
        uint8_t status;
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
        str9xpec_flash_controller_t *str9xpec_info = bank->driver_priv;
 
        tap = str9xpec_info->tap;
@@ -206,9 +139,9 @@ static int str9xpec_isc_disable(struct flash_bank_s *bank)
 
 static int str9xpec_read_config(struct flash_bank_s *bank)
 {
-       scan_field_t field;
+       struct scan_field field;
        uint8_t status;
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
 
        str9xpec_flash_controller_t *str9xpec_info = bank->driver_priv;
 
@@ -272,7 +205,7 @@ static int str9xpec_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);
        str9xpec_info->sector_bits = malloc(sizeof(uint32_t) * num_sectors);
 
        num_sectors = 0;
@@ -302,7 +235,7 @@ static int str9xpec_build_block_list(struct flash_bank_s *bank)
 
 /* flash bank str9x <base> <size> 0 0 <target#>
  */
-static int str9xpec_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct flash_bank_s *bank)
+FLASH_BANK_COMMAND_HANDLER(str9xpec_flash_bank_command)
 {
        str9xpec_flash_controller_t *str9xpec_info;
        armv4_5_common_t *armv4_5 = NULL;
@@ -338,9 +271,9 @@ static int str9xpec_flash_bank_command(struct command_context_s *cmd_ctx, char *
 
 static int str9xpec_blank_check(struct flash_bank_s *bank, int first, int last)
 {
-       scan_field_t field;
+       struct scan_field field;
        uint8_t status;
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
        int i;
        uint8_t *buffer = NULL;
 
@@ -427,9 +360,9 @@ static int str9xpec_protect_check(struct flash_bank_s *bank)
 
 static int str9xpec_erase_area(struct flash_bank_s *bank, int first, int last)
 {
-       scan_field_t field;
+       struct scan_field field;
        uint8_t status;
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
        int i;
        uint8_t *buffer = NULL;
 
@@ -509,9 +442,9 @@ static int str9xpec_erase(struct flash_bank_s *bank, int first, int last)
 
 static int str9xpec_lock_device(struct flash_bank_s *bank)
 {
-       scan_field_t field;
+       struct scan_field field;
        uint8_t status;
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
        str9xpec_flash_controller_t *str9xpec_info = NULL;
 
        str9xpec_info = bank->driver_priv;
@@ -606,8 +539,8 @@ static int str9xpec_protect(struct flash_bank_s *bank, int set, int first, int l
 
 static int str9xpec_set_address(struct flash_bank_s *bank, uint8_t sector)
 {
-       jtag_tap_t *tap;
-       scan_field_t field;
+       struct jtag_tap *tap;
+       struct scan_field field;
        str9xpec_flash_controller_t *str9xpec_info = bank->driver_priv;
 
        tap = str9xpec_info->tap;
@@ -633,8 +566,8 @@ static int str9xpec_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t o
        uint32_t bytes_written = 0;
        uint8_t status;
        uint32_t check_address = offset;
-       jtag_tap_t *tap;
-       scan_field_t field;
+       struct jtag_tap *tap;
+       struct scan_field field;
        uint8_t *scanbuf;
        int i;
        int first_sector = 0;
@@ -793,11 +726,11 @@ static int str9xpec_probe(struct flash_bank_s *bank)
        return ERROR_OK;
 }
 
-static int str9xpec_handle_part_id_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_part_id_command)
 {
-       scan_field_t field;
+       struct scan_field field;
        uint8_t *buffer = NULL;
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
        uint32_t idcode;
        str9xpec_flash_controller_t *str9xpec_info = NULL;
 
@@ -844,7 +777,7 @@ static int str9xpec_info(struct flash_bank_s *bank, char *buf, int buf_size)
        return ERROR_OK;
 }
 
-static int str9xpec_handle_flash_options_read_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_flash_options_read_command)
 {
        uint8_t status;
        str9xpec_flash_controller_t *str9xpec_info = NULL;
@@ -902,9 +835,9 @@ static int str9xpec_handle_flash_options_read_command(struct command_context_s *
 
 static int str9xpec_write_options(struct flash_bank_s *bank)
 {
-       scan_field_t field;
+       struct scan_field field;
        uint8_t status;
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
        str9xpec_flash_controller_t *str9xpec_info = NULL;
 
        str9xpec_info = bank->driver_priv;
@@ -961,7 +894,7 @@ static int str9xpec_write_options(struct flash_bank_s *bank)
        return status;
 }
 
-static int str9xpec_handle_flash_options_write_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_flash_options_write_command)
 {
        uint8_t status;
 
@@ -984,7 +917,7 @@ static int str9xpec_handle_flash_options_write_command(struct command_context_s
        return ERROR_OK;
 }
 
-static int str9xpec_handle_flash_options_cmap_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_flash_options_cmap_command)
 {
        str9xpec_flash_controller_t *str9xpec_info = NULL;
 
@@ -1013,7 +946,7 @@ static int str9xpec_handle_flash_options_cmap_command(struct command_context_s *
        return ERROR_OK;
 }
 
-static int str9xpec_handle_flash_options_lvdthd_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_flash_options_lvdthd_command)
 {
        str9xpec_flash_controller_t *str9xpec_info = NULL;
 
@@ -1042,7 +975,7 @@ static int str9xpec_handle_flash_options_lvdthd_command(struct command_context_s
        return ERROR_OK;
 }
 
-int str9xpec_handle_flash_options_lvdsel_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_flash_options_lvdsel_command)
 {
        str9xpec_flash_controller_t *str9xpec_info = NULL;
 
@@ -1071,7 +1004,7 @@ int str9xpec_handle_flash_options_lvdsel_command(struct command_context_s *cmd_c
        return ERROR_OK;
 }
 
-static int str9xpec_handle_flash_options_lvdwarn_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_flash_options_lvdwarn_command)
 {
        str9xpec_flash_controller_t *str9xpec_info = NULL;
 
@@ -1100,7 +1033,7 @@ static int str9xpec_handle_flash_options_lvdwarn_command(struct command_context_
        return ERROR_OK;
 }
 
-static int str9xpec_handle_flash_lock_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_flash_lock_command)
 {
        uint8_t status;
 
@@ -1123,7 +1056,7 @@ static int str9xpec_handle_flash_lock_command(struct command_context_s *cmd_ctx,
        return ERROR_OK;
 }
 
-static int str9xpec_handle_flash_unlock_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_flash_unlock_command)
 {
        uint8_t status;
 
@@ -1146,11 +1079,11 @@ static int str9xpec_handle_flash_unlock_command(struct command_context_s *cmd_ct
        return ERROR_OK;
 }
 
-static int str9xpec_handle_flash_enable_turbo_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_flash_enable_turbo_command)
 {
-       jtag_tap_t *tap0;
-       jtag_tap_t *tap1;
-       jtag_tap_t *tap2;
+       struct jtag_tap *tap0;
+       struct jtag_tap *tap1;
+       struct jtag_tap *tap2;
        str9xpec_flash_controller_t *str9xpec_info = NULL;
 
        if (argc < 1)
@@ -1195,9 +1128,9 @@ static int str9xpec_handle_flash_enable_turbo_command(struct command_context_s *
        return ERROR_OK;
 }
 
-static int str9xpec_handle_flash_disable_turbo_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(str9xpec_handle_flash_disable_turbo_command)
 {
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
        str9xpec_flash_controller_t *str9xpec_info = NULL;
 
        if (argc < 1)
@@ -1229,3 +1162,59 @@ static int str9xpec_handle_flash_disable_turbo_command(struct command_context_s
 
        return ERROR_OK;
 }
+
+static int str9xpec_register_commands(struct command_context_s *cmd_ctx)
+{
+       command_t *str9xpec_cmd = register_command(cmd_ctx, NULL, "str9xpec",
+                       NULL, COMMAND_ANY, "str9xpec flash specific commands");
+
+       register_command(cmd_ctx, str9xpec_cmd, "enable_turbo",
+                       str9xpec_handle_flash_enable_turbo_command,
+                       COMMAND_EXEC, "enable str9xpec turbo mode");
+       register_command(cmd_ctx, str9xpec_cmd, "disable_turbo",
+                       str9xpec_handle_flash_disable_turbo_command,
+                       COMMAND_EXEC, "disable str9xpec turbo mode");
+       register_command(cmd_ctx, str9xpec_cmd, "options_cmap",
+                       str9xpec_handle_flash_options_cmap_command,
+                       COMMAND_EXEC, "configure str9xpec boot sector");
+       register_command(cmd_ctx, str9xpec_cmd, "options_lvdthd",
+                       str9xpec_handle_flash_options_lvdthd_command,
+                       COMMAND_EXEC, "configure str9xpec lvd threshold");
+       register_command(cmd_ctx, str9xpec_cmd, "options_lvdsel",
+                       str9xpec_handle_flash_options_lvdsel_command,
+                       COMMAND_EXEC, "configure str9xpec lvd selection");
+       register_command(cmd_ctx, str9xpec_cmd, "options_lvdwarn",
+                       str9xpec_handle_flash_options_lvdwarn_command,
+                       COMMAND_EXEC, "configure str9xpec lvd warning");
+       register_command(cmd_ctx, str9xpec_cmd, "options_read",
+                       str9xpec_handle_flash_options_read_command,
+                       COMMAND_EXEC, "read str9xpec options");
+       register_command(cmd_ctx, str9xpec_cmd, "options_write",
+                       str9xpec_handle_flash_options_write_command,
+                       COMMAND_EXEC, "write str9xpec options");
+       register_command(cmd_ctx, str9xpec_cmd, "lock",
+                       str9xpec_handle_flash_lock_command,
+                       COMMAND_EXEC, "lock str9xpec device");
+       register_command(cmd_ctx, str9xpec_cmd, "unlock",
+                       str9xpec_handle_flash_unlock_command,
+                       COMMAND_EXEC, "unlock str9xpec device");
+       register_command(cmd_ctx, str9xpec_cmd, "part_id",
+                       str9xpec_handle_part_id_command,
+                       COMMAND_EXEC, "print part id of str9xpec flash bank <num>");
+
+       return ERROR_OK;
+}
+
+struct flash_driver str9xpec_flash = {
+               .name = "str9xpec",
+               .register_commands = &str9xpec_register_commands,
+               .flash_bank_command = &str9xpec_flash_bank_command,
+               .erase = &str9xpec_erase,
+               .protect = &str9xpec_protect,
+               .write = &str9xpec_write,
+               .probe = &str9xpec_probe,
+               .auto_probe = &str9xpec_probe,
+               .erase_check = &str9xpec_erase_check,
+               .protect_check = &str9xpec_protect_check,
+               .info = &str9xpec_info,
+       };