jtag: linuxgpiod: drop extra parenthesis
[openocd.git] / tcl / target / am437x.cfg
1 # SPDX-License-Identifier: GPL-2.0-or-later
2
3 source [find target/icepick.cfg]
4 source [find mem_helper.tcl]
5
6 ###############################################################################
7 ## AM437x Registers ##
8 ###############################################################################
9 set PRCM_BASE_ADDR 0x44df0000
10 set REVISION_PRM [expr {$PRCM_BASE_ADDR + 0x0000}]
11 set PRM_IRQSTATUS_MPU [expr {$PRCM_BASE_ADDR + 0x0004}]
12 set PRM_IRQENABLE_MPU [expr {$PRCM_BASE_ADDR + 0x0008}]
13 set PRM_IRQSTATUS_M3 [expr {$PRCM_BASE_ADDR + 0x000c}]
14 set PRM_IRQENABLE_M3 [expr {$PRCM_BASE_ADDR + 0x0010}]
15 set PM_MPU_PWRSTCTRL [expr {$PRCM_BASE_ADDR + 0x0300}]
16 set PM_MPU_PWRSTST [expr {$PRCM_BASE_ADDR + 0x0304}]
17 set RM_MPU_RSTST [expr {$PRCM_BASE_ADDR + 0x0314}]
18 set RM_MPU_CONTEXT [expr {$PRCM_BASE_ADDR + 0x0324}]
19 set PM_GFX_PWRSTCTRL [expr {$PRCM_BASE_ADDR + 0x0400}]
20 set PM_GFX_PWRSTST [expr {$PRCM_BASE_ADDR + 0x0404}]
21 set RM_GFX_RSTCTRL [expr {$PRCM_BASE_ADDR + 0x0410}]
22 set RM_GFX_RSTST [expr {$PRCM_BASE_ADDR + 0x0414}]
23 set RM_GFX_CONTEXT [expr {$PRCM_BASE_ADDR + 0x0424}]
24 set RM_RTC_CONTEXT [expr {$PRCM_BASE_ADDR + 0x0524}]
25 set RM_WKUP_RSTCTRL [expr {$PRCM_BASE_ADDR + 0x2010}]
26 set RM_WKUP_RSTST [expr {$PRCM_BASE_ADDR + 0x2014}]
27 set CM_L3_AON_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x2800}]
28 set CM_WKUP_DEBUGSS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2820}]
29 set CM_L3S_TSC_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x2900}]
30 set CM_WKUP_ADC_TSC_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2920}]
31 set CM_L4_WKUP_AON_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x2a00}]
32 set CM_WKUP_L4WKUP_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a20}]
33 set CM_WKUP_WKUP_M3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a28}]
34 set CM_WKUP_SYNCTIMER_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a30}]
35 set CM_WKUP_CLKDIV32K_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a38}]
36 set CM_WKUP_USBPHY0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a40}]
37 set CM_WKUP_USBPHY1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2a48}]
38 set CM_WKUP_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x2b00}]
39 set CM_WKUP_TIMER0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b20}]
40 set CM_WKUP_TIMER1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b28}]
41 set CM_WKUP_WDT0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b30}]
42 set CM_WKUP_WDT1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b38}]
43 set CM_WKUP_I2C0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b40}]
44 set CM_WKUP_UART0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b48}]
45 set CM_WKUP_SMARTREFLEX0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b50}]
46 set CM_WKUP_SMARTREFLEX1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b58}]
47 set CM_WKUP_CONTROL_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b60}]
48 set CM_WKUP_GPIO0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x2b68}]
49 set CM_CLKMODE_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d20}]
50 set CM_IDLEST_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d24}]
51 set CM_CLKSEL_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d2c}]
52 set CM_DIV_M4_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d38}]
53 set CM_DIV_M5_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d3c}]
54 set CM_DIV_M6_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d40}]
55 set CM_SSC_DELTAMSTEP_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d48}]
56 set CM_SSC_MODFREQDIV_DPLL_CORE [expr {$PRCM_BASE_ADDR + 0x2d4c}]
57 set CM_CLKMODE_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d60}]
58 set CM_IDLEST_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d64}]
59 set CM_CLKSEL_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d6c}]
60 set CM_DIV_M2_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d70}]
61 set CM_SSC_DELTAMSTEP_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d88}]
62 set CM_SSC_MODFREQDIV_DPLL_MPU [expr {$PRCM_BASE_ADDR + 0x2d8c}]
63 set CM_CLKMODE_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2da0}]
64 set CM_IDLEST_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2da4}]
65 set CM_CLKSEL_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2dac}]
66 set CM_DIV_M2_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2db0}]
67 set CM_DIV_M4_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2db8}]
68 set CM_SSC_DELTAMSTEP_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2dc8}]
69 set CM_SSC_MODFREQDIV_DPLL_DDR [expr {$PRCM_BASE_ADDR + 0x2dcc}]
70 set CM_CLKMODE_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2de0}]
71 set CM_IDLEST_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2de4}]
72 set CM_CLKSEL_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2dec}]
73 set CM_DIV_M2_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2df0}]
74 set CM_CLKSEL2_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2e04}]
75 set CM_SSC_DELTAMSTEP_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2e08}]
76 set CM_SSC_MODFREQDIV_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2e0c}]
77 set CM_CLKDCOLDO_DPLL_PER [expr {$PRCM_BASE_ADDR + 0x2e14}]
78 set CM_CLKMODE_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e20}]
79 set CM_IDLEST_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e24}]
80 set CM_CLKSEL_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e2c}]
81 set CM_DIV_M2_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e30}]
82 set CM_SSC_DELTAMSTEP_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e48}]
83 set CM_SSC_MODFREQDIV_DPLL_DISP [expr {$PRCM_BASE_ADDR + 0x2e4c}]
84 set CM_CLKMODE_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e60}]
85 set CM_IDLEST_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e64}]
86 set CM_CLKSEL_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e6c}]
87 set CM_DIV_M2_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e70}]
88 set CM_CLKSEL2_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e84}]
89 set CM_SSC_DELTAMSTEP_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e88}]
90 set CM_SSC_MODFREQDIV_DPLL_EXTDEV [expr {$PRCM_BASE_ADDR + 0x2e8c}]
91 set CM_SHADOW_FREQ_CONFIG1 [expr {$PRCM_BASE_ADDR + 0x2fa0}]
92 set CM_SHADOW_FREQ_CONFIG2 [expr {$PRCM_BASE_ADDR + 0x2fa4}]
93 set CM_CLKOUT1_CTRL [expr {$PRCM_BASE_ADDR + 0x4100}]
94 set CM_DLL_CTRL [expr {$PRCM_BASE_ADDR + 0x4104}]
95 set CM_CLKOUT2_CTRL [expr {$PRCM_BASE_ADDR + 0x4108}]
96 set CLKSEL_TIMER1MS_CLK [expr {$PRCM_BASE_ADDR + 0x4200}]
97 set CLKSEL_TIMER2_CLK [expr {$PRCM_BASE_ADDR + 0x4204}]
98 set CLKSEL_TIMER3_CLK [expr {$PRCM_BASE_ADDR + 0x4208}]
99 set CLKSEL_TIMER4_CLK [expr {$PRCM_BASE_ADDR + 0x420c}]
100 set CLKSEL_TIMER5_CLK [expr {$PRCM_BASE_ADDR + 0x4210}]
101 set CLKSEL_TIMER6_CLK [expr {$PRCM_BASE_ADDR + 0x4214}]
102 set CLKSEL_TIMER7_CLK [expr {$PRCM_BASE_ADDR + 0x4218}]
103 set CLKSEL_TIMER8_CLK [expr {$PRCM_BASE_ADDR + 0x421c}]
104 set CLKSEL_TIMER9_CLK [expr {$PRCM_BASE_ADDR + 0x4220}]
105 set CLKSEL_TIMER10_CLK [expr {$PRCM_BASE_ADDR + 0x4224}]
106 set CLKSEL_TIMER11_CLK [expr {$PRCM_BASE_ADDR + 0x4228}]
107 set CLKSEL_WDT1_CLK [expr {$PRCM_BASE_ADDR + 0x422c}]
108 set CLKSEL_SYNCTIMER_CLK [expr {$PRCM_BASE_ADDR + 0x4230}]
109 set CLKSEL_MAC_CLK [expr {$PRCM_BASE_ADDR + 0x4234}]
110 set CLKSEL_CPTS_RFT_CLK [expr {$PRCM_BASE_ADDR + 0x4238}]
111 set CLKSEL_GFX_FCLK [expr {$PRCM_BASE_ADDR + 0x423c}]
112 set CLKSEL_GPIO0_DBCLK [expr {$PRCM_BASE_ADDR + 0x4240}]
113 set CLKSEL_LCDC_PIXEL_CLK [expr {$PRCM_BASE_ADDR + 0x4244}]
114 set CLKSEL_ICSS_OCP_CLK [expr {$PRCM_BASE_ADDR + 0x4248}]
115 set CLKSEL_DLL_AGING_CLK [expr {$PRCM_BASE_ADDR + 0x4250}]
116 set CLKSEL_USBPHY32KHZ_GCLK [expr {$PRCM_BASE_ADDR + 0x4260}]
117 set CM_MPU_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8300}]
118 set CM_MPU_MPU_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8320}]
119 set CM_GFX_L3_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8400}]
120 set CM_GFX_GFX_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8420}]
121 set CM_RTC_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8500}]
122 set CM_RTC_RTC_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8520}]
123 set CM_PER_L3_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8800}]
124 set CM_PER_L3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8820}]
125 set CM_PER_AES0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8828}]
126 set CM_PER_DES_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8830}]
127 set CM_PER_CRYPTODMA_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8838}]
128 set CM_PER_L3_INSTR_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8840}]
129 set CM_PER_MSTR_EXPS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8848}]
130 set CM_PER_OCMCRAM_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8850}]
131 set CM_PER_SHA0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8858}]
132 set CM_PER_SLV_EXPS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8860}]
133 set CM_PER_VPFE0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8868}]
134 set CM_PER_VPFE1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8870}]
135 set CM_PER_TPCC_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8878}]
136 set CM_PER_TPTC0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8880}]
137 set CM_PER_TPTC1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8888}]
138 set CM_PER_TPTC2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8890}]
139 set CM_PER_DLL_AGING_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8898}]
140 set CM_PER_L4HS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x88a0}]
141 set CM_PER_L4FW_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x88a8}]
142 set CM_PER_L3S_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8a00}]
143 set CM_PER_GPMC_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a20}]
144 set CM_PER_IEEE5000_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a28}]
145 set CM_PER_MCASP0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a38}]
146 set CM_PER_MCASP1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a40}]
147 set CM_PER_MMC2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a48}]
148 set CM_PER_QSPI_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a58}]
149 set CM_PER_USB_OTG_SS0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a60}]
150 set CM_PER_USB_OTG_SS1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8a68}]
151 set CM_PER_ICSS_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8b00}]
152 set CM_PER_ICSS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8b20}]
153 set CM_PER_L4LS_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8c00}]
154 set CM_PER_L4LS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c20}]
155 set CM_PER_DCAN0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c28}]
156 set CM_PER_DCAN1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c30}]
157 set CM_PER_EPWMSS0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c38}]
158 set CM_PER_EPWMSS1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c40}]
159 set CM_PER_EPWMSS2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c48}]
160 set CM_PER_EPWMSS3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c50}]
161 set CM_PER_EPWMSS4_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c58}]
162 set CM_PER_EPWMSS5_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c60}]
163 set CM_PER_ELM_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c68}]
164 set CM_PER_GPIO1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c78}]
165 set CM_PER_GPIO2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c80}]
166 set CM_PER_GPIO3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c88}]
167 set CM_PER_GPIO4_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c90}]
168 set CM_PER_GPIO5_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8c98}]
169 set CM_PER_HDQ1W_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8ca0}]
170 set CM_PER_I2C1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8ca8}]
171 set CM_PER_I2C2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cb0}]
172 set CM_PER_MAILBOX0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cb8}]
173 set CM_PER_MMC0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cc0}]
174 set CM_PER_MMC1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cc8}]
175 set CM_PER_PKA_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cd0}]
176 set CM_PER_RNG_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8ce0}]
177 set CM_PER_SPARE0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8ce8}]
178 set CM_PER_SPARE1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8cf0}]
179 set CM_PER_SPI0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d00}]
180 set CM_PER_SPI1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d08}]
181 set CM_PER_SPI2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d10}]
182 set CM_PER_SPI3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d18}]
183 set CM_PER_SPI4_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d20}]
184 set CM_PER_SPINLOCK_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d28}]
185 set CM_PER_TIMER2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d30}]
186 set CM_PER_TIMER3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d38}]
187 set CM_PER_TIMER4_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d40}]
188 set CM_PER_TIMER5_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d48}]
189 set CM_PER_TIMER6_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d50}]
190 set CM_PER_TIMER7_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d58}]
191 set CM_PER_TIMER8_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d60}]
192 set CM_PER_TIMER9_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d68}]
193 set CM_PER_TIMER10_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d70}]
194 set CM_PER_TIMER11_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d78}]
195 set CM_PER_UART1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d80}]
196 set CM_PER_UART2_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d88}]
197 set CM_PER_UART3_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d90}]
198 set CM_PER_UART4_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8d98}]
199 set CM_PER_UART5_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8da0}]
200 set CM_PER_USBPHYOCP2SCP0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8db8}]
201 set CM_PER_USBPHYOCP2SCP1_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8dc0}]
202 set CM_PER_EMIF_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x8f00}]
203 set CM_PER_EMIF_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8f20}]
204 set CM_PER_DLL_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8f28}]
205 set CM_PER_EMIF_FW_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8f30}]
206 set CM_PER_OTFA_EMIF_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x8f38}]
207 set CM_PER_DSS_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x9200}]
208 set CM_PER_DSS_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x9220}]
209 set CM_PER_CPSW_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x9300}]
210 set CM_PER_CPGMAC0_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x9320}]
211 set CM_PER_OCPWP_L3_CLKSTCTRL [expr {$PRCM_BASE_ADDR + 0x9400}]
212 set CM_PER_OCPWP_CLKCTRL [expr {$PRCM_BASE_ADDR + 0x9420}]
213
214 set CONTROL_BASE_ADDR 0x44e10000
215 set CONTROL_STATUS [expr {$CONTROL_BASE_ADDR + 0x0040}]
216 set DEVICE_ID [expr {$CONTROL_BASE_ADDR + 0x0600}]
217 set DEV_FEATURE [expr {$CONTROL_BASE_ADDR + 0x0604}]
218 set DEV_ATTRIBUTE [expr {$CONTROL_BASE_ADDR + 0x0610}]
219 set MAC_ID0_LO [expr {$CONTROL_BASE_ADDR + 0x0630}]
220 set MAC_ID0_HI [expr {$CONTROL_BASE_ADDR + 0x0634}]
221 set MAC_ID1_LO [expr {$CONTROL_BASE_ADDR + 0x0638}]
222 set MAC_ID1_HI [expr {$CONTROL_BASE_ADDR + 0x063c}]
223 set USB_VID_PID [expr {$CONTROL_BASE_ADDR + 0x07f4}]
224 set CONTROL_CONF_ECAP0_IN_PWM0_OUT [expr {$CONTROL_BASE_ADDR + 0x0964}]
225 set CONTROL_CONF_SPI4_CS0 [expr {$CONTROL_BASE_ADDR + 0x0a5c}]
226 set CONTROL_CONF_SPI2_SCLK [expr {$CONTROL_BASE_ADDR + 0x0a60}]
227 set CONTROL_CONF_SPI2_D0 [expr {$CONTROL_BASE_ADDR + 0x0a64}]
228 set CONTROL_CONF_XDMA_EVENT_INTR0 [expr {$CONTROL_BASE_ADDR + 0x0a70}]
229 set CONTROL_CONF_XDMA_EVENT_INTR1 [expr {$CONTROL_BASE_ADDR + 0x0a74}]
230 set CONTROL_CONF_GPMC_A0 [expr {$CONTROL_BASE_ADDR + 0x0840}]
231 set DDR_IO_CTRL [expr {$CONTROL_BASE_ADDR + 0x0e04}]
232 set VTP_CTRL_REG [expr {$CONTROL_BASE_ADDR + 0x0e0c}]
233 set VREF_CTRL [expr {$CONTROL_BASE_ADDR + 0x0e14}]
234 set DDR_CKE_CTRL [expr {$CONTROL_BASE_ADDR + 0x131c}]
235 set DDR_ADDRCTRL_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x1404}]
236 set DDR_ADDRCTRL_WD0_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x1408}]
237 set DDR_ADDRCTRL_WD1_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x140c}]
238 set DDR_DATA0_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x1440}]
239 set DDR_DATA1_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x1444}]
240 set DDR_DATA2_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x1448}]
241 set DDR_DATA3_IOCTRL [expr {$CONTROL_BASE_ADDR + 0x144c}]
242 set EMIF_SDRAM_CONFIG_EXT [expr {$CONTROL_BASE_ADDR + 0x1460}]
243 set EMIF_SDRAM_STATUS_EXT [expr {$CONTROL_BASE_ADDR + 0x1464}]
244
245 set GPIO0_BASE_ADDR 0x44e07000
246 set GPIO0_SYSCONFIG [expr {$GPIO0_BASE_ADDR + 0x0010}]
247 set GPIO0_SYSSTATUS [expr {$GPIO0_BASE_ADDR + 0x0114}]
248 set GPIO0_CTRL [expr {$GPIO0_BASE_ADDR + 0x0130}]
249 set GPIO0_OE [expr {$GPIO0_BASE_ADDR + 0x0134}]
250 set GPIO0_CLEARDATAOUT [expr {$GPIO0_BASE_ADDR + 0x0190}]
251 set GPIO0_SETDATAOUT [expr {$GPIO0_BASE_ADDR + 0x0194}]
252
253 set GPIO5_BASE_ADDR 0x48322000
254 set GPIO5_SYSCONFIG [expr {$GPIO5_BASE_ADDR + 0x0010}]
255 set GPIO5_SYSSTATUS [expr {$GPIO5_BASE_ADDR + 0x0114}]
256 set GPIO5_CTRL [expr {$GPIO5_BASE_ADDR + 0x0130}]
257 set GPIO5_OE [expr {$GPIO5_BASE_ADDR + 0x0134}]
258 set GPIO5_CLEARDATAOUT [expr {$GPIO5_BASE_ADDR + 0x0190}]
259 set GPIO5_SETDATAOUT [expr {$GPIO5_BASE_ADDR + 0x0194}]
260
261 set GPIO1_BASE_ADDR 0x4804c000
262 set GPIO1_SYSCONFIG [expr {$GPIO1_BASE_ADDR + 0x0010}]
263 set GPIO1_SYSSTATUS [expr {$GPIO1_BASE_ADDR + 0x0114}]
264 set GPIO1_CTRL [expr {$GPIO1_BASE_ADDR + 0x0130}]
265 set GPIO1_OE [expr {$GPIO1_BASE_ADDR + 0x0134}]
266 set GPIO1_CLEARDATAOUT [expr {$GPIO1_BASE_ADDR + 0x0190}]
267 set GPIO1_SETDATAOUT [expr {$GPIO1_BASE_ADDR + 0x0194}]
268
269 set EMIF_BASE_ADDR 0x4c000000
270 set EMIF_STATUS [expr {$EMIF_BASE_ADDR + 0x0004}]
271 set EMIF_SDRAM_CONFIG [expr {$EMIF_BASE_ADDR + 0x0008}]
272 set EMIF_SDRAM_CONFIG_2 [expr {$EMIF_BASE_ADDR + 0x000c}]
273 set EMIF_SDRAM_REF_CTRL [expr {$EMIF_BASE_ADDR + 0x0010}]
274 set EMIF_SDRAM_REF_CTRL_SHDW [expr {$EMIF_BASE_ADDR + 0x0014}]
275 set EMIF_SDRAM_TIM_1 [expr {$EMIF_BASE_ADDR + 0x0018}]
276 set EMIF_SDRAM_TIM_1_SHDW [expr {$EMIF_BASE_ADDR + 0x001c}]
277 set EMIF_SDRAM_TIM_2 [expr {$EMIF_BASE_ADDR + 0x0020}]
278 set EMIF_SDRAM_TIM_2_SHDW [expr {$EMIF_BASE_ADDR + 0x0024}]
279 set EMIF_SDRAM_TIM_3 [expr {$EMIF_BASE_ADDR + 0x0028}]
280 set EMIF_SDRAM_TIM_3_SHDW [expr {$EMIF_BASE_ADDR + 0x002c}]
281 set EMIF_LPDDR2_NVM_TIM [expr {$EMIF_BASE_ADDR + 0x0030}]
282 set EMIF_LPDDR2_NVM_TIM_SHDW [expr {$EMIF_BASE_ADDR + 0x0034}]
283 set EMIF_PWR_MGMT_CTRL [expr {$EMIF_BASE_ADDR + 0x0038}]
284 set EMIF_PWR_MGMT_CTRL_SHDW [expr {$EMIF_BASE_ADDR + 0x003c}]
285 set EMIF_LPDDR2_MODE_REG_DATA [expr {$EMIF_BASE_ADDR + 0x0040}]
286 set EMIF_LPDDR2_MODE_REG_CFG [expr {$EMIF_BASE_ADDR + 0x0050}]
287 set EMIF_OCP_CONFIG [expr {$EMIF_BASE_ADDR + 0x0054}]
288 set EMIF_OCP_CFG_VAL_1 [expr {$EMIF_BASE_ADDR + 0x0058}]
289 set EMIF_OCP_CFG_VAL_2 [expr {$EMIF_BASE_ADDR + 0x005c}]
290 set EMIF_IODFT_TLGC [expr {$EMIF_BASE_ADDR + 0x0060}]
291 set EMIF_IODFT_CTRL_MISR_RSLT [expr {$EMIF_BASE_ADDR + 0x0064}]
292 set EMIF_IODFT_ADDR_MISR_RSLT [expr {$EMIF_BASE_ADDR + 0x0068}]
293 set EMIF_IODFT_DATA_MISR_RSLT_1 [expr {$EMIF_BASE_ADDR + 0x006c}]
294 set EMIF_IODFT_DATA_MISR_RSLT_2 [expr {$EMIF_BASE_ADDR + 0x0070}]
295 set EMIF_IODFT_DATA_MISR_RSLT_3 [expr {$EMIF_BASE_ADDR + 0x0074}]
296 set EMIF_PERF_CNT_1 [expr {$EMIF_BASE_ADDR + 0x0080}]
297 set EMIF_PERF_CNT_2 [expr {$EMIF_BASE_ADDR + 0x0084}]
298 set EMIF_PERF_CNT_CFG [expr {$EMIF_BASE_ADDR + 0x0088}]
299 set EMIF_PERF_CNT_SEL [expr {$EMIF_BASE_ADDR + 0x008c}]
300 set EMIF_PERF_CNT_TIM [expr {$EMIF_BASE_ADDR + 0x0090}]
301 set EMIF_MISC_REG [expr {$EMIF_BASE_ADDR + 0x0094}]
302 set EMIF_DLL_CALIB_CTRL [expr {$EMIF_BASE_ADDR + 0x0098}]
303 set EMIF_DLL_CALIB_CTRL_SHDW [expr {$EMIF_BASE_ADDR + 0x009c}]
304 set EMIF_IRQ_EOI [expr {$EMIF_BASE_ADDR + 0x00a0}]
305 set EMIF_IRQSTATUS_RAW_SYS [expr {$EMIF_BASE_ADDR + 0x00a4}]
306 set EMIF_IRQSTATUS_SYS [expr {$EMIF_BASE_ADDR + 0x00ac}]
307 set EMIF_IRQENABLE_SET_SYS [expr {$EMIF_BASE_ADDR + 0x00b4}]
308 set EMIF_IRQENABLE_CLR_SYS [expr {$EMIF_BASE_ADDR + 0x00bc}]
309 set EMIF_ZQ_CONFIG [expr {$EMIF_BASE_ADDR + 0x00c8}]
310 set EMIF_TEMP_ALERT_CONFIG [expr {$EMIF_BASE_ADDR + 0x00cc}]
311 set EMIF_OCP_ERR_LOG [expr {$EMIF_BASE_ADDR + 0x00d0}]
312 set EMIF_RDWR_LVL_RMP_WIN [expr {$EMIF_BASE_ADDR + 0x00d4}]
313 set EMIF_RDWR_LVL_RMP_CTRL [expr {$EMIF_BASE_ADDR + 0x00d8}]
314 set EMIF_RDWR_LVL_CTRL [expr {$EMIF_BASE_ADDR + 0x00dc}]
315 set EMIF_DDR_PHY_CTRL_1 [expr {$EMIF_BASE_ADDR + 0x00e4}]
316 set EMIF_DDR_PHY_CTRL_1_SHDW [expr {$EMIF_BASE_ADDR + 0x00e8}]
317 set EMIF_DDR_PHY_CTRL_2 [expr {$EMIF_BASE_ADDR + 0x00ec}]
318 set EMIF_PRI_COS_MAP [expr {$EMIF_BASE_ADDR + 0x0100}]
319 set EMIF_CONNID_COS_1_MAP [expr {$EMIF_BASE_ADDR + 0x0104}]
320 set EMIF_CONNID_COS_2_MAP [expr {$EMIF_BASE_ADDR + 0x0108}]
321 set ECC_CTRL [expr {$EMIF_BASE_ADDR + 0x0110}]
322 set ECC_ADDR_RNG_1 [expr {$EMIF_BASE_ADDR + 0x0114}]
323 set ECC_ADDR_RNG_2 [expr {$EMIF_BASE_ADDR + 0x0118}]
324 set EMIF_RD_WR_EXEC_THRSH [expr {$EMIF_BASE_ADDR + 0x0120}]
325 set COS_CONFIG [expr {$EMIF_BASE_ADDR + 0x0124}]
326
327 set PHY_STATUS_1 [expr {$EMIF_BASE_ADDR + 0x0144}]
328 set PHY_STATUS_2 [expr {$EMIF_BASE_ADDR + 0x0148}]
329 set PHY_STATUS_3 [expr {$EMIF_BASE_ADDR + 0x014c}]
330 set PHY_STATUS_4 [expr {$EMIF_BASE_ADDR + 0x0150}]
331 set PHY_STATUS_5 [expr {$EMIF_BASE_ADDR + 0x0154}]
332 set PHY_STATUS_6 [expr {$EMIF_BASE_ADDR + 0x0158}]
333 set PHY_STATUS_7 [expr {$EMIF_BASE_ADDR + 0x015c}]
334 set PHY_STATUS_8 [expr {$EMIF_BASE_ADDR + 0x0160}]
335 set PHY_STATUS_9 [expr {$EMIF_BASE_ADDR + 0x0164}]
336 set PHY_STATUS_10 [expr {$EMIF_BASE_ADDR + 0x0168}]
337 set PHY_STATUS_11 [expr {$EMIF_BASE_ADDR + 0x016c}]
338 set PHY_STATUS_12 [expr {$EMIF_BASE_ADDR + 0x0170}]
339 set PHY_STATUS_13 [expr {$EMIF_BASE_ADDR + 0x0174}]
340 set PHY_STATUS_14 [expr {$EMIF_BASE_ADDR + 0x0178}]
341 set PHY_STATUS_15 [expr {$EMIF_BASE_ADDR + 0x017c}]
342 set PHY_STATUS_16 [expr {$EMIF_BASE_ADDR + 0x0180}]
343 set PHY_STATUS_17 [expr {$EMIF_BASE_ADDR + 0x0184}]
344 set PHY_STATUS_18 [expr {$EMIF_BASE_ADDR + 0x0188}]
345 set PHY_STATUS_19 [expr {$EMIF_BASE_ADDR + 0x018c}]
346 set PHY_STATUS_20 [expr {$EMIF_BASE_ADDR + 0x0190}]
347 set PHY_STATUS_21 [expr {$EMIF_BASE_ADDR + 0x0194}]
348 set PHY_STATUS_22 [expr {$EMIF_BASE_ADDR + 0x0198}]
349 set PHY_STATUS_23 [expr {$EMIF_BASE_ADDR + 0x019c}]
350 set PHY_STATUS_24 [expr {$EMIF_BASE_ADDR + 0x01a0}]
351 set PHY_STATUS_25 [expr {$EMIF_BASE_ADDR + 0x01a4}]
352 set PHY_STATUS_26 [expr {$EMIF_BASE_ADDR + 0x01a8}]
353 set PHY_STATUS_27 [expr {$EMIF_BASE_ADDR + 0x01ac}]
354 set PHY_STATUS_28 [expr {$EMIF_BASE_ADDR + 0x01b0}]
355
356 set EXT_PHY_CTRL_1 [expr {$EMIF_BASE_ADDR + 0x0200}]
357 set EXT_PHY_CTRL_1_SHDW [expr {$EMIF_BASE_ADDR + 0x0204}]
358 set EXT_PHY_CTRL_2 [expr {$EMIF_BASE_ADDR + 0x0208}]
359 set EXT_PHY_CTRL_2_SHDW [expr {$EMIF_BASE_ADDR + 0x020c}]
360 set EXT_PHY_CTRL_3 [expr {$EMIF_BASE_ADDR + 0x0210}]
361 set EXT_PHY_CTRL_3_SHDW [expr {$EMIF_BASE_ADDR + 0x0214}]
362 set EXT_PHY_CTRL_4 [expr {$EMIF_BASE_ADDR + 0x0218}]
363 set EXT_PHY_CTRL_4_SHDW [expr {$EMIF_BASE_ADDR + 0x021c}]
364 set EXT_PHY_CTRL_5 [expr {$EMIF_BASE_ADDR + 0x0220}]
365 set EXT_PHY_CTRL_5_SHDW [expr {$EMIF_BASE_ADDR + 0x0224}]
366 set EXT_PHY_CTRL_6 [expr {$EMIF_BASE_ADDR + 0x0228}]
367 set EXT_PHY_CTRL_6_SHDW [expr {$EMIF_BASE_ADDR + 0x022c}]
368 set EXT_PHY_CTRL_7 [expr {$EMIF_BASE_ADDR + 0x0230}]
369 set EXT_PHY_CTRL_7_SHDW [expr {$EMIF_BASE_ADDR + 0x0234}]
370 set EXT_PHY_CTRL_8 [expr {$EMIF_BASE_ADDR + 0x0238}]
371 set EXT_PHY_CTRL_8_SHDW [expr {$EMIF_BASE_ADDR + 0x023c}]
372 set EXT_PHY_CTRL_9 [expr {$EMIF_BASE_ADDR + 0x0240}]
373 set EXT_PHY_CTRL_9_SHDW [expr {$EMIF_BASE_ADDR + 0x0244}]
374 set EXT_PHY_CTRL_10 [expr {$EMIF_BASE_ADDR + 0x0248}]
375 set EXT_PHY_CTRL_10_SHDW [expr {$EMIF_BASE_ADDR + 0x024c}]
376 set EXT_PHY_CTRL_11 [expr {$EMIF_BASE_ADDR + 0x0250}]
377 set EXT_PHY_CTRL_11_SHDW [expr {$EMIF_BASE_ADDR + 0x0254}]
378 set EXT_PHY_CTRL_12 [expr {$EMIF_BASE_ADDR + 0x0258}]
379 set EXT_PHY_CTRL_12_SHDW [expr {$EMIF_BASE_ADDR + 0x025c}]
380 set EXT_PHY_CTRL_13 [expr {$EMIF_BASE_ADDR + 0x0260}]
381 set EXT_PHY_CTRL_13_SHDW [expr {$EMIF_BASE_ADDR + 0x0264}]
382 set EXT_PHY_CTRL_14 [expr {$EMIF_BASE_ADDR + 0x0268}]
383 set EXT_PHY_CTRL_14_SHDW [expr {$EMIF_BASE_ADDR + 0x026c}]
384 set EXT_PHY_CTRL_15 [expr {$EMIF_BASE_ADDR + 0x0270}]
385 set EXT_PHY_CTRL_15_SHDW [expr {$EMIF_BASE_ADDR + 0x0274}]
386 set EXT_PHY_CTRL_16 [expr {$EMIF_BASE_ADDR + 0x0278}]
387 set EXT_PHY_CTRL_16_SHDW [expr {$EMIF_BASE_ADDR + 0x027c}]
388 set EXT_PHY_CTRL_17 [expr {$EMIF_BASE_ADDR + 0x0280}]
389 set EXT_PHY_CTRL_17_SHDW [expr {$EMIF_BASE_ADDR + 0x0284}]
390 set EXT_PHY_CTRL_18 [expr {$EMIF_BASE_ADDR + 0x0288}]
391 set EXT_PHY_CTRL_18_SHDW [expr {$EMIF_BASE_ADDR + 0x028c}]
392 set EXT_PHY_CTRL_19 [expr {$EMIF_BASE_ADDR + 0x0290}]
393 set EXT_PHY_CTRL_19_SHDW [expr {$EMIF_BASE_ADDR + 0x0294}]
394 set EXT_PHY_CTRL_20 [expr {$EMIF_BASE_ADDR + 0x0298}]
395 set EXT_PHY_CTRL_20_SHDW [expr {$EMIF_BASE_ADDR + 0x029c}]
396 set EXT_PHY_CTRL_21 [expr {$EMIF_BASE_ADDR + 0x02a0}]
397 set EXT_PHY_CTRL_21_SHDW [expr {$EMIF_BASE_ADDR + 0x02a4}]
398 set EXT_PHY_CTRL_22 [expr {$EMIF_BASE_ADDR + 0x02a8}]
399 set EXT_PHY_CTRL_22_SHDW [expr {$EMIF_BASE_ADDR + 0x02ac}]
400 set EXT_PHY_CTRL_23 [expr {$EMIF_BASE_ADDR + 0x02b0}]
401 set EXT_PHY_CTRL_23_SHDW [expr {$EMIF_BASE_ADDR + 0x02b4}]
402 set EXT_PHY_CTRL_24 [expr {$EMIF_BASE_ADDR + 0x02b8}]
403 set EXT_PHY_CTRL_24_SHDW [expr {$EMIF_BASE_ADDR + 0x02bc}]
404 set EXT_PHY_CTRL_25 [expr {$EMIF_BASE_ADDR + 0x02c0}]
405 set EXT_PHY_CTRL_25_SHDW [expr {$EMIF_BASE_ADDR + 0x02c4}]
406 set EXT_PHY_CTRL_26 [expr {$EMIF_BASE_ADDR + 0x02c8}]
407 set EXT_PHY_CTRL_26_SHDW [expr {$EMIF_BASE_ADDR + 0x02cc}]
408 set EXT_PHY_CTRL_27 [expr {$EMIF_BASE_ADDR + 0x02d0}]
409 set EXT_PHY_CTRL_27_SHDW [expr {$EMIF_BASE_ADDR + 0x02d4}]
410 set EXT_PHY_CTRL_28 [expr {$EMIF_BASE_ADDR + 0x02d8}]
411 set EXT_PHY_CTRL_28_SHDW [expr {$EMIF_BASE_ADDR + 0x02dc}]
412 set EXT_PHY_CTRL_29 [expr {$EMIF_BASE_ADDR + 0x02e0}]
413 set EXT_PHY_CTRL_29_SHDW [expr {$EMIF_BASE_ADDR + 0x02e4}]
414 set EXT_PHY_CTRL_30 [expr {$EMIF_BASE_ADDR + 0x02e8}]
415 set EXT_PHY_CTRL_30_SHDW [expr {$EMIF_BASE_ADDR + 0x02ec}]
416 set EXT_PHY_CTRL_31 [expr {$EMIF_BASE_ADDR + 0x02f0}]
417 set EXT_PHY_CTRL_31_SHDW [expr {$EMIF_BASE_ADDR + 0x02f4}]
418 set EXT_PHY_CTRL_32 [expr {$EMIF_BASE_ADDR + 0x02f8}]
419 set EXT_PHY_CTRL_32_SHDW [expr {$EMIF_BASE_ADDR + 0x02fc}]
420 set EXT_PHY_CTRL_33 [expr {$EMIF_BASE_ADDR + 0x0300}]
421 set EXT_PHY_CTRL_33_SHDW [expr {$EMIF_BASE_ADDR + 0x0304}]
422 set EXT_PHY_CTRL_34 [expr {$EMIF_BASE_ADDR + 0x0308}]
423 set EXT_PHY_CTRL_34_SHDW [expr {$EMIF_BASE_ADDR + 0x030c}]
424 set EXT_PHY_CTRL_35 [expr {$EMIF_BASE_ADDR + 0x0310}]
425 set EXT_PHY_CTRL_35_SHDW [expr {$EMIF_BASE_ADDR + 0x0314}]
426 set EXT_PHY_CTRL_36 [expr {$EMIF_BASE_ADDR + 0x0318}]
427 set EXT_PHY_CTRL_36_SHDW [expr {$EMIF_BASE_ADDR + 0x031c}]
428
429 set WDT1_BASE_ADDR 0x44e35000
430 set WDT1_W_PEND_WSPR [expr {$WDT1_BASE_ADDR + 0x0034}]
431 set WDT1_WSPR [expr {$WDT1_BASE_ADDR + 0x0048}]
432
433 set RTC_BASE_ADDR 0x44e3e000
434 set RTC_KICK0R [expr {$RTC_BASE_ADDR + 0x6c}]
435 set RTC_KICK1R [expr {$RTC_BASE_ADDR + 0x70}]
436
437
438 if { [info exists CHIPNAME] } {
439 set _CHIPNAME $CHIPNAME
440 } else {
441 set _CHIPNAME am437x
442 }
443
444 set JRC_MODULE icepick_d
445 set DEBUGSS_MODULE debugss
446 set M3_MODULE m3_wakeupss
447
448 set JRC_NAME $_CHIPNAME.$JRC_MODULE
449 set DEBUGSS_NAME $_CHIPNAME.$DEBUGSS_MODULE
450 set M3_NAME $_CHIPNAME.$M3_MODULE
451 set _TARGETNAME $_CHIPNAME.mpuss
452
453 #
454 # M3 WakeupSS DAP
455 #
456 if { [info exists M3_DAP_TAPID] } {
457 set _M3_DAP_TAPID $M3_DAP_TAPID
458 } else {
459 set _M3_DAP_TAPID 0x4b6b902f
460 }
461 jtag newtap $_CHIPNAME $M3_MODULE -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M3_DAP_TAPID -disable
462 jtag configure $M3_NAME -event tap-enable "icepick_d_tapenable $JRC_NAME 11 0"
463 dap create $M3_NAME.dap -chain-position $M3_NAME
464
465 #
466 # DebugSS DAP
467 #
468 if { [info exists DAP_TAPID] } {
469 set _DAP_TAPID $DAP_TAPID
470 } else {
471 set _DAP_TAPID 0x46b6902f
472 }
473 jtag newtap $_CHIPNAME $DEBUGSS_MODULE -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_DAP_TAPID -disable
474 jtag configure $DEBUGSS_NAME -event tap-enable "icepick_d_tapenable $JRC_NAME 12 0"
475 dap create $DEBUGSS_NAME.dap -chain-position $DEBUGSS_NAME
476
477 #
478 # ICEpick-D (JTAG route controller)
479 #
480 if { [info exists JRC_TAPID] } {
481 set _JRC_TAPID $JRC_TAPID
482 } else {
483 set _JRC_TAPID 0x0b98c02f
484 }
485 jtag newtap $_CHIPNAME $JRC_MODULE -irlen 6 -ircapture 0x1 -irmask 0x3f -expected-id $_JRC_TAPID -ignore-version
486 jtag configure $JRC_NAME -event setup "jtag tapenable $DEBUGSS_NAME"
487 # some TCK tycles are required to activate the DEBUG power domain
488 jtag configure $JRC_NAME -event post-reset "runtest 100"
489
490 #
491 # Cortex-A9 target
492 #
493 target create $_TARGETNAME cortex_a -dap $DEBUGSS_NAME.dap -coreid 0 -dbgbase 0x80000000
494
495
496 # SRAM: 256K at 0x4030.0000
497 $_TARGETNAME configure -work-area-phys 0x40300000 -work-area-size 0x40000
498
499 # Disables watchdog timer after reset otherwise board won't stay in
500 # halted state.
501 proc disable_watchdog { } {
502 global WDT1_WSPR
503 global WDT1_W_PEND_WSPR
504 global _TARGETNAME
505
506 set curstate [$_TARGETNAME curstate]
507
508 if { [string compare $curstate halted] == 0 } {
509 set WDT_DISABLE_SEQ1 0xaaaa
510 set WDT_DISABLE_SEQ2 0x5555
511
512 mww phys $WDT1_WSPR $WDT_DISABLE_SEQ1
513
514 # Empty body to make sure this executes as fast as possible.
515 # We don't want any delays here otherwise romcode might start
516 # executing and end up changing state of certain IPs.
517 while { [expr {[mrw $WDT1_W_PEND_WSPR] & 0x10}] } { }
518
519 mww phys $WDT1_WSPR $WDT_DISABLE_SEQ2
520 while { [expr {[mrw $WDT1_W_PEND_WSPR] & 0x10}] } { }
521 }
522 }
523
524 proc ceil { x y } {
525 return [ expr {($x + $y - 1) / $y} ]
526 }
527
528 proc device_type { } {
529 global CONTROL_STATUS
530
531 set tmp [ mrw $CONTROL_STATUS ]
532 set tmp [ expr {$tmp & 0x700} ]
533 set tmp [ expr {$tmp >> 8} ]
534
535 return $tmp
536 }
537
538 proc get_input_clock_frequency { } {
539 global CONTROL_STATUS
540
541 if { [ device_type ] != 3 } {
542 error "Unknown device type\n"
543 return -1
544 }
545
546 set freq [ mrw $CONTROL_STATUS ]
547 set freq [ expr {$freq & 0x00c00000} ]
548 set freq [ expr {$freq >> 22} ]
549
550 switch $freq {
551 0 {
552 set CLKIN 19200000
553 }
554
555 1 {
556 set CLKIN 24000000
557 }
558
559 2 {
560 set CLKIN 25000000
561 }
562
563 3 {
564 set CLKIN 26000000
565 }
566 }
567
568 return $CLKIN
569 }
570
571 proc mpu_pll_config { CLKIN N M M2 } {
572 global CM_CLKMODE_DPLL_MPU
573 global CM_CLKSEL_DPLL_MPU
574 global CM_DIV_M2_DPLL_MPU
575 global CM_IDLEST_DPLL_MPU
576
577 set clksel [ mrw $CM_CLKSEL_DPLL_MPU ]
578 set div_m2 [ mrw $CM_DIV_M2_DPLL_MPU ]
579
580 mww $CM_CLKMODE_DPLL_MPU 0x4
581 while { !([ mrw $CM_IDLEST_DPLL_MPU ] & 0x0100) } { }
582
583 set clksel [ expr {$clksel & (~0x7ffff)} ]
584 set clksel [ expr {$clksel | ($M << 0x8) | $N} ]
585 mww $CM_CLKSEL_DPLL_MPU $clksel
586
587 set div_m2 [ expr {$div_m2 & (~0x1f)} ]
588 set div_m2 [ expr {$div_m2 | $M2} ]
589 mww $CM_DIV_M2_DPLL_MPU $div_m2
590
591 mww $CM_CLKMODE_DPLL_MPU 0x7
592 while { [ mrw $CM_IDLEST_DPLL_MPU ] != 1 } { }
593
594 echo "MPU DPLL locked"
595 }
596
597 proc core_pll_config { CLKIN N M M4 M5 M6 } {
598 global CM_CLKMODE_DPLL_CORE
599 global CM_CLKSEL_DPLL_CORE
600 global CM_DIV_M4_DPLL_CORE
601 global CM_DIV_M5_DPLL_CORE
602 global CM_DIV_M6_DPLL_CORE
603 global CM_IDLEST_DPLL_CORE
604
605 set clksel [ mrw $CM_CLKSEL_DPLL_CORE ]
606
607 mww $CM_CLKMODE_DPLL_CORE 0x4
608 while { !([ mrw $CM_IDLEST_DPLL_CORE ] & 0x0100) } { }
609
610 set clksel [ expr {$clksel & (~0x7ffff)} ]
611 set clksel [ expr {$clksel | ($M << 0x8) | $N} ]
612 mww $CM_CLKSEL_DPLL_CORE $clksel
613 mww $CM_DIV_M4_DPLL_CORE $M4
614 mww $CM_DIV_M5_DPLL_CORE $M5
615 mww $CM_DIV_M6_DPLL_CORE $M6
616
617 mww $CM_CLKMODE_DPLL_CORE 0x7
618 while { !([ mrw $CM_IDLEST_DPLL_CORE ] & 0x01) } { }
619
620 echo "CORE DPLL locked"
621 }
622
623 proc per_pll_config { CLKIN N M M2 } {
624 global CM_CLKMODE_DPLL_PER
625 global CM_CLKSEL_DPLL_PER
626 global CM_DIV_M2_DPLL_PER
627 global CM_IDLEST_DPLL_PER
628
629 set x [ expr {$M * $CLKIN / 1000000} ]
630 set y [ expr {($N + 1) * 250} ]
631 set sd [ ceil $x $y ]
632
633 set clksel [ mrw $CM_CLKSEL_DPLL_PER ]
634 set div_m2 [ mrw $CM_DIV_M2_DPLL_PER ]
635
636 mww $CM_CLKMODE_DPLL_PER 0x4
637 while { !([ mrw $CM_IDLEST_DPLL_PER ] & 0x0100) } { }
638
639 set clksel [ expr {$clksel & (~0xff0fffff)} ]
640 set clksel [ expr {$clksel | ($M << 0x8) | $N} ]
641 set clksel [ expr {$clksel | ($sd << 24)} ]
642 mww $CM_CLKSEL_DPLL_PER $clksel
643
644 set div_m2 [ expr {0xffffff80 | $M2} ]
645
646 mww $CM_CLKMODE_DPLL_PER 0x7
647 while { !([ mrw $CM_IDLEST_DPLL_PER ] & 0x01) } { }
648
649 echo "PER DPLL locked"
650 }
651
652 proc ddr_pll_config { CLKIN N M M2 M4 } {
653 global CM_CLKMODE_DPLL_DDR
654 global CM_CLKSEL_DPLL_DDR
655 global CM_DIV_M2_DPLL_DDR
656 global CM_DIV_M4_DPLL_DDR
657 global CM_IDLEST_DPLL_DDR
658
659 set clksel [ mrw $CM_CLKSEL_DPLL_DDR ]
660 set div_m2 [ mrw $CM_DIV_M2_DPLL_DDR ]
661
662 mww $CM_CLKMODE_DPLL_DDR 0x4
663 while { !([ mrw $CM_IDLEST_DPLL_DDR ] & 0x0100) } { }
664
665 set clksel [ expr {$clksel & (~0x7ffff)} ]
666 set clksel [ expr {$clksel | ($M << 8) | $N} ]
667 mww $CM_CLKSEL_DPLL_DDR $clksel
668
669 set div_m2 [ expr {($div_m2 & 0xffffffe0) | $M2} ]
670 mww $CM_DIV_M2_DPLL_DDR $div_m2
671 mww $CM_DIV_M4_DPLL_DDR $M4
672
673 mww $CM_CLKMODE_DPLL_DDR 0x7
674 while { !([ mrw $CM_IDLEST_DPLL_DDR ] & 0x01) } { }
675
676 echo "DDR DPLL Locked"
677 }
678
679 proc config_opp100 { } {
680 set CLKIN [ get_input_clock_frequency ]
681
682 if { $CLKIN == -1 } {
683 return -1
684 }
685
686 switch $CLKIN {
687 24000000 {
688 mpu_pll_config $CLKIN 0 25 1
689 core_pll_config $CLKIN 2 125 10 8 4
690 per_pll_config $CLKIN 9 400 5
691 ddr_pll_config $CLKIN 2 50 1 2
692 }
693
694 25000000 {
695 mpu_pll_config $CLKIN 0 24 1
696 core_pll_config $CLKIN 0 40 10 8 4
697 per_pll_config $CLKIN 9 384 5
698 ddr_pll_config $CLKIN 0 16 1 2
699 }
700
701 26000000 {
702 mpu_pll_config $CLKIN 12 300 1
703 core_pll_config $CLKIN 12 500 10 8 4
704 per_pll_config $CLKIN 12 480 5
705 ddr_pll_config $CLKIN 12 200 1 2
706 }
707
708 19200000 {
709 mpu_pll_config $CLKIN 3 125 1
710 core_pll_config $CLKIN 11 625 10 8 4
711 per_pll_config $CLKIN 7 400 5
712 ddr_pll_config $CLKIN 2 125 1 2
713 }
714 }
715 }
716
717 proc emif_prcm_clk_enable { } {
718 global CM_PER_EMIF_FW_CLKCTRL
719 global CM_PER_EMIF_CLKCTRL
720
721 mww $CM_PER_EMIF_FW_CLKCTRL 0x02
722 mww $CM_PER_EMIF_CLKCTRL 0x02
723
724 while { [ mrw $CM_PER_EMIF_CLKCTRL ] != 0x02 } { }
725 }
726
727 proc vtp_enable { } {
728 global VTP_CTRL_REG
729
730 set vtp [ expr {[ mrw $VTP_CTRL_REG ] | 0x40 }]
731 mww $VTP_CTRL_REG $vtp
732
733 set vtp [ expr {[ mrw $VTP_CTRL_REG ] & ~0x01 }]
734 mww $VTP_CTRL_REG $vtp
735
736 set vtp [ expr {[ mrw $VTP_CTRL_REG ] | 0x01 }]
737 mww $VTP_CTRL_REG $vtp
738
739 }
740
741 proc config_ddr_ioctrl { } {
742 global DDR_ADDRCTRL_IOCTRL
743 global DDR_ADDRCTRL_WD0_IOCTRL
744 global DDR_ADDRCTRL_WD1_IOCTRL
745 global DDR_CKE_CTRL
746 global DDR_DATA0_IOCTRL
747 global DDR_DATA1_IOCTRL
748 global DDR_DATA2_IOCTRL
749 global DDR_DATA3_IOCTRL
750 global DDR_IO_CTRL
751
752 mww $DDR_ADDRCTRL_IOCTRL 0x84
753 mww $DDR_ADDRCTRL_WD0_IOCTRL 0x00
754 mww $DDR_ADDRCTRL_WD1_IOCTRL 0x00
755 mww $DDR_DATA0_IOCTRL 0x84
756 mww $DDR_DATA1_IOCTRL 0x84
757 mww $DDR_DATA2_IOCTRL 0x84
758 mww $DDR_DATA3_IOCTRL 0x84
759
760 mww $DDR_IO_CTRL 0x00
761 mww $DDR_CKE_CTRL 0x03
762 }
763
764 proc config_ddr_phy { } {
765 global EMIF_DDR_PHY_CTRL_1
766 global EMIF_DDR_PHY_CTRL_1_SHDW
767
768 global EXT_PHY_CTRL_1
769 global EXT_PHY_CTRL_1_SHDW
770 global EXT_PHY_CTRL_2
771 global EXT_PHY_CTRL_2_SHDW
772 global EXT_PHY_CTRL_3
773 global EXT_PHY_CTRL_3_SHDW
774 global EXT_PHY_CTRL_4
775 global EXT_PHY_CTRL_4_SHDW
776 global EXT_PHY_CTRL_5
777 global EXT_PHY_CTRL_5_SHDW
778 global EXT_PHY_CTRL_6
779 global EXT_PHY_CTRL_6_SHDW
780 global EXT_PHY_CTRL_7
781 global EXT_PHY_CTRL_7_SHDW
782 global EXT_PHY_CTRL_8
783 global EXT_PHY_CTRL_8_SHDW
784 global EXT_PHY_CTRL_9
785 global EXT_PHY_CTRL_9_SHDW
786 global EXT_PHY_CTRL_10
787 global EXT_PHY_CTRL_10_SHDW
788 global EXT_PHY_CTRL_11
789 global EXT_PHY_CTRL_11_SHDW
790 global EXT_PHY_CTRL_12
791 global EXT_PHY_CTRL_12_SHDW
792 global EXT_PHY_CTRL_13
793 global EXT_PHY_CTRL_13_SHDW
794 global EXT_PHY_CTRL_14
795 global EXT_PHY_CTRL_14_SHDW
796 global EXT_PHY_CTRL_15
797 global EXT_PHY_CTRL_15_SHDW
798 global EXT_PHY_CTRL_16
799 global EXT_PHY_CTRL_16_SHDW
800 global EXT_PHY_CTRL_17
801 global EXT_PHY_CTRL_17_SHDW
802 global EXT_PHY_CTRL_18
803 global EXT_PHY_CTRL_18_SHDW
804 global EXT_PHY_CTRL_19
805 global EXT_PHY_CTRL_19_SHDW
806 global EXT_PHY_CTRL_20
807 global EXT_PHY_CTRL_20_SHDW
808 global EXT_PHY_CTRL_21
809 global EXT_PHY_CTRL_21_SHDW
810 global EXT_PHY_CTRL_22
811 global EXT_PHY_CTRL_22_SHDW
812 global EXT_PHY_CTRL_23
813 global EXT_PHY_CTRL_23_SHDW
814 global EXT_PHY_CTRL_24
815 global EXT_PHY_CTRL_24_SHDW
816 global EXT_PHY_CTRL_25
817 global EXT_PHY_CTRL_25_SHDW
818 global EXT_PHY_CTRL_26
819 global EXT_PHY_CTRL_26_SHDW
820 global EXT_PHY_CTRL_27
821 global EXT_PHY_CTRL_27_SHDW
822 global EXT_PHY_CTRL_28
823 global EXT_PHY_CTRL_28_SHDW
824 global EXT_PHY_CTRL_29
825 global EXT_PHY_CTRL_29_SHDW
826 global EXT_PHY_CTRL_30
827 global EXT_PHY_CTRL_30_SHDW
828 global EXT_PHY_CTRL_31
829 global EXT_PHY_CTRL_31_SHDW
830 global EXT_PHY_CTRL_32
831 global EXT_PHY_CTRL_32_SHDW
832 global EXT_PHY_CTRL_33
833 global EXT_PHY_CTRL_33_SHDW
834 global EXT_PHY_CTRL_34
835 global EXT_PHY_CTRL_34_SHDW
836 global EXT_PHY_CTRL_35
837 global EXT_PHY_CTRL_35_SHDW
838 global EXT_PHY_CTRL_36
839 global EXT_PHY_CTRL_36_SHDW
840
841 mww $EMIF_DDR_PHY_CTRL_1 0x8009
842 mww $EMIF_DDR_PHY_CTRL_1_SHDW 0x8009
843
844 set slave_ratio 0x80
845 set gatelvl_init_ratio 0x20
846 set wr_dqs_slave_delay 0x60
847 set rd_dqs_slave_delay 0x60
848 set dq_offset 0x40
849 set gatelvl_init_mode 0x01
850 set wr_data_slave_delay 0x80
851 set gatelvl_num_dq0 0x0f
852 set wrlvl_num_dq0 0x0f
853
854 mww $EXT_PHY_CTRL_1 [ expr {($slave_ratio << 20) | ($slave_ratio << 10) | $slave_ratio} ]
855 mww $EXT_PHY_CTRL_1_SHDW [ expr {($slave_ratio << 20) | ($slave_ratio << 10) | $slave_ratio} ]
856 mww $EXT_PHY_CTRL_26 [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
857 mww $EXT_PHY_CTRL_26_SHDW [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
858 mww $EXT_PHY_CTRL_27 [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
859 mww $EXT_PHY_CTRL_27_SHDW [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
860 mww $EXT_PHY_CTRL_28 [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
861 mww $EXT_PHY_CTRL_28_SHDW [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
862 mww $EXT_PHY_CTRL_29 [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
863 mww $EXT_PHY_CTRL_29_SHDW [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
864 mww $EXT_PHY_CTRL_30 [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
865 mww $EXT_PHY_CTRL_30_SHDW [ expr {($gatelvl_init_ratio << 16) | $gatelvl_init_ratio} ]
866 mww $EXT_PHY_CTRL_31 0x00
867 mww $EXT_PHY_CTRL_31_SHDW 0x00
868 mww $EXT_PHY_CTRL_32 0x00
869 mww $EXT_PHY_CTRL_32_SHDW 0x00
870 mww $EXT_PHY_CTRL_33 0x00
871 mww $EXT_PHY_CTRL_33_SHDW 0x00
872 mww $EXT_PHY_CTRL_34 0x00
873 mww $EXT_PHY_CTRL_34_SHDW 0x00
874 mww $EXT_PHY_CTRL_35 0x00
875 mww $EXT_PHY_CTRL_35_SHDW 0x00
876 mww $EXT_PHY_CTRL_22 0x00
877 mww $EXT_PHY_CTRL_22_SHDW 0x00
878 mww $EXT_PHY_CTRL_23 [ expr {($wr_dqs_slave_delay << 16) | $rd_dqs_slave_delay} ]
879 mww $EXT_PHY_CTRL_23_SHDW [ expr {($wr_dqs_slave_delay << 16) | $rd_dqs_slave_delay} ]
880 mww $EXT_PHY_CTRL_24 [ expr {($dq_offset << 24) | ($gatelvl_init_mode << 16) | $wr_data_slave_delay} ]
881 mww $EXT_PHY_CTRL_24_SHDW [ expr {($dq_offset << 24) | ($gatelvl_init_mode << 16) | $wr_data_slave_delay << 0} ]
882 mww $EXT_PHY_CTRL_25 [ expr {($dq_offset << 21) | ($dq_offset << 14) | ($dq_offset << 7) | $dq_offset} ]
883 mww $EXT_PHY_CTRL_25_SHDW [ expr {($dq_offset << 21) | ($dq_offset << 14) | ($dq_offset << 7) | $dq_offset} ]
884 mww $EXT_PHY_CTRL_36 [ expr {($wrlvl_num_dq0 << 4) | $gatelvl_num_dq0} ]
885 mww $EXT_PHY_CTRL_36_SHDW [ expr {($wrlvl_num_dq0 << 4) | $gatelvl_num_dq0} ]
886 }
887
888 proc config_ddr_timing { } {
889 global EMIF_SDRAM_TIM_1
890 global EMIF_SDRAM_TIM_2
891 global EMIF_SDRAM_TIM_3
892 global EMIF_SDRAM_TIM_1_SHDW
893 global EMIF_SDRAM_TIM_2_SHDW
894 global EMIF_SDRAM_TIM_3_SHDW
895 global EMIF_ZQ_CONFIG
896
897 mww $EMIF_SDRAM_TIM_1 0xeaaad4db
898 mww $EMIF_SDRAM_TIM_1_SHDW 0xeaaad4db
899
900 mww $EMIF_SDRAM_TIM_2 0x266b7fda
901 mww $EMIF_SDRAM_TIM_2_SHDW 0x266b7fda
902
903 mww $EMIF_SDRAM_TIM_3 0x107f8678
904 mww $EMIF_SDRAM_TIM_3_SHDW 0x107f8678
905
906 mww $EMIF_ZQ_CONFIG 0x50074be4
907 }
908
909 proc config_ddr_pm { } {
910 global EMIF_PWR_MGMT_CTRL
911 global EMIF_PWR_MGMT_CTRL_SHDW
912 global EMIF_DLL_CALIB_CTRL
913 global EMIF_DLL_CALIB_CTRL_SHDW
914 global EMIF_TEMP_ALERT_CONFIG
915
916 mww $EMIF_PWR_MGMT_CTRL 0x00
917 mww $EMIF_PWR_MGMT_CTRL_SHDW 0x00
918 mww $EMIF_DLL_CALIB_CTRL 0x00050000
919 mww $EMIF_DLL_CALIB_CTRL_SHDW 0x00050000
920 mww $EMIF_TEMP_ALERT_CONFIG 0x00
921 }
922
923 proc config_ddr_priority { } {
924 global EMIF_PRI_COS_MAP
925 global EMIF_CONNID_COS_1_MAP
926 global EMIF_CONNID_COS_2_MAP
927 global EMIF_RD_WR_EXEC_THRSH
928 global COS_CONFIG
929
930 mww $EMIF_PRI_COS_MAP 0x00
931 mww $EMIF_CONNID_COS_1_MAP 0x00
932 mww $EMIF_CONNID_COS_2_MAP 0x0
933 mww $EMIF_RD_WR_EXEC_THRSH 0x0405
934 mww $COS_CONFIG 0x00ffffff
935 }
936
937 proc config_ddr3 { SDRAM_CONFIG } {
938 global CM_DLL_CTRL
939 global EMIF_IODFT_TLGC
940 global EMIF_RDWR_LVL_CTRL
941 global EMIF_RDWR_LVL_RMP_CTRL
942 global EMIF_SDRAM_CONFIG
943 global EMIF_SDRAM_CONFIG_EXT
944 global EMIF_SDRAM_REF_CTRL
945 global EMIF_SDRAM_REF_CTRL_SHDW
946 global EMIF_STATUS
947 global EXT_PHY_CTRL_36
948 global EXT_PHY_CTRL_36_SHDW
949
950 emif_prcm_clk_enable
951 vtp_enable
952
953 set dll [ expr {[ mrw $CM_DLL_CTRL ] & ~0x01 }]
954 mww $CM_DLL_CTRL $dll
955 while { !([ mrw $CM_DLL_CTRL ] & 0x04) } { }
956
957 config_ddr_ioctrl
958
959 mww $EMIF_SDRAM_CONFIG_EXT 0xc163
960 mww $EMIF_IODFT_TLGC 0x2011
961 mww $EMIF_IODFT_TLGC 0x2411
962 mww $EMIF_IODFT_TLGC 0x2011
963 mww $EMIF_SDRAM_REF_CTRL 0x80003000
964
965 config_ddr_phy
966
967 mww $EMIF_IODFT_TLGC 0x2011
968 mww $EMIF_IODFT_TLGC 0x2411
969 mww $EMIF_IODFT_TLGC 0x2011
970
971 config_ddr_timing
972 config_ddr_pm
973 config_ddr_priority
974
975 mww $EMIF_SDRAM_REF_CTRL 0x3000
976 mww $EMIF_SDRAM_CONFIG $SDRAM_CONFIG
977
978 mww $EMIF_SDRAM_REF_CTRL 0x0c30
979 mww $EMIF_SDRAM_REF_CTRL_SHDW 0x0c30
980
981 sleep 10
982
983 set tmp [ expr {[ mrw $EXT_PHY_CTRL_36 ] | 0x0100 }]
984 mww $EXT_PHY_CTRL_36 $tmp
985 mww $EXT_PHY_CTRL_36_SHDW $tmp
986
987 mww $EMIF_RDWR_LVL_RMP_CTRL 0x80000000
988 mww $EMIF_RDWR_LVL_CTRL 0x80000000
989
990 while { [ mrw $EMIF_RDWR_LVL_CTRL ] & 0x80000000 } { }
991
992 if { [ mrw $EMIF_STATUS ] & 0x70 } {
993 error "DDR3 Hardware Leveling incomplete!!!"
994 }
995 }
996
997 proc init_platform { SDRAM_CONFIG } {
998 config_opp100
999 config_ddr3 $SDRAM_CONFIG
1000 }
1001
1002 $_TARGETNAME configure -event reset-init { init_platform 0x61a013b2 }
1003 $_TARGETNAME configure -event reset-end { disable_watchdog }

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)