This is an automated email from Gerrit. "Name of user not set <r.nooteb...@gmail.com>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8073
-- gerrit commit b5fbaadf1538e2dc21d9f06828f11ea90454d1e8 Author: RolfNoot <r.nooteb...@gmail.com> Date: Wed Dec 20 12:14:30 2023 +0100 src/jtag: implemented SRST toggle Some targets can't connect-under-reset and need SRST toggle to wake from sleep in order to attach. Change-Id: I85f17b0036789a98fe0dedf5c33fe84145e4afd7 Signed-off-by: RolfNoot <r.nooteb...@gmail.com> diff --git a/src/jtag/core.c b/src/jtag/core.c index e2af6c53d9..e2da74f93f 100644 --- a/src/jtag/core.c +++ b/src/jtag/core.c @@ -1877,6 +1877,21 @@ int adapter_resets(int trst, int srst) return ERROR_FAIL; } +int adapter_toggles_reset(void) +{ + if (transport_is_swd() || transport_is_hla() || transport_is_dapdirect_jtag() || + transport_is_dapdirect_swd() || transport_is_swim()) { + adapter_system_reset(1); + adapter_system_reset(0); + return ERROR_OK; + } else if (get_current_transport()) + LOG_ERROR("reset is not supported on %s", + get_current_transport()->name); + else + LOG_ERROR("transport is not selected"); + return ERROR_FAIL; +} + int adapter_assert_reset(void) { if (transport_is_jtag()) { diff --git a/src/jtag/interface.h b/src/jtag/interface.h index 3df424086d..27566c9e00 100644 --- a/src/jtag/interface.h +++ b/src/jtag/interface.h @@ -355,6 +355,7 @@ struct adapter_driver { extern const char * const jtag_only[]; int adapter_resets(int assert_trst, int assert_srst); +int adapter_toggles_reset(void); int adapter_assert_reset(void); int adapter_deassert_reset(void); int adapter_config_trace(bool enabled, enum tpiu_pin_protocol pin_protocol, diff --git a/src/target/adi_v5_swd.c b/src/target/adi_v5_swd.c index 1b743657c2..59aa330c40 100644 --- a/src/target/adi_v5_swd.c +++ b/src/target/adi_v5_swd.c @@ -402,7 +402,7 @@ static int swd_connect(struct adiv5_dap *dap) if (jtag_reset_config & RESET_SRST_NO_GATING) adapter_assert_reset(); else - LOG_WARNING("\'srst_nogate\' reset_config option is required"); + adapter_toggles_reset(); } } --