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;
};
enum cti_cfg_param {
- CFG_CHAIN_POSITION,
+ CFG_DAP,
CFG_AP_NUM,
CFG_CTIBASE
};
static const Jim_Nvp nvp_config_opts[] = {
- { .name = "-chain-position", .value = CFG_CHAIN_POSITION },
- { .name = "-ctibase", .value = CFG_CTIBASE },
- { .name = "-ap-num", .value = CFG_AP_NUM },
+ { .name = "-dap", .value = CFG_DAP },
+ { .name = "-ctibase", .value = CFG_CTIBASE },
+ { .name = "-ap-num", .value = CFG_AP_NUM },
{ .name = NULL, .value = -1 }
};
static int cti_configure(Jim_GetOptInfo *goi, struct arm_cti_object *cti)
{
- struct jtag_tap *tap = NULL;
- struct adiv5_dap *dap;
+ struct adiv5_dap *dap = NULL;
Jim_Nvp *n;
jim_wide w;
int e;
return e;
}
switch (n->value) {
- case CFG_CHAIN_POSITION: {
+ case CFG_DAP: {
Jim_Obj *o_t;
e = Jim_GetOpt_Obj(goi, &o_t);
if (e != JIM_OK)
return e;
- tap = jtag_tap_by_jim_obj(goi->interp, o_t);
- if (tap == NULL) {
- Jim_SetResultString(goi->interp, "-chain-position is invalid", -1);
+ dap = dap_instance_by_jim_obj(goi->interp, o_t);
+ if (dap == NULL) {
+ Jim_SetResultString(goi->interp, "-dap is invalid", -1);
return JIM_ERR;
}
/* loop for more */
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;
}
}
- if (tap == NULL) {
- Jim_SetResultString(goi->interp, "-chain-position required when creating CTI", -1);
+ if (dap == NULL) {
+ Jim_SetResultString(goi->interp, "-dap required when creating CTI", -1);
return JIM_ERR;
}
- if (tap->dap == NULL) {
- dap = dap_init();
- dap->tap = tap;
- tap->dap = dap;
- } else
- dap = tap->dap;
-
cti->cti.ap = dap_ap(dap, cti->ap_num);
return JIM_OK;