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>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user