JTAG: fix autoprobe failure.
[openocd.git] / src / jtag / tcl.c
index 71efc8b5d3d8dbd149cee63a31a6eedf6787fd64..71e7bd5a7505663170b2850ad407543b0efa1c5b 100644 (file)
@@ -49,7 +49,7 @@ static const Jim_Nvp nvp_jtag_tap_event[] = {
        { .name = NULL, .value = -1 }
 };
 
-extern jtag_interface_t *jtag_interface;
+extern struct jtag_interface *jtag_interface;
 
 enum jtag_tap_cfg_param {
        JCFG_EVENT
@@ -61,7 +61,7 @@ static Jim_Nvp nvp_config_opts[] = {
        { .name = NULL,          .value = -1 }
 };
 
-static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, jtag_tap_t * tap)
+static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, struct jtag_tap * tap)
 {
        Jim_Nvp *n;
        Jim_Obj *o;
@@ -103,7 +103,7 @@ static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, jtag_tap_t * tap)
                                }
 
                                {
-                                       jtag_tap_event_action_t *jteap;
+                                       struct jtag_tap_event_action *jteap;
 
                                        jteap = tap->event_action;
                                        /* replace existing? */
@@ -165,7 +165,7 @@ static int is_bad_irval(int ir_length, jim_wide w)
 
 static int jim_newtap_cmd(Jim_GetOptInfo *goi)
 {
-       jtag_tap_t *pTap;
+       struct jtag_tap *pTap;
        jim_wide w;
        int x;
        int e;
@@ -187,7 +187,7 @@ static int jim_newtap_cmd(Jim_GetOptInfo *goi)
                { .name = NULL                          ,       .value = -1 },
        };
 
-       pTap = calloc(1, sizeof(jtag_tap_t));
+       pTap = calloc(1, sizeof(struct jtag_tap));
        if (!pTap) {
                Jim_SetResult_sprintf(goi->interp, "no memory");
                return JIM_ERR;
@@ -335,9 +335,9 @@ static int jim_newtap_cmd(Jim_GetOptInfo *goi)
        return JIM_ERR;
 }
 
-static void jtag_tap_handle_event(jtag_tap_t *tap, enum jtag_event e)
+static void jtag_tap_handle_event(struct jtag_tap *tap, enum jtag_event e)
 {
-       jtag_tap_event_action_t * jteap;
+       struct jtag_tap_event_action * jteap;
 
        for (jteap = tap->event_action; jteap != NULL; jteap = jteap->next) {
                if (jteap->event == e) {
@@ -373,7 +373,7 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
        int e;
        Jim_Nvp *n;
        Jim_Obj *o;
-       struct command_context_s *context;
+       struct command_context *context;
 
        enum {
                JTAG_CMD_INTERFACE,
@@ -422,7 +422,8 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
                        Jim_WrongNumArgs(goi.interp, 1, goi.argv-1, "(no params)");
                        return JIM_ERR;
                }
-               Jim_SetResultString(goi.interp, jtag_interface->name, -1);
+               const char *name = jtag_interface ? jtag_interface->name : NULL;
+               Jim_SetResultString(goi.interp, name ? : "undefined", -1);
                return JIM_OK;
        case JTAG_CMD_INIT:
                if (goi.argc != 0) {
@@ -458,7 +459,7 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
                }
 
                {
-                       jtag_tap_t *t;
+                       struct jtag_tap *t;
 
                        t = jtag_tap_by_jim_obj(goi.interp, goi.argv[0]);
                        if (t == NULL)
@@ -510,7 +511,7 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
                }
 
                {
-                       jtag_tap_t *t;
+                       struct jtag_tap *t;
 
                        Jim_GetOpt_Obj(&goi, &o);
                        t = jtag_tap_by_jim_obj(goi.interp, o);
@@ -531,7 +532,7 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
                }
 
                {
-                       jtag_tap_t *t;
+                       struct jtag_tap *t;
 
                        Jim_GetOpt_Obj(&goi, &o);
                        t = jtag_tap_by_jim_obj(goi.interp, o);
@@ -551,7 +552,7 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
                }
                Jim_SetResult(goi.interp, Jim_NewListObj(goi.interp, NULL, 0));
                {
-                       jtag_tap_t *tap;
+                       struct jtag_tap *tap;
 
                        for (tap = jtag_all_taps(); tap; tap = tap->next_tap) {
                                Jim_ListAppendElement(goi.interp,
@@ -571,7 +572,7 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
 
 void jtag_notify_event(enum jtag_event event)
 {
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
 
        for (tap = jtag_all_taps(); tap; tap = tap->next_tap)
                jtag_tap_handle_event(tap, event);
@@ -602,10 +603,9 @@ static int default_srst_asserted(int *srst_asserted)
        return ERROR_OK;
 }
 
-static int handle_interface_list_command(struct command_context_s *cmd_ctx,
-               char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_interface_list_command)
 {
-       if (strcmp(cmd, "interface_list") == 0 && argc > 0)
+       if (strcmp(CMD_NAME, "interface_list") == 0 && argc > 0)
                return ERROR_COMMAND_SYNTAX_ERROR;
 
        command_print(cmd_ctx, "The following JTAG interfaces are available:");
@@ -618,8 +618,7 @@ static int handle_interface_list_command(struct command_context_s *cmd_ctx,
        return ERROR_OK;
 }
 
-static int handle_interface_command(struct command_context_s *cmd_ctx,
-               char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_interface_command)
 {
        /* check whether the interface is already configured */
        if (jtag_interface)
@@ -659,13 +658,13 @@ static int handle_interface_command(struct command_context_s *cmd_ctx,
         * didn't match one of the compiled-in interfaces
         */
        LOG_ERROR("The specified JTAG interface was not found (%s)", args[0]);
-       handle_interface_list_command(cmd_ctx, cmd, args, argc);
+       CALL_COMMAND_HANDLER(handle_interface_list_command);
        return ERROR_JTAG_INVALID_INTERFACE;
 }
 
-static int handle_scan_chain_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_scan_chain_command)
 {
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
 
        tap = jtag_all_taps();
        command_print(cmd_ctx, "     TapName            | Enabled |   IdCode      Expected    IrLen IrCap  IrMask Instr     ");
@@ -700,7 +699,7 @@ static int handle_scan_chain_command(struct command_context_s *cmd_ctx, char *cm
        return ERROR_OK;
 }
 
-static int handle_reset_config_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_reset_config_command)
 {
        int new_cfg = 0;
        int mask = 0;
@@ -896,8 +895,7 @@ next:
        return ERROR_OK;
 }
 
-static int handle_jtag_nsrst_delay_command(struct command_context_s *cmd_ctx,
-               char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_nsrst_delay_command)
 {
        if (argc > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -912,8 +910,7 @@ static int handle_jtag_nsrst_delay_command(struct command_context_s *cmd_ctx,
        return ERROR_OK;
 }
 
-static int handle_jtag_ntrst_delay_command(struct command_context_s *cmd_ctx,
-               char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_ntrst_delay_command)
 {
        if (argc > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -928,8 +925,7 @@ static int handle_jtag_ntrst_delay_command(struct command_context_s *cmd_ctx,
        return ERROR_OK;
 }
 
-static int handle_jtag_nsrst_assert_width_command(struct command_context_s *cmd_ctx,
-               char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_nsrst_assert_width_command)
 {
        if (argc > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -944,8 +940,7 @@ static int handle_jtag_nsrst_assert_width_command(struct command_context_s *cmd_
        return ERROR_OK;
 }
 
-static int handle_jtag_ntrst_assert_width_command(struct command_context_s *cmd_ctx,
-               char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_ntrst_assert_width_command)
 {
        if (argc > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -960,7 +955,7 @@ static int handle_jtag_ntrst_assert_width_command(struct command_context_s *cmd_
        return ERROR_OK;
 }
 
-static int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_khz_command)
 {
        if (argc > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -989,7 +984,7 @@ static int handle_jtag_khz_command(struct command_context_s *cmd_ctx, char *cmd,
        return retval;
 }
 
-static int handle_jtag_rclk_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_rclk_command)
 {
        if (argc > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -1018,8 +1013,7 @@ static int handle_jtag_rclk_command(struct command_context_s *cmd_ctx, char *cmd
        return retval;
 }
 
-static int handle_jtag_reset_command(struct command_context_s *cmd_ctx,
-               char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_jtag_reset_command)
 {
        if (argc != 2)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -1047,8 +1041,7 @@ static int handle_jtag_reset_command(struct command_context_s *cmd_ctx,
        return jtag_execute_queue();
 }
 
-static int handle_runtest_command(struct command_context_s *cmd_ctx,
-               char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_runtest_command)
 {
        if (argc != 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -1082,11 +1075,11 @@ static bool scan_is_safe(tap_state_t state)
 }
 
 
-static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_irscan_command)
 {
        int i;
-       scan_field_t *fields;
-       jtag_tap_t *tap;
+       struct scan_field *fields;
+       struct jtag_tap *tap;
        tap_state_t endstate;
 
        if ((argc < 2) || (argc % 2))
@@ -1115,7 +1108,7 @@ static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, c
        }
 
        int num_fields = argc / 2;
-       size_t fields_len = sizeof(scan_field_t) * num_fields;
+       size_t fields_len = sizeof(struct scan_field) * num_fields;
        fields = malloc(fields_len);
        memset(fields, 0, fields_len);
 
@@ -1136,7 +1129,7 @@ static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, c
                int field_size = tap->ir_length;
                fields[i].tap = tap;
                fields[i].num_bits = field_size;
-               fields[i].out_value = malloc(CEIL(field_size, 8));
+               fields[i].out_value = malloc(DIV_ROUND_UP(field_size, 8));
 
                uint32_t value;
                retval = parse_u32(args[i * 2 + 1], &value);
@@ -1166,11 +1159,11 @@ error_return:
 static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args)
 {
        int retval;
-       scan_field_t *fields;
+       struct scan_field *fields;
        int num_fields;
        int field_count = 0;
        int i, e;
-       jtag_tap_t *tap;
+       struct jtag_tap *tap;
        tap_state_t endstate;
 
        /* args[1] = device
@@ -1252,7 +1245,7 @@ static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args
        }
 
        num_fields = (argc-2)/2;
-       fields = malloc(sizeof(scan_field_t) * num_fields);
+       fields = malloc(sizeof(struct scan_field) * num_fields);
        for (i = 2; i < argc; i += 2)
        {
                long bits;
@@ -1264,7 +1257,7 @@ static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args
 
                fields[field_count].tap = tap;
                fields[field_count].num_bits = bits;
-               fields[field_count].out_value = malloc(CEIL(bits, 8));
+               fields[field_count].out_value = malloc(DIV_ROUND_UP(bits, 8));
                str_to_buf(str, len, fields[field_count].out_value, bits, 0);
                fields[field_count].in_value = fields[field_count].out_value;
                field_count++;
@@ -1357,7 +1350,7 @@ static int Jim_Command_flush_count(Jim_Interp *interp, int argc, Jim_Obj *const
 }
 
 
-static int handle_verify_ircapture_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_verify_ircapture_command)
 {
        if (argc > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -1378,7 +1371,7 @@ static int handle_verify_ircapture_command(struct command_context_s *cmd_ctx, ch
        return ERROR_OK;
 }
 
-static int handle_verify_jtag_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_verify_jtag_command)
 {
        if (argc > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -1399,7 +1392,7 @@ static int handle_verify_jtag_command(struct command_context_s *cmd_ctx, char *c
        return ERROR_OK;
 }
 
-static int handle_tms_sequence_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_tms_sequence_command)
 {
        if (argc > 1)
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -1423,7 +1416,7 @@ static int handle_tms_sequence_command(struct command_context_s *cmd_ctx, char *
        return ERROR_OK;
 }
 
-int jtag_register_commands(struct command_context_s *cmd_ctx)
+int jtag_register_commands(struct command_context *cmd_ctx)
 {
        register_jim(cmd_ctx, "jtag", jim_jtag_command,
                        "perform jtag tap actions");

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)