drivers: xds110: Fix errors in routine that toggles
authorEdward Fewell <efewell@ti.com>
Fri, 6 Mar 2020 20:39:14 +0000 (14:39 -0600)
committerTomas Vanek <vanekt@fbl.cz>
Sat, 14 Mar 2020 19:16:42 +0000 (19:16 +0000)
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 <efewell@ti.com>
Reviewed-on: http://openocd.zylin.com/5497
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/jtag/drivers/xds110.c

index 14bfe9c75c6aaf1a2310fb39b84afb33b442ab95..69d989520537018f20b0d6018d32e1d2583ebd53 100644 (file)
@@ -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;
        }