int common_magic;
struct adiv5_dap *dap;
struct adiv5_ap *ap;
- int ap_num;
+ uint64_t ap_num;
};
static int mem_ap_target_create(struct target *target, Jim_Interp *interp)
struct adiv5_private_config *pc;
pc = (struct adiv5_private_config *)target->private_config;
- if (pc == NULL)
+ if (!pc)
return ERROR_FAIL;
if (pc->ap_num == DP_APSEL_INVALID) {
}
mem_ap = calloc(1, sizeof(struct mem_ap));
- if (mem_ap == NULL) {
+ if (!mem_ap) {
LOG_ERROR("Out of memory");
return ERROR_FAIL;
}
static void mem_ap_deinit_target(struct target *target)
{
+ struct mem_ap *mem_ap = target->arch_info;
+
LOG_DEBUG("%s", __func__);
+ if (mem_ap->ap)
+ dap_put_ap(mem_ap->ap);
+
free(target->private_config);
free(target->arch_info);
return;
struct mem_ap *mem_ap = target->arch_info;
if (!target_was_examined(target)) {
- mem_ap->ap = dap_ap(mem_ap->dap, mem_ap->ap_num);
+ if (mem_ap->ap) {
+ dap_put_ap(mem_ap->ap);
+ mem_ap->ap = NULL;
+ }
+
+ mem_ap->ap = dap_get_ap(mem_ap->dap, mem_ap->ap_num);
+ if (!mem_ap->ap) {
+ LOG_ERROR("Cannot get AP");
+ return ERROR_FAIL;
+ }
target_set_examined(target);
target->state = TARGET_UNKNOWN;
target->debug_reason = DBG_REASON_UNDEFINED;
LOG_DEBUG("Reading memory at physical address " TARGET_ADDR_FMT
"; size %" PRIu32 "; count %" PRIu32, address, size, count);
- if (count == 0 || buffer == NULL)
+ if (count == 0 || !buffer)
return ERROR_COMMAND_SYNTAX_ERROR;
return mem_ap_read_buf(mem_ap->ap, buffer, size, count, address);
LOG_DEBUG("Writing memory at physical address " TARGET_ADDR_FMT
"; size %" PRIu32 "; count %" PRIu32, address, size, count);
- if (count == 0 || buffer == NULL)
+ if (count == 0 || !buffer)
return ERROR_COMMAND_SYNTAX_ERROR;
return mem_ap_write_buf(mem_ap->ap, buffer, size, count, address);