Beispiel #1
0
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);
}
Beispiel #2
0
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);
}
Beispiel #3
0
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);
}
Beispiel #4
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;
	}
}
Beispiel #5
0
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);
}
Beispiel #6
0
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);
}
Beispiel #7
0
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);
}
Beispiel #8
0
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);
}
Beispiel #9
0
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);
}
Beispiel #10
0
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);
}