static int (swd_queue_ap_write)(struct adiv5_dap *dap, unsigned reg, uint32_t data) { /* REVISIT APSEL ... */ /* REVISIT status return ... */ return swd->write_reg(swd_cmd(false, true, reg), data); }
static int (swd_queue_ap_read)(struct adiv5_dap *dap, unsigned reg, uint32_t *data) { /* REVISIT APSEL ... */ /* REVISIT status return ... */ return swd->read_reg(swd_cmd(true, true, reg), data); }
static void swd_clear_sticky_errors(struct adiv5_dap *dap) { const struct swd_driver *swd = adiv5_dap_swd_driver(dap); assert(swd); swd->write_reg(swd_cmd(false, false, DP_ABORT), STKCMPCLR | STKERRCLR | WDERRCLR | ORUNERRCLR, 0); }
static void swd_finish_read(struct adiv5_dap *dap) { const struct swd_driver *swd = adiv5_dap_swd_driver(dap); if (dap->last_read != NULL) { swd->read_reg(swd_cmd(true, false, DP_RDBUFF), dap->last_read, 0); dap->last_read = NULL; } }
static void swd_clear_sticky_errors(struct adiv5_dap *dap) { const struct swd_driver *swd = jtag_interface->swd; assert(swd); swd->write_reg(dap, swd_cmd(false, false, DP_ABORT), STKCMPCLR | STKERRCLR | WDERRCLR | ORUNERRCLR); }
static int swd_queue_ap_abort(struct adiv5_dap *dap, uint8_t *ack) { const struct swd_driver *swd = adiv5_dap_swd_driver(dap); assert(swd); swd->write_reg(swd_cmd(false, false, DP_ABORT), DAPABORT | STKCMPCLR | STKERRCLR | WDERRCLR | ORUNERRCLR, 0); return check_sync(dap); }
static int swd_queue_dp_read(struct adiv5_dap *dap, unsigned reg, uint32_t *data) { const struct swd_driver *swd = adiv5_dap_swd_driver(dap); assert(swd); int retval = swd_check_reconnect(dap); if (retval != ERROR_OK) return retval; swd_queue_dp_bankselect(dap, reg); swd->read_reg(swd_cmd(true, false, reg), data, 0); return check_sync(dap); }
static int swd_queue_ap_write(struct adiv5_ap *ap, unsigned reg, uint32_t data) { struct adiv5_dap *dap = ap->dap; const struct swd_driver *swd = adiv5_dap_swd_driver(dap); assert(swd); int retval = swd_check_reconnect(dap); if (retval != ERROR_OK) return retval; swd_finish_read(dap); swd_queue_ap_bankselect(ap, reg); swd->write_reg(swd_cmd(false, true, reg), data, ap->memaccess_tck); return check_sync(dap); }
static int swd_queue_dp_read(struct adiv5_dap *dap, unsigned reg, uint32_t *data) { /* REVISIT status return vs ack ... */ return swd->read_reg(swd_cmd(true, false, reg), data); }
static int (swd_queue_dp_write)(struct adiv5_dap *dap, unsigned reg, uint32_t data) { // REVISIT status return vs ack ... return swd->write_reg(swd_cmd(false, false, reg), data); }