target/adi_v5_swd: move setting of do_reconnect one level up
Move setting of do_reconnect flag from swd_run_inner() to swd_run(). Reconnect is not used at the inner level and the flag had to be cleared after swd_run_inner() to prevent recursion. Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Change-Id: Ib1de80bbdf10d1cbfb1dd351c6a5658e50d12af2 Reviewed-on: https://review.openocd.org/c/openocd/+/8155 Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Tested-by: jenkins
This commit is contained in:
parent
c02cf9404d
commit
a35e254c53
|
@ -84,16 +84,8 @@ static void swd_clear_sticky_errors(struct adiv5_dap *dap)
|
|||
static int swd_run_inner(struct adiv5_dap *dap)
|
||||
{
|
||||
const struct swd_driver *swd = adiv5_dap_swd_driver(dap);
|
||||
int retval;
|
||||
|
||||
retval = swd->run();
|
||||
|
||||
if (retval != ERROR_OK) {
|
||||
/* fault response */
|
||||
dap->do_reconnect = true;
|
||||
}
|
||||
|
||||
return retval;
|
||||
return swd->run();
|
||||
}
|
||||
|
||||
static inline int check_sync(struct adiv5_dap *dap)
|
||||
|
@ -288,15 +280,15 @@ static int swd_multidrop_select(struct adiv5_dap *dap)
|
|||
swd_multidrop_selected_dap = NULL;
|
||||
if (retry > 3) {
|
||||
LOG_ERROR("Failed to select multidrop %s", adiv5_dap_name(dap));
|
||||
dap->do_reconnect = true;
|
||||
return retval;
|
||||
}
|
||||
|
||||
LOG_DEBUG("Failed to select multidrop %s, retrying...",
|
||||
adiv5_dap_name(dap));
|
||||
/* we going to retry localy, do not ask for full reconnect */
|
||||
dap->do_reconnect = false;
|
||||
}
|
||||
|
||||
dap->do_reconnect = false;
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -635,7 +627,13 @@ static int swd_run(struct adiv5_dap *dap)
|
|||
|
||||
swd_finish_read(dap);
|
||||
|
||||
return swd_run_inner(dap);
|
||||
retval = swd_run_inner(dap);
|
||||
if (retval != ERROR_OK) {
|
||||
/* fault response */
|
||||
dap->do_reconnect = true;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/** Put the SWJ-DP back to JTAG mode */
|
||||
|
|
Loading…
Reference in New Issue