arm_adi_v5: add API send_sequence() and use it
The method to send an arbitrary sequence to DAP depends on the transport and is thus different on JTAG and SWD. This is already coded in dap_to_jtag() and dap_to_swd(). Add a new API send_sequence() in struct dap_ops. Add the implementations of send_sequence() in adi_v5_jtag.c and adi_v5_swd.c Rewrite dap_to_jtag() and dap_to_swd() using the new API. Move the enum swd_special_seq in arm_adi_v5.h to solve a circular dependencies among swd.h and arm_adi_v5.h Change-Id: I9db13a00f129761eab283783c094cfff2dd92610 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/4902 Tested-by: jenkins Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
committed by
Tomas Vanek
parent
5d08bcb715
commit
be2d25efcc
@@ -804,26 +804,9 @@ int mem_ap_init(struct adiv5_ap *ap)
|
||||
*/
|
||||
int dap_to_swd(struct adiv5_dap *dap)
|
||||
{
|
||||
int retval;
|
||||
|
||||
LOG_DEBUG("Enter SWD mode");
|
||||
|
||||
if (transport_is_jtag()) {
|
||||
retval = jtag_add_tms_seq(swd_seq_jtag_to_swd_len,
|
||||
swd_seq_jtag_to_swd, TAP_INVALID);
|
||||
if (retval == ERROR_OK)
|
||||
retval = jtag_execute_queue();
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (transport_is_swd()) {
|
||||
const struct swd_driver *swd = adiv5_dap_swd_driver(dap);
|
||||
|
||||
return swd->switch_seq(JTAG_TO_SWD);
|
||||
}
|
||||
|
||||
LOG_ERROR("Nor JTAG nor SWD transport");
|
||||
return ERROR_FAIL;
|
||||
return dap_send_sequence(dap, JTAG_TO_SWD);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -839,26 +822,9 @@ int dap_to_swd(struct adiv5_dap *dap)
|
||||
*/
|
||||
int dap_to_jtag(struct adiv5_dap *dap)
|
||||
{
|
||||
int retval;
|
||||
|
||||
LOG_DEBUG("Enter JTAG mode");
|
||||
|
||||
if (transport_is_jtag()) {
|
||||
retval = jtag_add_tms_seq(swd_seq_swd_to_jtag_len,
|
||||
swd_seq_swd_to_jtag, TAP_RESET);
|
||||
if (retval == ERROR_OK)
|
||||
retval = jtag_execute_queue();
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (transport_is_swd()) {
|
||||
const struct swd_driver *swd = adiv5_dap_swd_driver(dap);
|
||||
|
||||
return swd->switch_seq(SWD_TO_JTAG);
|
||||
}
|
||||
|
||||
LOG_ERROR("Nor JTAG nor SWD transport");
|
||||
return ERROR_FAIL;
|
||||
return dap_send_sequence(dap, SWD_TO_JTAG);
|
||||
}
|
||||
|
||||
/* CID interpretation -- see ARM IHI 0029B section 3
|
||||
|
||||
Reference in New Issue
Block a user