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/+/8157

-- gerrit

commit d0765fd04e828b8b71cb1c0791ba6bed0d6c1a00
Author: Tomas Vanek <van...@fbl.cz>
Date:   Fri Feb 9 15:10:30 2024 +0100

    target/arm_adi_v5: do not invalidate DAP cache before dp_init
    
    At least select_valid and select_dpbanksel_valid flags set by
    the transport specific part of dap_ops->connect()
    should be preserved to prevent unwanted write to SELECT register.
    
    Move dap_invalidate_cache() before connect wherever applicable.
    
    Signed-off-by: Tomas Vanek <van...@fbl.cz>
    Change-Id: I238c0a546b7451e4185a5895b777b8282ad996eb

diff --git a/src/flash/nor/psoc6.c b/src/flash/nor/psoc6.c
index b7ba1027ed..9de8c7c286 100644
--- a/src/flash/nor/psoc6.c
+++ b/src/flash/nor/psoc6.c
@@ -945,6 +945,7 @@ static int handle_reset_halt(struct target *target)
 
        /* Wait 100ms for bootcode and reinitialize DAP */
        usleep(100000);
+       dap_invalidate_cache(cm->debug_ap->dap);
        dap_dp_init(cm->debug_ap->dap);
 
        target_wait_state(target, TARGET_HALTED, IPC_TIMEOUT_MS);
diff --git a/src/jtag/drivers/vdebug.c b/src/jtag/drivers/vdebug.c
index f1fc4535f3..dc52ab35df 100644
--- a/src/jtag/drivers/vdebug.c
+++ b/src/jtag/drivers/vdebug.c
@@ -1119,6 +1119,7 @@ static int vdebug_dap_bankselect(struct adiv5_ap *ap, 
unsigned int reg)
 
 static int vdebug_dap_connect(struct adiv5_dap *dap)
 {
+       dap_invalidate_cache(dap);
        return dap_dp_init(dap);
 }
 
diff --git a/src/target/adi_v5_jtag.c b/src/target/adi_v5_jtag.c
index 8d54a50fb0..c2fafc4c65 100644
--- a/src/target/adi_v5_jtag.c
+++ b/src/target/adi_v5_jtag.c
@@ -703,6 +703,8 @@ static int jtagdp_transaction_endcheck(struct adiv5_dap 
*dap)
 static int jtag_connect(struct adiv5_dap *dap)
 {
        dap->do_reconnect = false;
+       dap_invalidate_cache(dap);
+
        return dap_dp_init(dap);
 }
 
diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
index ff12658c83..704a9c760c 100644
--- a/src/target/arm_adi_v5.c
+++ b/src/target/arm_adi_v5.c
@@ -783,7 +783,6 @@ int dap_dp_init(struct adiv5_dap *dap)
        LOG_DEBUG("%s", adiv5_dap_name(dap));
 
        dap->do_reconnect = false;
-       dap_invalidate_cache(dap);
 
        /*
         * Early initialize dap->dp_ctrl_stat.
@@ -873,6 +872,7 @@ int dap_dp_init_or_reconnect(struct adiv5_dap *dap)
                /* dap connect calls dap_dp_init() after transport dependent 
initialization */
                return dap->ops->connect(dap);
        } else {
+               dap_invalidate_cache(dap);
                return dap_dp_init(dap);
        }
 }

-- 

Reply via email to