From a34c336cbf7dbe3540cbce59a9b10e81c28fa32a Mon Sep 17 00:00:00 2001 From: Edward Fewell Date: Fri, 6 Mar 2020 14:39:14 -0600 Subject: [PATCH] drivers: xds110: Fix errors in routine that toggles TCK during nSRST assert/deassert code. To support LPRF targets (CC13xx/CC26xx), TCK must be toggled for 50 ms while nSRST is asserted and right after it is released. This allows the core to halt in boot ROM before code is run that might interfere with debug access. The current routine has two issues. It shouldn't be run at all if the target is using SWD. And the delay needs to be a real-time 50 ms, so the number of TCK periods should be calculated off the set speed. Change-Id: If993031b84cf2a505ea67a6633602c4b01cd8e1e Signed-off-by: Edward Fewell Reviewed-on: http://openocd.zylin.com/5497 Tested-by: jenkins Reviewed-by: Tomas Vanek --- src/jtag/drivers/xds110.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/jtag/drivers/xds110.c b/src/jtag/drivers/xds110.c index 14bfe9c75..69d989520 100644 --- a/src/jtag/drivers/xds110.c +++ b/src/jtag/drivers/xds110.c @@ -1624,7 +1624,11 @@ static int xds110_reset(int trst, int srst) retval = ERROR_FAIL; /* Toggle TCK to trigger HIB on CC13x/CC26x devices */ - success = xds_cycle_tck(60000); + if (success && !xds110.is_swd_mode) { + /* Toggle TCK for about 50 ms */ + success = xds_cycle_tck(xds110.speed * 50); + } + if (!success) retval = ERROR_FAIL; }