Auto-select JTAG transport when appropriate
authorPaul Fertser <fercerpav@gmail.com>
Thu, 19 Jun 2014 10:21:21 +0000 (14:21 +0400)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Sat, 28 Jun 2014 09:35:38 +0000 (09:35 +0000)
I looked through all the target configs after stripping comments and
such from them with sed to see what jtag-specific commands can appear
first, and it looks like all the meaningful combinations should be
covered.

Change-Id: I8d543407b7f4ac8aca7354ecd50e841c8a04d5f3
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/2179
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
src/jtag/startup.tcl
tcl/target/swj-dp.tcl

index 94590e13389807fa98d8867fe3825b320c2b9056..6f9c000d84a4164d2b433b2b4df80db11225577e 100644 (file)
@@ -87,6 +87,32 @@ proc measure_clk {} {
 
 add_help_text measure_clk "Runs a test to measure the JTAG clk. Useful with RCLK / RTCK."
 
+proc default_to_jtag { f args } {
+       if [catch {transport select} current_transport] {
+               echo "Info : session transport was not selected, defaulting to JTAG"
+               transport select jtag
+               eval $f $args
+       } {
+               error "session transport is \"$current_transport\" but your config requires JTAG"
+       }
+}
+
+proc jtag args {
+       eval default_to_jtag jtag $args
+}
+
+proc jtag_rclk args {
+       eval default_to_jtag jtag_rclk $args
+}
+
+proc jtag_ntrst_delay args {
+       eval default_to_jtag jtag_ntrst_delay $args
+}
+
+proc jtag_ntrst_assert_width args {
+       eval default_to_jtag jtag_ntrst_assert_width $args
+}
+
 # BEGIN MIGRATION AIDS ...  these adapter operations originally had
 # JTAG-specific names despite the fact that the operations were not
 # specific to JTAG, or otherewise had troublesome/misleading names.
index bd348e6611a4b6e178e110b312079f1e29288ecc..2fa82ed376ced88c93e88d0ef40d4318342a0945 100644 (file)
 # split out "chip" and "tag" so we can someday handle
 # them more uniformly irlen too...)
 
+if [catch {transport select}] {
+ echo "Info : session transport was not selected, defaulting to JTAG"
+ transport select jtag
+}
+
 proc swj_newdap {chip tag args} {
  if {[using_jtag]} { eval jtag newtap $chip $tag $args }
  if {[using_swd]} { eval swd newdap $chip $tag $args }