From 335bafbb2561d92d1631050e6aa3c4ab93e3644e Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Thu, 19 Jun 2014 14:21:21 +0400 Subject: [PATCH] Auto-select JTAG transport when appropriate 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 Reviewed-on: http://openocd.zylin.com/2179 Tested-by: jenkins Reviewed-by: Andreas Fritiofson --- src/jtag/startup.tcl | 26 ++++++++++++++++++++++++++ tcl/target/swj-dp.tcl | 5 +++++ 2 files changed, 31 insertions(+) diff --git a/src/jtag/startup.tcl b/src/jtag/startup.tcl index 94590e133..6f9c000d8 100644 --- a/src/jtag/startup.tcl +++ b/src/jtag/startup.tcl @@ -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. diff --git a/tcl/target/swj-dp.tcl b/tcl/target/swj-dp.tcl index bd348e661..2fa82ed37 100644 --- a/tcl/target/swj-dp.tcl +++ b/tcl/target/swj-dp.tcl @@ -18,6 +18,11 @@ # 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 }