jtagonizer

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit a5b074a2eb88297b3f60c041062f9c7a5df0c501
parent bf1c46cd2f23033133e94c100216d616fe370b91
Author: Brian Swetland <swetland@frotz.net>
Date:   Tue, 30 Sep 2014 18:36:06 -0700

dap: add reset, clean up dp_rd/wr

Diffstat:
Mdap.c | 18++++++++++++++++--
Mdap.h | 2++
2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/dap.c b/dap.c @@ -103,7 +103,10 @@ int dap_dp_rd(DAP *dap, u32 addr, u32 *val) { q_dap_ir_wr(dap, DAP_IR_DPACC); q_dap_dr_io(dap, 35, XPACC_RD(addr), NULL); q_dap_dr_io(dap, 35, XPACC_RD(DPACC_RDBUFF), &u); - if (dap_commit(dap)) { + if (jtag_commit(dap->jtag)) { + return -1; + } + if (XPACC_STATUS(u) != XPACC_OK) { return -1; } *val = u >> 3; @@ -118,7 +121,7 @@ static void q_dap_dp_wr(DAP *dap, u32 addr, u32 val) { int dap_dp_wr(DAP *dap, u32 addr, u32 val) { q_dap_dp_wr(dap, addr, val); - return dap_commit(dap); + return jtag_commit(dap->jtag); } int dap_ap_rd(DAP *dap, u32 apnum, u32 addr, u32 *val) { @@ -357,3 +360,14 @@ int dap_probe(DAP *dap) { return 0; } +int dap_reset(DAP *dap) { + u32 x; + if (dap_dp_wr(dap, DPACC_CSW, CSW_ENABLES | DPCSW_CDBGRSTREQ)) { + return -1; + } + if (dap_dp_rd(dap, DPACC_CSW, &x)) { + return -1; + } + printf("%08x\n", x); + return 0; +} diff --git a/dap.h b/dap.h @@ -21,4 +21,6 @@ DAP *dap_init(JTAG *jtag, u32 jtag_device_id); int dap_attach(DAP *dap); +int dap_reset(DAP *dap); + #endif