[prev in list] [next in list] [prev in thread] [next in thread]
List: openocd-development
Subject: [PATCH]: d0765fd04e target/arm_adi_v5: do not invalidate DAP cache before dp_init
From: gerrit () openocd ! org
Date: 2024-02-18 10:37:20
Message-ID: 20240218103720.D9B10EB () openocd ! org
[Download RAW message or body]
This is an automated email from Gerrit.
"Tomas Vanek <vanekt@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 <vanekt@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 <vanekt@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);
}
}
--
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic