diff options
author | Andreas Fritiofson <andreas.fritiofson@gmail.com> | 2015-12-06 14:04:24 +0100 |
---|---|---|
committer | Andreas Fritiofson <andreas.fritiofson@gmail.com> | 2015-12-29 20:29:46 +0000 |
commit | 00dbc185ee56e68fac04935f388259d13ecef315 (patch) | |
tree | d44852d6285ad765d0f370b32e135d846b767853 /src/target/cortex_m.c | |
parent | c6ce183055acebcc1c5ef004f2f6f4a4042700dd (diff) | |
download | riscv-openocd-00dbc185ee56e68fac04935f388259d13ecef315.zip riscv-openocd-00dbc185ee56e68fac04935f388259d13ecef315.tar.gz riscv-openocd-00dbc185ee56e68fac04935f388259d13ecef315.tar.bz2 |
arm_adi_v5: Split ahbap_debugport_init
This function does two separate things, powering up the DP and setting
up a MEM-AP. But the DP needs to be powered before even searching for a
MEM-AP to initialize and targets may have multiple MEM-APs that need
initializing.
Split the function into dap_dp_init() and mem_ap_init() and change all
call sites to use the appropriate one.
Change-Id: I92f55e09754a93f3f01dd8e5aa1ffdf60c856126
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/3151
Tested-by: jenkins
Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
Diffstat (limited to 'src/target/cortex_m.c')
-rw-r--r-- | src/target/cortex_m.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/target/cortex_m.c b/src/target/cortex_m.c index d92cfce..ca230f3 100644 --- a/src/target/cortex_m.c +++ b/src/target/cortex_m.c @@ -1063,7 +1063,7 @@ static int cortex_m_assert_reset(struct target *target) if (retval != ERROR_OK) LOG_DEBUG("Ignoring AP write error right after reset"); - retval = ahbap_debugport_init(armv7m->debug_ap); + retval = dap_dp_init(armv7m->debug_ap->dap); if (retval != ERROR_OK) { LOG_ERROR("DP initialisation failed"); return retval; @@ -1109,7 +1109,7 @@ static int cortex_m_deassert_reset(struct target *target) if ((jtag_reset_config & RESET_HAS_SRST) && !(jtag_reset_config & RESET_SRST_NO_GATING)) { - int retval = ahbap_debugport_init(armv7m->debug_ap); + int retval = dap_dp_init(armv7m->debug_ap->dap); if (retval != ERROR_OK) { LOG_ERROR("DP initialisation failed"); return retval; @@ -1891,6 +1891,12 @@ int cortex_m_examine(struct target *target) struct adiv5_dap *swjdp = cortex_m->armv7m.arm.dap; struct armv7m_common *armv7m = target_to_armv7m(target); + retval = dap_dp_init(swjdp); + if (retval != ERROR_OK) { + LOG_ERROR("Could not initialize the debug port"); + return retval; + } + /* Search for the MEM-AP */ retval = dap_find_ap(swjdp, AP_TYPE_AHB_AP, &armv7m->debug_ap); if (retval != ERROR_OK) { @@ -1904,7 +1910,7 @@ int cortex_m_examine(struct target *target) /* stlink shares the examine handler but does not support * all its calls */ if (!armv7m->stlink) { - retval = ahbap_debugport_init(armv7m->debug_ap); + retval = mem_ap_init(armv7m->debug_ap); if (retval != ERROR_OK) return retval; } |