tcl/target: add SPDX tag
[fw/openocd] / tcl / target / ti_dm355.cfg
1 # SPDX-License-Identifier: GPL-2.0-or-later
2
3 #
4 # Texas Instruments DaVinci family: TMS320DM355
5 #
6 if { [info exists CHIPNAME] } {
7    set _CHIPNAME $CHIPNAME
8 } else {
9    set _CHIPNAME dm355
10 }
11
12 # TI boards default to EMU0/EMU1 *high* -- ARM and ETB are *disabled*
13 # after JTAG reset until ICEpick is used to route them in.
14 set EMU01 "-disable"
15
16 # With EMU0/EMU1 jumpered *low* ARM and ETB are *enabled* without
17 # needing any ICEpick interaction.
18 #set EMU01 "-enable"
19
20 source [find target/icepick.cfg]
21
22 #
23 # Also note: when running without RTCK before the PLLs are set up, you
24 # may need to slow the JTAG clock down quite a lot (under 2 MHz).
25 #
26
27 # Subsidiary TAP: ARM ETB11, with scan chain for 4K of ETM trace buffer
28 if { [info exists ETB_TAPID] } {
29    set _ETB_TAPID $ETB_TAPID
30 } else {
31    set _ETB_TAPID 0x2b900f0f
32 }
33 jtag newtap $_CHIPNAME etb -irlen 4 -irmask 0xf -expected-id $_ETB_TAPID $EMU01
34 jtag configure $_CHIPNAME.etb -event tap-enable \
35         "icepick_c_tapenable $_CHIPNAME.jrc 1"
36
37 # Subsidiary TAP: ARM926ejs with scan chains for ARM Debug, EmbeddedICE-RT, ETM.
38 if { [info exists CPU_TAPID] } {
39    set _CPU_TAPID $CPU_TAPID
40 } else {
41    set _CPU_TAPID 0x07926001
42 }
43 jtag newtap $_CHIPNAME arm -irlen 4 -irmask 0xf -expected-id $_CPU_TAPID $EMU01
44 jtag configure $_CHIPNAME.arm -event tap-enable \
45         "icepick_c_tapenable $_CHIPNAME.jrc 0"
46
47 # Primary TAP: ICEpick (JTAG route controller) and boundary scan
48 if { [info exists JRC_TAPID] } {
49    set _JRC_TAPID $JRC_TAPID
50 } else {
51    set _JRC_TAPID 0x0b73b02f
52 }
53 jtag newtap $_CHIPNAME jrc -irlen 6 -irmask 0x3f -expected-id $_JRC_TAPID
54
55 jtag configure $_CHIPNAME.jrc -event setup \
56         "jtag tapenable $_CHIPNAME.etb; jtag tapenable $_CHIPNAME.arm"
57
58 ################
59
60 # various symbol definitions, to avoid hard-wiring addresses
61 # and enable some sharing of DaVinci-family utility code
62 global dm355
63 set dm355 [ dict create ]
64
65 # Physical addresses for controllers and memory
66 # (Some of these are valid for many DaVinci family chips)
67 dict set dm355 sram0            0x00010000
68 dict set dm355 sram1            0x00014000
69 dict set dm355 sysbase          0x01c40000
70 dict set dm355 pllc1            0x01c40800
71 dict set dm355 pllc2            0x01c40c00
72 dict set dm355 psc              0x01c41000
73 dict set dm355 gpio             0x01c67000
74 dict set dm355 a_emif           0x01e10000
75 dict set dm355 a_emif_cs0       0x02000000
76 dict set dm355 a_emif_cs1       0x04000000
77 dict set dm355 ddr_emif         0x20000000
78 dict set dm355 ddr              0x80000000
79 dict set dm355 uart0            0x01c20000
80 dict set dm355 uart1            0x01c20400
81 dict set dm355 uart2            0x01e06000
82
83 source [find target/davinci.cfg]
84
85 ################
86 # GDB target: the ARM, using SRAM1 for scratch.  SRAM0 (also 16K)
87 # and the ETB memory (4K) are other options, while trace is unused.
88 set _TARGETNAME $_CHIPNAME.arm
89
90 target create $_TARGETNAME arm926ejs -chain-position $_TARGETNAME
91
92 # NOTE that work-area-virt presumes a Linux 2.6.30-rc2+ kernel,
93 # and that the work area is used only with a kernel mmu context ...
94 $_TARGETNAME configure \
95         -work-area-virt [expr {0xfffe0000 + 0x4000}] \
96         -work-area-phys [dict get $dm355 sram1] \
97         -work-area-size 0x4000 \
98         -work-area-backup 0
99
100 # be absolutely certain the JTAG clock will work with the worst-case
101 # CLKIN = 24 MHz (best case: 36 MHz) even when no bootloader turns
102 # on the PLL and starts using it.  OK to speed up after clock setup.
103 adapter speed 1500
104 $_TARGETNAME configure -event "reset-start" { adapter speed 1500 }
105
106 arm7_9 fast_memory_access enable
107 arm7_9 dcc_downloads enable
108
109 # trace setup
110 etm config $_TARGETNAME 16 normal full etb
111 etb config $_TARGETNAME $_CHIPNAME.etb