target/arm_dap: clean up dap_configure code

dap_configure() contained first time init related tasks, as the call to
dap_init_instance() and the check for configured tap.

Move all first time init related stuff to dap_create() to make dap_configure()
usable in eventual stand-alone 'dap configure' command.

Change-Id: Ia86eadb4e960ce54e8581630d01af75720d2318d
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/6702
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
This commit is contained in:
Tomas Vanek 2021-11-15 15:32:39 +01:00 committed by Antonio Borneo
parent 81afe6e3fd
commit bb78fa10c7
1 changed files with 22 additions and 18 deletions

View File

@ -165,11 +165,10 @@ static const struct jim_nvp nvp_config_opts[] = {
static int dap_configure(struct jim_getopt_info *goi, struct arm_dap_object *dap)
{
struct jtag_tap *tap = NULL;
struct jim_nvp *n;
int e;
/* parse config or cget options ... */
/* parse config ... */
while (goi->argc > 0) {
Jim_SetEmptyResult(goi->interp);
@ -184,11 +183,14 @@ static int dap_configure(struct jim_getopt_info *goi, struct arm_dap_object *dap
e = jim_getopt_obj(goi, &o_t);
if (e != JIM_OK)
return e;
struct jtag_tap *tap;
tap = jtag_tap_by_jim_obj(goi->interp, o_t);
if (!tap) {
Jim_SetResultString(goi->interp, "-chain-position is invalid", -1);
return JIM_ERR;
}
dap->dap.tap = tap;
/* loop for more */
break;
}
@ -200,14 +202,6 @@ static int dap_configure(struct jim_getopt_info *goi, struct arm_dap_object *dap
}
}
if (!tap) {
Jim_SetResultString(goi->interp, "-chain-position required when creating DAP", -1);
return JIM_ERR;
}
dap_instance_init(&dap->dap);
dap->dap.tap = tap;
return JIM_OK;
}
@ -242,15 +236,21 @@ static int dap_create(struct jim_getopt_info *goi)
if (!dap)
return JIM_ERR;
e = dap_configure(goi, dap);
if (e != JIM_OK) {
free(dap);
return e;
}
dap_instance_init(&dap->dap);
cp = Jim_GetString(new_cmd, NULL);
dap->name = strdup(cp);
e = dap_configure(goi, dap);
if (e != JIM_OK)
goto err;
if (!dap->dap.tap) {
Jim_SetResultString(goi->interp, "-chain-position required when creating DAP", -1);
e = JIM_ERR;
goto err;
}
struct command_registration dap_commands[] = {
{
.name = cp,
@ -268,14 +268,18 @@ static int dap_create(struct jim_getopt_info *goi)
e = register_commands_with_data(cmd_ctx, NULL, dap_commands, dap);
if (e != ERROR_OK) {
free(dap->name);
free(dap);
return JIM_ERR;
e = JIM_ERR;
goto err;
}
list_add_tail(&dap->lh, &all_dap);
return JIM_OK;
err:
free(dap->name);
free(dap);
return e;
}
static int jim_dap_create(Jim_Interp *interp, int argc, Jim_Obj *const *argv)