X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Farm_cti.c;h=3fa54d69c4bb2117c9248ecd5bdd58e7cfae4186;hb=c867806f0d3bd8e8b175093b9024bf781758cd07;hp=547b96158ba81743d40dc0517e737f4c1b34571d;hpb=2231da8ec4e7d7ae9b652f3dd1a7104f5a110f3f;p=openocd.git diff --git a/src/target/arm_cti.c b/src/target/arm_cti.c index 547b96158b..3fa54d69c4 100644 --- a/src/target/arm_cti.c +++ b/src/target/arm_cti.c @@ -173,7 +173,7 @@ int arm_cti_clear_channel(struct arm_cti *self, uint32_t channel) return arm_cti_write_reg(self, CTI_APPCLEAR, CTI_CHNL(channel)); } -static uint32_t cti_regs[26]; +static uint32_t cti_regs[28]; static const struct { uint32_t offset; @@ -206,6 +206,8 @@ static const struct { { CTI_CHOU_STATUS, "CHOUT", &cti_regs[23] }, { CTI_APPSET, "APPSET", &cti_regs[24] }, { CTI_APPCLEAR, "APPCLR", &cti_regs[25] }, + { CTI_APPPULSE, "APPPULSE", &cti_regs[26] }, + { CTI_INACK, "INACK", &cti_regs[27] }, }; static int cti_find_reg_offset(const char *name) @@ -216,9 +218,23 @@ static int cti_find_reg_offset(const char *name) if (!strcmp(name, cti_names[i].label)) return cti_names[i].offset; } + + LOG_ERROR("unknown CTI register %s", name); return -1; } +int arm_cti_cleanup_all(void) +{ + struct arm_cti_object *obj, *tmp; + + list_for_each_entry_safe(obj, tmp, &all_cti, lh) { + free(obj->name); + free(obj); + } + + return ERROR_OK; +} + COMMAND_HANDLER(handle_cti_dump) { struct arm_cti_object *obj = CMD_DATA; @@ -285,7 +301,7 @@ COMMAND_HANDLER(handle_cti_write) uint32_t value; if (CMD_ARGC != 2) { - Jim_SetResultString(interp, "Wrong numer of args", -1); + Jim_SetResultString(interp, "Wrong number of args", -1); return ERROR_FAIL; } @@ -308,7 +324,7 @@ COMMAND_HANDLER(handle_cti_read) uint32_t value; if (CMD_ARGC != 1) { - Jim_SetResultString(interp, "Wrong numer of args", -1); + Jim_SetResultString(interp, "Wrong number of args", -1); return ERROR_FAIL; } @@ -419,6 +435,10 @@ static int cti_configure(Jim_GetOptInfo *goi, struct arm_cti_object *cti) e = Jim_GetOpt_Wide(goi, &w); if (e != JIM_OK) return e; + if (w < 0 || w > DP_APSEL_MAX) { + Jim_SetResultString(goi->interp, "-ap-num is invalid", -1); + return JIM_ERR; + } cti->ap_num = (uint32_t)w; } } @@ -556,6 +576,7 @@ static const struct command_registration cti_command_handlers[] = { .mode = COMMAND_CONFIG, .help = "CTI commands", .chain = cti_subcommand_handlers, + .usage = "", }, COMMAND_REGISTRATION_DONE };