This is an automated email from Gerrit.

"Tomas Vanek <van...@fbl.cz>" just uploaded a new patch set to Gerrit, which 
you can find at https://review.openocd.org/c/openocd/+/8155

-- gerrit

commit 4906e59957db2d517e6cc4095d78e803a8d3d77f
Author: Tomas Vanek <van...@fbl.cz>
Date:   Fri Feb 16 17:17:05 2024 +0100

    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 <van...@fbl.cz>
    Change-Id: Ib1de80bbdf10d1cbfb1dd351c6a5658e50d12af2

diff --git a/src/target/adi_v5_swd.c b/src/target/adi_v5_swd.c
index 67706f35b0..1231005884 100644
--- a/src/target/adi_v5_swd.c
+++ b/src/target/adi_v5_swd.c
@@ -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 */

-- 

Reply via email to