tcl/target: stm32[fl]4x: document the settings for trace
[fw/openocd] / tcl / target / stm32l4x.cfg
index 9bd7e37ba15df26fe7a7fac639867d2e5b2b7262..9a696736cd474231b252edc822d7462c28262d8b 100644 (file)
@@ -1,3 +1,5 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
 # script for stm32l4x family
 
 #
@@ -38,8 +40,6 @@ if { [info exists CPUTAPID] } {
 swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
 dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu
 
-tpiu create $_CHIPNAME.tpiu -dap $_CHIPNAME.dap -ap-num 0 -baseaddr 0xE0040000
-
 if {[using_jtag]} {
    jtag newtap $_CHIPNAME bs -irlen 5
 }
@@ -101,24 +101,30 @@ $_TARGETNAME configure -event examine-end {
        mmw 0xE0042008 0x00001800 0
 }
 
-proc proc_post_enable {_chipname} {
+tpiu create $_CHIPNAME.tpiu -dap $_CHIPNAME.dap -ap-num 0 -baseaddr 0xE0040000
+
+lappend _telnet_autocomplete_skip _proc_pre_enable_$_CHIPNAME.tpiu
+proc _proc_pre_enable_$_CHIPNAME.tpiu {_chipname} {
        targets $_chipname.cpu
 
        if { [$_chipname.tpiu cget -protocol] eq "sync" } {
                switch [$_chipname.tpiu cget -port-width] {
                        1 {
+                               # Set TRACE_IOEN; TRACE_MODE to sync 1 bit; GPIOE[2-3] to AF0
                                mmw 0xE0042004 0x00000060 0x000000c0
                                mmw 0x48001020 0x00000000 0x0000ff00
                                mmw 0x48001000 0x000000a0 0x000000f0
                                mmw 0x48001008 0x000000f0 0x00000000
                          }
                        2 {
+                               # Set TRACE_IOEN; TRACE_MODE to sync 2 bit; GPIOE[2-4] to AF0
                                mmw 0xE0042004 0x000000a0 0x000000c0
                                mmw 0x48001020 0x00000000 0x000fff00
                                mmw 0x48001000 0x000002a0 0x000003f0
                                mmw 0x48001008 0x000003f0 0x00000000
                          }
                        4 {
+                               # Set TRACE_IOEN; TRACE_MODE to sync 4 bit; GPIOE[2-6] to AF0
                                mmw 0xE0042004 0x000000e0 0x000000c0
                                mmw 0x48001020 0x00000000 0x0fffff00
                                mmw 0x48001000 0x00002aa0 0x00003ff0
@@ -126,11 +132,12 @@ proc proc_post_enable {_chipname} {
                          }
                }
        } else {
+               # Set TRACE_IOEN; TRACE_MODE to async
                mmw 0xE0042004 0x00000020 0x000000c0
        }
 }
 
-$_CHIPNAME.tpiu configure -event post-enable "proc_post_enable $_CHIPNAME"
+$_CHIPNAME.tpiu configure -event pre-enable "_proc_pre_enable_$_CHIPNAME.tpiu $_CHIPNAME"
 
 $_TARGETNAME configure -event reset-init {
        # CPU comes out of reset with MSI_ON | MSI_RDY | MSI Range 6 (4 MHz).