target/arm_tpiu: Make error message easier to understand
[fw/openocd] / src / target / arm_tpiu_swo.c
index 6d1e94fa1d01d06d9473c3c0cfdea666966a0fff..387ad9e9e193ddc435e1a05dc679629438dc79fb 100644 (file)
@@ -155,7 +155,7 @@ static int arm_tpiu_swo_poll_trace(void *priv)
        if (obj->out_filename && obj->out_filename[0] == ':')
                list_for_each_entry(c, &obj->connections, lh)
                        if (connection_write(c->connection, buf, size) != (int)size)
-                               retval = ERROR_FAIL;
+                               LOG_ERROR("Error writing to connection"); /* FIXME: which connection? */
 
        return ERROR_OK;
 }
@@ -351,7 +351,7 @@ static const struct jim_nvp nvp_arm_tpiu_swo_bool_opts[] = {
 
 static int arm_tpiu_swo_configure(struct jim_getopt_info *goi, struct arm_tpiu_swo_object *obj)
 {
-       assert(obj != NULL);
+       assert(obj);
 
        if (goi->isconfigure && obj->enabled) {
                Jim_SetResultFormatted(goi->interp, "Cannot configure TPIU/SWO; %s is enabled!", obj->name);
@@ -678,6 +678,10 @@ static int jim_arm_tpiu_swo_enable(Jim_Interp *interp, int argc, Jim_Obj *const
 
        if (obj->pin_protocol == TPIU_SPPR_PROTOCOL_SYNC) {
                retval = wrap_read_u32(target, tpiu_ap, obj->spot.base + TPIU_SSPSR_OFFSET, &value);
+               if (retval != ERROR_OK) {
+                       LOG_ERROR("Cannot read TPIU register SSPSR");
+                       return JIM_ERR;
+               }
                if (!(value & BIT(obj->port_width - 1))) {
                        LOG_ERROR("TPIU does not support port-width of %d bits", obj->port_width);
                        return JIM_ERR;
@@ -764,6 +768,10 @@ static int jim_arm_tpiu_swo_enable(Jim_Interp *interp, int argc, Jim_Obj *const
 
        arm_tpiu_swo_handle_event(obj, TPIU_SWO_EVENT_POST_ENABLE);
 
+       /* START_DEPRECATED_TPIU */
+       target_handle_event(target, TARGET_EVENT_TRACE_CONFIG);
+       /* END_DEPRECATED_TPIU */
+
        obj->enabled = true;
        return JIM_OK;
 
@@ -817,6 +825,13 @@ static int jim_arm_tpiu_swo_disable(Jim_Interp *interp, int argc, Jim_Obj *const
        }
 
        arm_tpiu_swo_handle_event(obj, TPIU_SWO_EVENT_POST_DISABLE);
+
+       /* START_DEPRECATED_TPIU */
+       struct command_context *cmd_ctx = current_command_context(interp);
+       struct target *target = get_current_target(cmd_ctx);
+       target_handle_event(target, TARGET_EVENT_TRACE_CONFIG);
+       /* END_DEPRECATED_TPIU */
+
        return JIM_OK;
 }
 
@@ -866,12 +881,13 @@ static int arm_tpiu_swo_create(Jim_Interp *interp, struct arm_tpiu_swo_object *o
        int e;
 
        cmd_ctx = current_command_context(interp);
-       assert(cmd_ctx != NULL);
+       assert(cmd_ctx);
 
        /* does this command exist? */
-       cmd = Jim_GetCommand(interp, Jim_NewStringObj(interp, obj->name, -1), JIM_ERRMSG);
+       cmd = Jim_GetCommand(interp, Jim_NewStringObj(interp, obj->name, -1), JIM_NONE);
        if (cmd) {
-               Jim_SetResultFormatted(interp, "Command: %s Exists", obj->name);
+               Jim_SetResultFormatted(interp, "cannot create TPIU object because a command with name '%s' already exists",
+                       obj->name);
                return JIM_ERR;
        }
 
@@ -887,7 +903,7 @@ static int arm_tpiu_swo_create(Jim_Interp *interp, struct arm_tpiu_swo_object *o
                COMMAND_REGISTRATION_DONE
        };
        e = register_commands_with_data(cmd_ctx, NULL, obj_commands, obj);
-       if (ERROR_OK != e)
+       if (e != ERROR_OK)
                return JIM_ERR;
 
        list_add_tail(&obj->lh, &all_tpiu_swo);
@@ -1037,7 +1053,7 @@ COMMAND_HANDLER(handle_tpiu_deprecated_config_command)
        }
 
        unsigned int cmd_idx = 0;
-       if (CMD_ARGC == cmd_idx)
+       if (cmd_idx == CMD_ARGC)
                return ERROR_COMMAND_SYNTAX_ERROR;
 
        if (!strcmp(CMD_ARGV[cmd_idx], "disable")) {
@@ -1055,18 +1071,18 @@ COMMAND_HANDLER(handle_tpiu_deprecated_config_command)
        const char *pin_clk = NULL;
        if (!strcmp(CMD_ARGV[cmd_idx], "internal")) {
                cmd_idx++;
-               if (CMD_ARGC == cmd_idx)
+               if (cmd_idx == CMD_ARGC)
                        return ERROR_COMMAND_SYNTAX_ERROR;
                output = CMD_ARGV[cmd_idx];
        } else if (strcmp(CMD_ARGV[cmd_idx], "external"))
                return ERROR_COMMAND_SYNTAX_ERROR;
        cmd_idx++;
-       if (CMD_ARGC == cmd_idx)
+       if (cmd_idx == CMD_ARGC)
                return ERROR_COMMAND_SYNTAX_ERROR;
        if (!strcmp(CMD_ARGV[cmd_idx], "sync")) {
                protocol = CMD_ARGV[cmd_idx];
                cmd_idx++;
-               if (CMD_ARGC == cmd_idx)
+               if (cmd_idx == CMD_ARGC)
                        return ERROR_COMMAND_SYNTAX_ERROR;
                port_width = CMD_ARGV[cmd_idx];
        } else {
@@ -1074,20 +1090,20 @@ COMMAND_HANDLER(handle_tpiu_deprecated_config_command)
                        return ERROR_COMMAND_SYNTAX_ERROR;
                protocol = CMD_ARGV[cmd_idx];
                cmd_idx++;
-               if (CMD_ARGC == cmd_idx)
+               if (cmd_idx == CMD_ARGC)
                        return ERROR_COMMAND_SYNTAX_ERROR;
                formatter = CMD_ARGV[cmd_idx];
        }
        cmd_idx++;
-       if (CMD_ARGC == cmd_idx)
+       if (cmd_idx == CMD_ARGC)
                return ERROR_COMMAND_SYNTAX_ERROR;
        trace_clk = CMD_ARGV[cmd_idx];
        cmd_idx++;
-       if (CMD_ARGC != cmd_idx) {
+       if (cmd_idx != CMD_ARGC) {
                pin_clk = CMD_ARGV[cmd_idx];
                cmd_idx++;
        }
-       if (CMD_ARGC != cmd_idx)
+       if (cmd_idx != CMD_ARGC)
                return ERROR_COMMAND_SYNTAX_ERROR;
 
        LOG_INFO(MSG "Running: \'%s configure -protocol %s -traceclk %s" "%s%s" "%s%s" "%s%s" "%s%s\'",
@@ -1112,7 +1128,6 @@ COMMAND_HANDLER(handle_tpiu_deprecated_config_command)
        if (retval != ERROR_OK)
                return retval;
 
-       target_handle_event(target, TARGET_EVENT_TRACE_CONFIG);
        return ERROR_OK;
 }