• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef SMMU_H
8 #define SMMU_H
9 
10 #include <lib/mmio.h>
11 
12 #include <memctrl_v2.h>
13 #include <tegra_def.h>
14 
15 /*******************************************************************************
16  * SMMU Register constants
17  ******************************************************************************/
18 #define SMMU_CBn_SCTLR				(0x0U)
19 #define SMMU_CBn_SCTLR_STAGE2			(0x0U)
20 #define SMMU_CBn_ACTLR				(0x4U)
21 #define SMMU_CBn_RESUME				(0x8U)
22 #define SMMU_CBn_TCR2				(0x10U)
23 #define SMMU_CBn_TTBR0_LO			(0x20U)
24 #define SMMU_CBn_TTBR0_HI			(0x24U)
25 #define SMMU_CBn_TTBR1_LO			(0x28U)
26 #define SMMU_CBn_TTBR1_HI			(0x2cU)
27 #define SMMU_CBn_TCR_LPAE			(0x30U)
28 #define SMMU_CBn_TCR				(0x30U)
29 #define SMMU_CBn_TCR_EAE_1			(0x30U)
30 #define SMMU_CBn_TCR				(0x30U)
31 #define SMMU_CBn_CONTEXTIDR			(0x34U)
32 #define SMMU_CBn_CONTEXTIDR_EAE_1		(0x34U)
33 #define SMMU_CBn_PRRR_MAIR0			(0x38U)
34 #define SMMU_CBn_NMRR_MAIR1			(0x3cU)
35 #define SMMU_CBn_SMMU_CBn_PAR			(0x50U)
36 #define SMMU_CBn_SMMU_CBn_PAR0			(0x50U)
37 #define SMMU_CBn_SMMU_CBn_PAR1			(0x54U)
38 /*      SMMU_CBn_SMMU_CBn_PAR0_Fault		(0x50U) */
39 /*      SMMU_CBn_SMMU_CBn_PAR0_Fault		(0x54U) */
40 #define SMMU_CBn_FSR				(0x58U)
41 #define SMMU_CBn_FSRRESTORE			(0x5cU)
42 #define SMMU_CBn_FAR_LO				(0x60U)
43 #define SMMU_CBn_FAR_HI				(0x64U)
44 #define SMMU_CBn_FSYNR0				(0x68U)
45 #define SMMU_CBn_IPAFAR_LO			(0x70U)
46 #define SMMU_CBn_IPAFAR_HI			(0x74U)
47 #define SMMU_CBn_TLBIVA_LO			(0x600U)
48 #define SMMU_CBn_TLBIVA_HI			(0x604U)
49 #define SMMU_CBn_TLBIVA_AARCH_32		(0x600U)
50 #define SMMU_CBn_TLBIVAA_LO			(0x608U)
51 #define SMMU_CBn_TLBIVAA_HI			(0x60cU)
52 #define SMMU_CBn_TLBIVAA_AARCH_32		(0x608U)
53 #define SMMU_CBn_TLBIASID			(0x610U)
54 #define SMMU_CBn_TLBIALL			(0x618U)
55 #define SMMU_CBn_TLBIVAL_LO			(0x620U)
56 #define SMMU_CBn_TLBIVAL_HI			(0x624U)
57 #define SMMU_CBn_TLBIVAL_AARCH_32		(0x618U)
58 #define SMMU_CBn_TLBIVAAL_LO			(0x628U)
59 #define SMMU_CBn_TLBIVAAL_HI			(0x62cU)
60 #define SMMU_CBn_TLBIVAAL_AARCH_32		(0x628U)
61 #define SMMU_CBn_TLBIIPAS2_LO			(0x630U)
62 #define SMMU_CBn_TLBIIPAS2_HI			(0x634U)
63 #define SMMU_CBn_TLBIIPAS2L_LO			(0x638U)
64 #define SMMU_CBn_TLBIIPAS2L_HI			(0x63cU)
65 #define SMMU_CBn_TLBSYNC			(0x7f0U)
66 #define SMMU_CBn_TLBSTATUS			(0x7f4U)
67 #define SMMU_CBn_ATSR				(0x800U)
68 #define SMMU_CBn_PMEVCNTR0			(0xe00U)
69 #define SMMU_CBn_PMEVCNTR1			(0xe04U)
70 #define SMMU_CBn_PMEVCNTR2			(0xe08U)
71 #define SMMU_CBn_PMEVCNTR3			(0xe0cU)
72 #define SMMU_CBn_PMEVTYPER0			(0xe80U)
73 #define SMMU_CBn_PMEVTYPER1			(0xe84U)
74 #define SMMU_CBn_PMEVTYPER2			(0xe88U)
75 #define SMMU_CBn_PMEVTYPER3			(0xe8cU)
76 #define SMMU_CBn_PMCFGR				(0xf00U)
77 #define SMMU_CBn_PMCR				(0xf04U)
78 #define SMMU_CBn_PMCEID				(0xf20U)
79 #define SMMU_CBn_PMCNTENSE			(0xf40U)
80 #define SMMU_CBn_PMCNTENCLR			(0xf44U)
81 #define SMMU_CBn_PMCNTENSET			(0xf48U)
82 #define SMMU_CBn_PMINTENCLR			(0xf4cU)
83 #define SMMU_CBn_PMOVSCLR			(0xf50U)
84 #define SMMU_CBn_PMOVSSET			(0xf58U)
85 #define SMMU_CBn_PMAUTHSTATUS			(0xfb8U)
86 #define SMMU_GNSR0_CR0				(0x0U)
87 #define SMMU_GNSR0_CR2				(0x8U)
88 #define SMMU_GNSR0_ACR				(0x10U)
89 #define SMMU_GNSR0_IDR0				(0x20U)
90 #define SMMU_GNSR0_IDR1				(0x24U)
91 #define SMMU_GNSR0_IDR2				(0x28U)
92 #define SMMU_GNSR0_IDR7				(0x3cU)
93 #define SMMU_GNSR0_GFAR_LO			(0x40U)
94 #define SMMU_GNSR0_GFAR_HI			(0x44U)
95 #define SMMU_GNSR0_GFSR				(0x48U)
96 #define SMMU_GNSR0_GFSRRESTORE			(0x4cU)
97 #define SMMU_GNSR0_GFSYNR0			(0x50U)
98 #define SMMU_GNSR0_GFSYNR1			(0x54U)
99 #define SMMU_GNSR0_GFSYNR1_v2			(0x54U)
100 #define SMMU_GNSR0_TLBIVMID			(0x64U)
101 #define SMMU_GNSR0_TLBIALLNSNH			(0x68U)
102 #define SMMU_GNSR0_TLBIALLH			(0x6cU)
103 #define SMMU_GNSR0_TLBGSYNC			(0x70U)
104 #define SMMU_GNSR0_TLBGSTATUS			(0x74U)
105 #define SMMU_GNSR0_TLBIVAH_LO			(0x78U)
106 #define SMMU_GNSR0_TLBIVALH64_LO		(0xb0U)
107 #define SMMU_GNSR0_TLBIVALH64_HI		(0xb4U)
108 #define SMMU_GNSR0_TLBIVMIDS1			(0xb8U)
109 #define SMMU_GNSR0_TLBIVAH64_LO			(0xc0U)
110 #define SMMU_GNSR0_TLBIVAH64_HI			(0xc4U)
111 #define SMMU_GNSR0_SMR0				(0x800U)
112 #define SMMU_GNSR0_SMRn				(0x800U)
113 #define SMMU_GNSR0_SMR1				(0x804U)
114 #define SMMU_GNSR0_SMR2				(0x808U)
115 #define SMMU_GNSR0_SMR3				(0x80cU)
116 #define SMMU_GNSR0_SMR4				(0x810U)
117 #define SMMU_GNSR0_SMR5				(0x814U)
118 #define SMMU_GNSR0_SMR6				(0x818U)
119 #define SMMU_GNSR0_SMR7				(0x81cU)
120 #define SMMU_GNSR0_SMR8				(0x820U)
121 #define SMMU_GNSR0_SMR9				(0x824U)
122 #define SMMU_GNSR0_SMR10			(0x828U)
123 #define SMMU_GNSR0_SMR11			(0x82cU)
124 #define SMMU_GNSR0_SMR12			(0x830U)
125 #define SMMU_GNSR0_SMR13			(0x834U)
126 #define SMMU_GNSR0_SMR14			(0x838U)
127 #define SMMU_GNSR0_SMR15			(0x83cU)
128 #define SMMU_GNSR0_SMR16			(0x840U)
129 #define SMMU_GNSR0_SMR17			(0x844U)
130 #define SMMU_GNSR0_SMR18			(0x848U)
131 #define SMMU_GNSR0_SMR19			(0x84cU)
132 #define SMMU_GNSR0_SMR20			(0x850U)
133 #define SMMU_GNSR0_SMR21			(0x854U)
134 #define SMMU_GNSR0_SMR22			(0x858U)
135 #define SMMU_GNSR0_SMR23			(0x85cU)
136 #define SMMU_GNSR0_SMR24			(0x860U)
137 #define SMMU_GNSR0_SMR25			(0x864U)
138 #define SMMU_GNSR0_SMR26			(0x868U)
139 #define SMMU_GNSR0_SMR27			(0x86cU)
140 #define SMMU_GNSR0_SMR28			(0x870U)
141 #define SMMU_GNSR0_SMR29			(0x874U)
142 #define SMMU_GNSR0_SMR30			(0x878U)
143 #define SMMU_GNSR0_SMR31			(0x87cU)
144 #define SMMU_GNSR0_SMR32			(0x880U)
145 #define SMMU_GNSR0_SMR33			(0x884U)
146 #define SMMU_GNSR0_SMR34			(0x888U)
147 #define SMMU_GNSR0_SMR35			(0x88cU)
148 #define SMMU_GNSR0_SMR36			(0x890U)
149 #define SMMU_GNSR0_SMR37			(0x894U)
150 #define SMMU_GNSR0_SMR38			(0x898U)
151 #define SMMU_GNSR0_SMR39			(0x89cU)
152 #define SMMU_GNSR0_SMR40			(0x8a0U)
153 #define SMMU_GNSR0_SMR41			(0x8a4U)
154 #define SMMU_GNSR0_SMR42			(0x8a8U)
155 #define SMMU_GNSR0_SMR43			(0x8acU)
156 #define SMMU_GNSR0_SMR44			(0x8b0U)
157 #define SMMU_GNSR0_SMR45			(0x8b4U)
158 #define SMMU_GNSR0_SMR46			(0x8b8U)
159 #define SMMU_GNSR0_SMR47			(0x8bcU)
160 #define SMMU_GNSR0_SMR48			(0x8c0U)
161 #define SMMU_GNSR0_SMR49			(0x8c4U)
162 #define SMMU_GNSR0_SMR50			(0x8c8U)
163 #define SMMU_GNSR0_SMR51			(0x8ccU)
164 #define SMMU_GNSR0_SMR52			(0x8d0U)
165 #define SMMU_GNSR0_SMR53			(0x8d4U)
166 #define SMMU_GNSR0_SMR54			(0x8d8U)
167 #define SMMU_GNSR0_SMR55			(0x8dcU)
168 #define SMMU_GNSR0_SMR56			(0x8e0U)
169 #define SMMU_GNSR0_SMR57			(0x8e4U)
170 #define SMMU_GNSR0_SMR58			(0x8e8U)
171 #define SMMU_GNSR0_SMR59			(0x8ecU)
172 #define SMMU_GNSR0_SMR60			(0x8f0U)
173 #define SMMU_GNSR0_SMR61			(0x8f4U)
174 #define SMMU_GNSR0_SMR62			(0x8f8U)
175 #define SMMU_GNSR0_SMR63			(0x8fcU)
176 #define SMMU_GNSR0_SMR64			(0x900U)
177 #define SMMU_GNSR0_SMR65			(0x904U)
178 #define SMMU_GNSR0_SMR66			(0x908U)
179 #define SMMU_GNSR0_SMR67			(0x90cU)
180 #define SMMU_GNSR0_SMR68			(0x910U)
181 #define SMMU_GNSR0_SMR69			(0x914U)
182 #define SMMU_GNSR0_SMR70			(0x918U)
183 #define SMMU_GNSR0_SMR71			(0x91cU)
184 #define SMMU_GNSR0_SMR72			(0x920U)
185 #define SMMU_GNSR0_SMR73			(0x924U)
186 #define SMMU_GNSR0_SMR74			(0x928U)
187 #define SMMU_GNSR0_SMR75			(0x92cU)
188 #define SMMU_GNSR0_SMR76			(0x930U)
189 #define SMMU_GNSR0_SMR77			(0x934U)
190 #define SMMU_GNSR0_SMR78			(0x938U)
191 #define SMMU_GNSR0_SMR79			(0x93cU)
192 #define SMMU_GNSR0_SMR80			(0x940U)
193 #define SMMU_GNSR0_SMR81			(0x944U)
194 #define SMMU_GNSR0_SMR82			(0x948U)
195 #define SMMU_GNSR0_SMR83			(0x94cU)
196 #define SMMU_GNSR0_SMR84			(0x950U)
197 #define SMMU_GNSR0_SMR85			(0x954U)
198 #define SMMU_GNSR0_SMR86			(0x958U)
199 #define SMMU_GNSR0_SMR87			(0x95cU)
200 #define SMMU_GNSR0_SMR88			(0x960U)
201 #define SMMU_GNSR0_SMR89			(0x964U)
202 #define SMMU_GNSR0_SMR90			(0x968U)
203 #define SMMU_GNSR0_SMR91			(0x96cU)
204 #define SMMU_GNSR0_SMR92			(0x970U)
205 #define SMMU_GNSR0_SMR93			(0x974U)
206 #define SMMU_GNSR0_SMR94			(0x978U)
207 #define SMMU_GNSR0_SMR95			(0x97cU)
208 #define SMMU_GNSR0_SMR96			(0x980U)
209 #define SMMU_GNSR0_SMR97			(0x984U)
210 #define SMMU_GNSR0_SMR98			(0x988U)
211 #define SMMU_GNSR0_SMR99			(0x98cU)
212 #define SMMU_GNSR0_SMR100			(0x990U)
213 #define SMMU_GNSR0_SMR101			(0x994U)
214 #define SMMU_GNSR0_SMR102			(0x998U)
215 #define SMMU_GNSR0_SMR103			(0x99cU)
216 #define SMMU_GNSR0_SMR104			(0x9a0U)
217 #define SMMU_GNSR0_SMR105			(0x9a4U)
218 #define SMMU_GNSR0_SMR106			(0x9a8U)
219 #define SMMU_GNSR0_SMR107			(0x9acU)
220 #define SMMU_GNSR0_SMR108			(0x9b0U)
221 #define SMMU_GNSR0_SMR109			(0x9b4U)
222 #define SMMU_GNSR0_SMR110			(0x9b8U)
223 #define SMMU_GNSR0_SMR111			(0x9bcU)
224 #define SMMU_GNSR0_SMR112			(0x9c0U)
225 #define SMMU_GNSR0_SMR113			(0x9c4U)
226 #define SMMU_GNSR0_SMR114			(0x9c8U)
227 #define SMMU_GNSR0_SMR115			(0x9ccU)
228 #define SMMU_GNSR0_SMR116			(0x9d0U)
229 #define SMMU_GNSR0_SMR117			(0x9d4U)
230 #define SMMU_GNSR0_SMR118			(0x9d8U)
231 #define SMMU_GNSR0_SMR119			(0x9dcU)
232 #define SMMU_GNSR0_SMR120			(0x9e0U)
233 #define SMMU_GNSR0_SMR121			(0x9e4U)
234 #define SMMU_GNSR0_SMR122			(0x9e8U)
235 #define SMMU_GNSR0_SMR123			(0x9ecU)
236 #define SMMU_GNSR0_SMR124			(0x9f0U)
237 #define SMMU_GNSR0_SMR125			(0x9f4U)
238 #define SMMU_GNSR0_SMR126			(0x9f8U)
239 #define SMMU_GNSR0_SMR127			(0x9fcU)
240 #define SMMU_GNSR0_S2CR0			(0xc00U)
241 #define SMMU_GNSR0_S2CRn			(0xc00U)
242 #define SMMU_GNSR0_S2CRn			(0xc00U)
243 #define SMMU_GNSR0_S2CR1			(0xc04U)
244 #define SMMU_GNSR0_S2CR2			(0xc08U)
245 #define SMMU_GNSR0_S2CR3			(0xc0cU)
246 #define SMMU_GNSR0_S2CR4			(0xc10U)
247 #define SMMU_GNSR0_S2CR5			(0xc14U)
248 #define SMMU_GNSR0_S2CR6			(0xc18U)
249 #define SMMU_GNSR0_S2CR7			(0xc1cU)
250 #define SMMU_GNSR0_S2CR8			(0xc20U)
251 #define SMMU_GNSR0_S2CR9			(0xc24U)
252 #define SMMU_GNSR0_S2CR10			(0xc28U)
253 #define SMMU_GNSR0_S2CR11			(0xc2cU)
254 #define SMMU_GNSR0_S2CR12			(0xc30U)
255 #define SMMU_GNSR0_S2CR13			(0xc34U)
256 #define SMMU_GNSR0_S2CR14			(0xc38U)
257 #define SMMU_GNSR0_S2CR15			(0xc3cU)
258 #define SMMU_GNSR0_S2CR16			(0xc40U)
259 #define SMMU_GNSR0_S2CR17			(0xc44U)
260 #define SMMU_GNSR0_S2CR18			(0xc48U)
261 #define SMMU_GNSR0_S2CR19			(0xc4cU)
262 #define SMMU_GNSR0_S2CR20			(0xc50U)
263 #define SMMU_GNSR0_S2CR21			(0xc54U)
264 #define SMMU_GNSR0_S2CR22			(0xc58U)
265 #define SMMU_GNSR0_S2CR23			(0xc5cU)
266 #define SMMU_GNSR0_S2CR24			(0xc60U)
267 #define SMMU_GNSR0_S2CR25			(0xc64U)
268 #define SMMU_GNSR0_S2CR26			(0xc68U)
269 #define SMMU_GNSR0_S2CR27			(0xc6cU)
270 #define SMMU_GNSR0_S2CR28			(0xc70U)
271 #define SMMU_GNSR0_S2CR29			(0xc74U)
272 #define SMMU_GNSR0_S2CR30			(0xc78U)
273 #define SMMU_GNSR0_S2CR31			(0xc7cU)
274 #define SMMU_GNSR0_S2CR32			(0xc80U)
275 #define SMMU_GNSR0_S2CR33			(0xc84U)
276 #define SMMU_GNSR0_S2CR34			(0xc88U)
277 #define SMMU_GNSR0_S2CR35			(0xc8cU)
278 #define SMMU_GNSR0_S2CR36			(0xc90U)
279 #define SMMU_GNSR0_S2CR37			(0xc94U)
280 #define SMMU_GNSR0_S2CR38			(0xc98U)
281 #define SMMU_GNSR0_S2CR39			(0xc9cU)
282 #define SMMU_GNSR0_S2CR40			(0xca0U)
283 #define SMMU_GNSR0_S2CR41			(0xca4U)
284 #define SMMU_GNSR0_S2CR42			(0xca8U)
285 #define SMMU_GNSR0_S2CR43			(0xcacU)
286 #define SMMU_GNSR0_S2CR44			(0xcb0U)
287 #define SMMU_GNSR0_S2CR45			(0xcb4U)
288 #define SMMU_GNSR0_S2CR46			(0xcb8U)
289 #define SMMU_GNSR0_S2CR47			(0xcbcU)
290 #define SMMU_GNSR0_S2CR48			(0xcc0U)
291 #define SMMU_GNSR0_S2CR49			(0xcc4U)
292 #define SMMU_GNSR0_S2CR50			(0xcc8U)
293 #define SMMU_GNSR0_S2CR51			(0xcccU)
294 #define SMMU_GNSR0_S2CR52			(0xcd0U)
295 #define SMMU_GNSR0_S2CR53			(0xcd4U)
296 #define SMMU_GNSR0_S2CR54			(0xcd8U)
297 #define SMMU_GNSR0_S2CR55			(0xcdcU)
298 #define SMMU_GNSR0_S2CR56			(0xce0U)
299 #define SMMU_GNSR0_S2CR57			(0xce4U)
300 #define SMMU_GNSR0_S2CR58			(0xce8U)
301 #define SMMU_GNSR0_S2CR59			(0xcecU)
302 #define SMMU_GNSR0_S2CR60			(0xcf0U)
303 #define SMMU_GNSR0_S2CR61			(0xcf4U)
304 #define SMMU_GNSR0_S2CR62			(0xcf8U)
305 #define SMMU_GNSR0_S2CR63			(0xcfcU)
306 #define SMMU_GNSR0_S2CR64			(0xd00U)
307 #define SMMU_GNSR0_S2CR65			(0xd04U)
308 #define SMMU_GNSR0_S2CR66			(0xd08U)
309 #define SMMU_GNSR0_S2CR67			(0xd0cU)
310 #define SMMU_GNSR0_S2CR68			(0xd10U)
311 #define SMMU_GNSR0_S2CR69			(0xd14U)
312 #define SMMU_GNSR0_S2CR70			(0xd18U)
313 #define SMMU_GNSR0_S2CR71			(0xd1cU)
314 #define SMMU_GNSR0_S2CR72			(0xd20U)
315 #define SMMU_GNSR0_S2CR73			(0xd24U)
316 #define SMMU_GNSR0_S2CR74			(0xd28U)
317 #define SMMU_GNSR0_S2CR75			(0xd2cU)
318 #define SMMU_GNSR0_S2CR76			(0xd30U)
319 #define SMMU_GNSR0_S2CR77			(0xd34U)
320 #define SMMU_GNSR0_S2CR78			(0xd38U)
321 #define SMMU_GNSR0_S2CR79			(0xd3cU)
322 #define SMMU_GNSR0_S2CR80			(0xd40U)
323 #define SMMU_GNSR0_S2CR81			(0xd44U)
324 #define SMMU_GNSR0_S2CR82			(0xd48U)
325 #define SMMU_GNSR0_S2CR83			(0xd4cU)
326 #define SMMU_GNSR0_S2CR84			(0xd50U)
327 #define SMMU_GNSR0_S2CR85			(0xd54U)
328 #define SMMU_GNSR0_S2CR86			(0xd58U)
329 #define SMMU_GNSR0_S2CR87			(0xd5cU)
330 #define SMMU_GNSR0_S2CR88			(0xd60U)
331 #define SMMU_GNSR0_S2CR89			(0xd64U)
332 #define SMMU_GNSR0_S2CR90			(0xd68U)
333 #define SMMU_GNSR0_S2CR91			(0xd6cU)
334 #define SMMU_GNSR0_S2CR92			(0xd70U)
335 #define SMMU_GNSR0_S2CR93			(0xd74U)
336 #define SMMU_GNSR0_S2CR94			(0xd78U)
337 #define SMMU_GNSR0_S2CR95			(0xd7cU)
338 #define SMMU_GNSR0_S2CR96			(0xd80U)
339 #define SMMU_GNSR0_S2CR97			(0xd84U)
340 #define SMMU_GNSR0_S2CR98			(0xd88U)
341 #define SMMU_GNSR0_S2CR99			(0xd8cU)
342 #define SMMU_GNSR0_S2CR100			(0xd90U)
343 #define SMMU_GNSR0_S2CR101			(0xd94U)
344 #define SMMU_GNSR0_S2CR102			(0xd98U)
345 #define SMMU_GNSR0_S2CR103			(0xd9cU)
346 #define SMMU_GNSR0_S2CR104			(0xda0U)
347 #define SMMU_GNSR0_S2CR105			(0xda4U)
348 #define SMMU_GNSR0_S2CR106			(0xda8U)
349 #define SMMU_GNSR0_S2CR107			(0xdacU)
350 #define SMMU_GNSR0_S2CR108			(0xdb0U)
351 #define SMMU_GNSR0_S2CR109			(0xdb4U)
352 #define SMMU_GNSR0_S2CR110			(0xdb8U)
353 #define SMMU_GNSR0_S2CR111			(0xdbcU)
354 #define SMMU_GNSR0_S2CR112			(0xdc0U)
355 #define SMMU_GNSR0_S2CR113			(0xdc4U)
356 #define SMMU_GNSR0_S2CR114			(0xdc8U)
357 #define SMMU_GNSR0_S2CR115			(0xdccU)
358 #define SMMU_GNSR0_S2CR116			(0xdd0U)
359 #define SMMU_GNSR0_S2CR117			(0xdd4U)
360 #define SMMU_GNSR0_S2CR118			(0xdd8U)
361 #define SMMU_GNSR0_S2CR119			(0xddcU)
362 #define SMMU_GNSR0_S2CR120			(0xde0U)
363 #define SMMU_GNSR0_S2CR121			(0xde4U)
364 #define SMMU_GNSR0_S2CR122			(0xde8U)
365 #define SMMU_GNSR0_S2CR123			(0xdecU)
366 #define SMMU_GNSR0_S2CR124			(0xdf0U)
367 #define SMMU_GNSR0_S2CR125			(0xdf4U)
368 #define SMMU_GNSR0_S2CR126			(0xdf8U)
369 #define SMMU_GNSR0_S2CR127			(0xdfcU)
370 #define SMMU_GNSR0_PIDR0			(0xfe0U)
371 #define SMMU_GNSR0_PIDR1			(0xfe4U)
372 #define SMMU_GNSR0_PIDR2			(0xfe8U)
373 #define SMMU_GNSR0_PIDR3			(0xfecU)
374 #define SMMU_GNSR0_PIDR4			(0xfd0U)
375 #define SMMU_GNSR0_PIDR5			(0xfd4U)
376 #define SMMU_GNSR0_PIDR6			(0xfd8U)
377 #define SMMU_GNSR0_PIDR7			(0xfdcU)
378 #define SMMU_GNSR0_CIDR0			(0xff0U)
379 #define SMMU_GNSR0_CIDR1			(0xff4U)
380 #define SMMU_GNSR0_CIDR2			(0xff8U)
381 #define SMMU_GNSR0_CIDR3			(0xffcU)
382 #define SMMU_GNSR1_CBAR0			(0x0U)
383 #define SMMU_GNSR1_CBARn			(0x0U)
384 #define SMMU_GNSR1_CBFRSYNRA0			(0x400U)
385 #define SMMU_GNSR1_CBA2R0			(0x800U)
386 #define SMMU_GNSR1_CBAR1			(0x4U)
387 #define SMMU_GNSR1_CBFRSYNRA1			(0x404U)
388 #define SMMU_GNSR1_CBA2R1			(0x804U)
389 #define SMMU_GNSR1_CBAR2			(0x8U)
390 #define SMMU_GNSR1_CBFRSYNRA2			(0x408U)
391 #define SMMU_GNSR1_CBA2R2			(0x808U)
392 #define SMMU_GNSR1_CBAR3			(0xcU)
393 #define SMMU_GNSR1_CBFRSYNRA3			(0x40cU)
394 #define SMMU_GNSR1_CBA2R3			(0x80cU)
395 #define SMMU_GNSR1_CBAR4			(0x10U)
396 #define SMMU_GNSR1_CBFRSYNRA4			(0x410U)
397 #define SMMU_GNSR1_CBA2R4			(0x810U)
398 #define SMMU_GNSR1_CBAR5			(0x14U)
399 #define SMMU_GNSR1_CBFRSYNRA5			(0x414U)
400 #define SMMU_GNSR1_CBA2R5			(0x814U)
401 #define SMMU_GNSR1_CBAR6			(0x18U)
402 #define SMMU_GNSR1_CBFRSYNRA6			(0x418U)
403 #define SMMU_GNSR1_CBA2R6			(0x818U)
404 #define SMMU_GNSR1_CBAR7			(0x1cU)
405 #define SMMU_GNSR1_CBFRSYNRA7			(0x41cU)
406 #define SMMU_GNSR1_CBA2R7			(0x81cU)
407 #define SMMU_GNSR1_CBAR8			(0x20U)
408 #define SMMU_GNSR1_CBFRSYNRA8			(0x420U)
409 #define SMMU_GNSR1_CBA2R8			(0x820U)
410 #define SMMU_GNSR1_CBAR9			(0x24U)
411 #define SMMU_GNSR1_CBFRSYNRA9			(0x424U)
412 #define SMMU_GNSR1_CBA2R9			(0x824U)
413 #define SMMU_GNSR1_CBAR10			(0x28U)
414 #define SMMU_GNSR1_CBFRSYNRA10			(0x428U)
415 #define SMMU_GNSR1_CBA2R10			(0x828U)
416 #define SMMU_GNSR1_CBAR11			(0x2cU)
417 #define SMMU_GNSR1_CBFRSYNRA11			(0x42cU)
418 #define SMMU_GNSR1_CBA2R11			(0x82cU)
419 #define SMMU_GNSR1_CBAR12			(0x30U)
420 #define SMMU_GNSR1_CBFRSYNRA12			(0x430U)
421 #define SMMU_GNSR1_CBA2R12			(0x830U)
422 #define SMMU_GNSR1_CBAR13			(0x34U)
423 #define SMMU_GNSR1_CBFRSYNRA13			(0x434U)
424 #define SMMU_GNSR1_CBA2R13			(0x834U)
425 #define SMMU_GNSR1_CBAR14			(0x38U)
426 #define SMMU_GNSR1_CBFRSYNRA14			(0x438U)
427 #define SMMU_GNSR1_CBA2R14			(0x838U)
428 #define SMMU_GNSR1_CBAR15			(0x3cU)
429 #define SMMU_GNSR1_CBFRSYNRA15			(0x43cU)
430 #define SMMU_GNSR1_CBA2R15			(0x83cU)
431 #define SMMU_GNSR1_CBAR16			(0x40U)
432 #define SMMU_GNSR1_CBFRSYNRA16			(0x440U)
433 #define SMMU_GNSR1_CBA2R16			(0x840U)
434 #define SMMU_GNSR1_CBAR17			(0x44U)
435 #define SMMU_GNSR1_CBFRSYNRA17			(0x444U)
436 #define SMMU_GNSR1_CBA2R17			(0x844U)
437 #define SMMU_GNSR1_CBAR18			(0x48U)
438 #define SMMU_GNSR1_CBFRSYNRA18			(0x448U)
439 #define SMMU_GNSR1_CBA2R18			(0x848U)
440 #define SMMU_GNSR1_CBAR19			(0x4cU)
441 #define SMMU_GNSR1_CBFRSYNRA19			(0x44cU)
442 #define SMMU_GNSR1_CBA2R19			(0x84cU)
443 #define SMMU_GNSR1_CBAR20			(0x50U)
444 #define SMMU_GNSR1_CBFRSYNRA20			(0x450U)
445 #define SMMU_GNSR1_CBA2R20			(0x850U)
446 #define SMMU_GNSR1_CBAR21			(0x54U)
447 #define SMMU_GNSR1_CBFRSYNRA21			(0x454U)
448 #define SMMU_GNSR1_CBA2R21			(0x854U)
449 #define SMMU_GNSR1_CBAR22			(0x58U)
450 #define SMMU_GNSR1_CBFRSYNRA22			(0x458U)
451 #define SMMU_GNSR1_CBA2R22			(0x858U)
452 #define SMMU_GNSR1_CBAR23			(0x5cU)
453 #define SMMU_GNSR1_CBFRSYNRA23			(0x45cU)
454 #define SMMU_GNSR1_CBA2R23			(0x85cU)
455 #define SMMU_GNSR1_CBAR24			(0x60U)
456 #define SMMU_GNSR1_CBFRSYNRA24			(0x460U)
457 #define SMMU_GNSR1_CBA2R24			(0x860U)
458 #define SMMU_GNSR1_CBAR25			(0x64U)
459 #define SMMU_GNSR1_CBFRSYNRA25			(0x464U)
460 #define SMMU_GNSR1_CBA2R25			(0x864U)
461 #define SMMU_GNSR1_CBAR26			(0x68U)
462 #define SMMU_GNSR1_CBFRSYNRA26			(0x468U)
463 #define SMMU_GNSR1_CBA2R26			(0x868U)
464 #define SMMU_GNSR1_CBAR27			(0x6cU)
465 #define SMMU_GNSR1_CBFRSYNRA27			(0x46cU)
466 #define SMMU_GNSR1_CBA2R27			(0x86cU)
467 #define SMMU_GNSR1_CBAR28			(0x70U)
468 #define SMMU_GNSR1_CBFRSYNRA28			(0x470U)
469 #define SMMU_GNSR1_CBA2R28			(0x870U)
470 #define SMMU_GNSR1_CBAR29			(0x74U)
471 #define SMMU_GNSR1_CBFRSYNRA29			(0x474U)
472 #define SMMU_GNSR1_CBA2R29			(0x874U)
473 #define SMMU_GNSR1_CBAR30			(0x78U)
474 #define SMMU_GNSR1_CBFRSYNRA30			(0x478U)
475 #define SMMU_GNSR1_CBA2R30			(0x878U)
476 #define SMMU_GNSR1_CBAR31			(0x7cU)
477 #define SMMU_GNSR1_CBFRSYNRA31			(0x47cU)
478 #define SMMU_GNSR1_CBA2R31			(0x87cU)
479 #define SMMU_GNSR1_CBAR32			(0x80U)
480 #define SMMU_GNSR1_CBFRSYNRA32			(0x480U)
481 #define SMMU_GNSR1_CBA2R32			(0x880U)
482 #define SMMU_GNSR1_CBAR33			(0x84U)
483 #define SMMU_GNSR1_CBFRSYNRA33			(0x484U)
484 #define SMMU_GNSR1_CBA2R33			(0x884U)
485 #define SMMU_GNSR1_CBAR34			(0x88U)
486 #define SMMU_GNSR1_CBFRSYNRA34			(0x488U)
487 #define SMMU_GNSR1_CBA2R34			(0x888U)
488 #define SMMU_GNSR1_CBAR35			(0x8cU)
489 #define SMMU_GNSR1_CBFRSYNRA35			(0x48cU)
490 #define SMMU_GNSR1_CBA2R35			(0x88cU)
491 #define SMMU_GNSR1_CBAR36			(0x90U)
492 #define SMMU_GNSR1_CBFRSYNRA36			(0x490U)
493 #define SMMU_GNSR1_CBA2R36			(0x890U)
494 #define SMMU_GNSR1_CBAR37			(0x94U)
495 #define SMMU_GNSR1_CBFRSYNRA37			(0x494U)
496 #define SMMU_GNSR1_CBA2R37			(0x894U)
497 #define SMMU_GNSR1_CBAR38			(0x98U)
498 #define SMMU_GNSR1_CBFRSYNRA38			(0x498U)
499 #define SMMU_GNSR1_CBA2R38			(0x898U)
500 #define SMMU_GNSR1_CBAR39			(0x9cU)
501 #define SMMU_GNSR1_CBFRSYNRA39			(0x49cU)
502 #define SMMU_GNSR1_CBA2R39			(0x89cU)
503 #define SMMU_GNSR1_CBAR40			(0xa0U)
504 #define SMMU_GNSR1_CBFRSYNRA40			(0x4a0U)
505 #define SMMU_GNSR1_CBA2R40			(0x8a0U)
506 #define SMMU_GNSR1_CBAR41			(0xa4U)
507 #define SMMU_GNSR1_CBFRSYNRA41			(0x4a4U)
508 #define SMMU_GNSR1_CBA2R41			(0x8a4U)
509 #define SMMU_GNSR1_CBAR42			(0xa8U)
510 #define SMMU_GNSR1_CBFRSYNRA42			(0x4a8U)
511 #define SMMU_GNSR1_CBA2R42			(0x8a8U)
512 #define SMMU_GNSR1_CBAR43			(0xacU)
513 #define SMMU_GNSR1_CBFRSYNRA43			(0x4acU)
514 #define SMMU_GNSR1_CBA2R43			(0x8acU)
515 #define SMMU_GNSR1_CBAR44			(0xb0U)
516 #define SMMU_GNSR1_CBFRSYNRA44			(0x4b0U)
517 #define SMMU_GNSR1_CBA2R44			(0x8b0U)
518 #define SMMU_GNSR1_CBAR45			(0xb4U)
519 #define SMMU_GNSR1_CBFRSYNRA45			(0x4b4U)
520 #define SMMU_GNSR1_CBA2R45			(0x8b4U)
521 #define SMMU_GNSR1_CBAR46			(0xb8U)
522 #define SMMU_GNSR1_CBFRSYNRA46			(0x4b8U)
523 #define SMMU_GNSR1_CBA2R46			(0x8b8U)
524 #define SMMU_GNSR1_CBAR47			(0xbcU)
525 #define SMMU_GNSR1_CBFRSYNRA47			(0x4bcU)
526 #define SMMU_GNSR1_CBA2R47			(0x8bcU)
527 #define SMMU_GNSR1_CBAR48			(0xc0U)
528 #define SMMU_GNSR1_CBFRSYNRA48			(0x4c0U)
529 #define SMMU_GNSR1_CBA2R48			(0x8c0U)
530 #define SMMU_GNSR1_CBAR49			(0xc4U)
531 #define SMMU_GNSR1_CBFRSYNRA49			(0x4c4U)
532 #define SMMU_GNSR1_CBA2R49			(0x8c4U)
533 #define SMMU_GNSR1_CBAR50			(0xc8U)
534 #define SMMU_GNSR1_CBFRSYNRA50			(0x4c8U)
535 #define SMMU_GNSR1_CBA2R50			(0x8c8U)
536 #define SMMU_GNSR1_CBAR51			(0xccU)
537 #define SMMU_GNSR1_CBFRSYNRA51			(0x4ccU)
538 #define SMMU_GNSR1_CBA2R51			(0x8ccU)
539 #define SMMU_GNSR1_CBAR52			(0xd0U)
540 #define SMMU_GNSR1_CBFRSYNRA52			(0x4d0U)
541 #define SMMU_GNSR1_CBA2R52			(0x8d0U)
542 #define SMMU_GNSR1_CBAR53			(0xd4U)
543 #define SMMU_GNSR1_CBFRSYNRA53			(0x4d4U)
544 #define SMMU_GNSR1_CBA2R53			(0x8d4U)
545 #define SMMU_GNSR1_CBAR54			(0xd8U)
546 #define SMMU_GNSR1_CBFRSYNRA54			(0x4d8U)
547 #define SMMU_GNSR1_CBA2R54			(0x8d8U)
548 #define SMMU_GNSR1_CBAR55			(0xdcU)
549 #define SMMU_GNSR1_CBFRSYNRA55			(0x4dcU)
550 #define SMMU_GNSR1_CBA2R55			(0x8dcU)
551 #define SMMU_GNSR1_CBAR56			(0xe0U)
552 #define SMMU_GNSR1_CBFRSYNRA56			(0x4e0U)
553 #define SMMU_GNSR1_CBA2R56			(0x8e0U)
554 #define SMMU_GNSR1_CBAR57			(0xe4U)
555 #define SMMU_GNSR1_CBFRSYNRA57			(0x4e4U)
556 #define SMMU_GNSR1_CBA2R57			(0x8e4U)
557 #define SMMU_GNSR1_CBAR58			(0xe8U)
558 #define SMMU_GNSR1_CBFRSYNRA58			(0x4e8U)
559 #define SMMU_GNSR1_CBA2R58			(0x8e8U)
560 #define SMMU_GNSR1_CBAR59			(0xecU)
561 #define SMMU_GNSR1_CBFRSYNRA59			(0x4ecU)
562 #define SMMU_GNSR1_CBA2R59			(0x8ecU)
563 #define SMMU_GNSR1_CBAR60			(0xf0U)
564 #define SMMU_GNSR1_CBFRSYNRA60			(0x4f0U)
565 #define SMMU_GNSR1_CBA2R60			(0x8f0U)
566 #define SMMU_GNSR1_CBAR61			(0xf4U)
567 #define SMMU_GNSR1_CBFRSYNRA61			(0x4f4U)
568 #define SMMU_GNSR1_CBA2R61			(0x8f4U)
569 #define SMMU_GNSR1_CBAR62			(0xf8U)
570 #define SMMU_GNSR1_CBFRSYNRA62			(0x4f8U)
571 #define SMMU_GNSR1_CBA2R62			(0x8f8U)
572 #define SMMU_GNSR1_CBAR63			(0xfcU)
573 #define SMMU_GNSR1_CBFRSYNRA63			(0x4fcU)
574 #define SMMU_GNSR1_CBA2R63			(0x8fcU)
575 
576 /*******************************************************************************
577  * SMMU Global Secure Aux. Configuration Register
578  ******************************************************************************/
579 #define SMMU_GSR0_SECURE_ACR			0x10U
580 #define SMMU_GNSR_ACR				(SMMU_GSR0_SECURE_ACR + 0x400U)
581 #define SMMU_GSR0_PGSIZE_SHIFT			16U
582 #define SMMU_GSR0_PGSIZE_4K			(0U << SMMU_GSR0_PGSIZE_SHIFT)
583 #define SMMU_GSR0_PGSIZE_64K			(1U << SMMU_GSR0_PGSIZE_SHIFT)
584 #define SMMU_ACR_CACHE_LOCK_ENABLE_BIT		(1U << 26)
585 
586 /*******************************************************************************
587  * SMMU Global Aux. Control Register
588  ******************************************************************************/
589 #define SMMU_CBn_ACTLR_CPRE_BIT			(1ULL << 1U)
590 
591 /*******************************************************************************
592  * SMMU configuration constants
593  ******************************************************************************/
594 #define ID1_PAGESIZE				(1U << 31U)
595 #define ID1_NUMPAGENDXB_SHIFT			28U
596 #define ID1_NUMPAGENDXB_MASK			7U
597 #define ID1_NUMS2CB_SHIFT			16U
598 #define ID1_NUMS2CB_MASK			0xffU
599 #define ID1_NUMCB_SHIFT				0U
600 #define ID1_NUMCB_MASK				0xffU
601 #define PGSHIFT					16U
602 #define CB_SIZE					0x800000U
603 
604 typedef struct smmu_regs {
605 	uint32_t reg;
606 	uint32_t val;
607 } smmu_regs_t;
608 
609 #define mc_make_sid_override_cfg(name) \
610 	{ \
611 		.reg = TEGRA_MC_STREAMID_BASE + MC_STREAMID_OVERRIDE_CFG_ ## name, \
612 		.val = 0x00000000U, \
613 	}
614 
615 #define mc_make_sid_security_cfg(name) \
616 	{ \
617 		.reg = TEGRA_MC_STREAMID_BASE + MC_STREAMID_OVERRIDE_TO_SECURITY_CFG(MC_STREAMID_OVERRIDE_CFG_ ## name), \
618 		.val = 0x00000000U, \
619 	}
620 
621 #define smmu_make_gnsr0_sec_cfg(base_addr, name) \
622 	{ \
623 		.reg = base_addr + SMMU_GNSR0_ ## name, \
624 		.val = 0x00000000U, \
625 	}
626 
627 /*
628  * On ARM-SMMU, conditional offset to access secure aliases of non-secure registers
629  * is 0x400. So, add it to register address
630  */
631 #define smmu_make_gnsr0_nsec_cfg(base_addr, name) \
632 	{ \
633 		.reg = base_addr + 0x400U + SMMU_GNSR0_ ## name, \
634 		.val = 0x00000000U, \
635 	}
636 
637 #define smmu_make_gnsr0_smr_cfg(base_addr, n) \
638 	{ \
639 		.reg = base_addr + SMMU_GNSR0_SMR ## n, \
640 		.val = 0x00000000U, \
641 	}
642 
643 #define smmu_make_gnsr0_s2cr_cfg(base_addr, n) \
644 	{ \
645 		.reg = base_addr + SMMU_GNSR0_S2CR ## n, \
646 		.val = 0x00000000U, \
647 	}
648 
649 #define smmu_make_gnsr1_cbar_cfg(base_addr, n) \
650 	{ \
651 		.reg = base_addr + (1U << PGSHIFT) + SMMU_GNSR1_CBAR ## n, \
652 		.val = 0x00000000U, \
653 	}
654 
655 #define smmu_make_gnsr1_cba2r_cfg(base_addr, n) \
656 	{ \
657 		.reg = base_addr + (1U << PGSHIFT) + SMMU_GNSR1_CBA2R ## n, \
658 		.val = 0x00000000U, \
659 	}
660 
661 #define smmu_make_cb_cfg(base_addr, name, n) \
662 	{ \
663 		.reg = base_addr + (CB_SIZE >> 1) + (n * (1 << PGSHIFT)) \
664 			+ SMMU_CBn_ ## name, \
665 		.val = 0x00000000U, \
666 	}
667 
668 #define smmu_make_smrg_group(base_addr, n)	\
669 	smmu_make_gnsr0_smr_cfg(base_addr, n),	\
670 	smmu_make_gnsr0_s2cr_cfg(base_addr, n),	\
671 	smmu_make_gnsr1_cbar_cfg(base_addr, n),	\
672 	smmu_make_gnsr1_cba2r_cfg(base_addr, n)	/* don't put "," here. */
673 
674 #define smmu_make_cb_group(base_addr, n)		\
675 	smmu_make_cb_cfg(base_addr, SCTLR, n),	\
676 	smmu_make_cb_cfg(base_addr, TCR2, n),	\
677 	smmu_make_cb_cfg(base_addr, TTBR0_LO, n),	\
678 	smmu_make_cb_cfg(base_addr, TTBR0_HI, n),	\
679 	smmu_make_cb_cfg(base_addr, TCR, n),	\
680 	smmu_make_cb_cfg(base_addr, PRRR_MAIR0, n),\
681 	smmu_make_cb_cfg(base_addr, FSR, n),	\
682 	smmu_make_cb_cfg(base_addr, FAR_LO, n),	\
683 	smmu_make_cb_cfg(base_addr, FAR_HI, n),	\
684 	smmu_make_cb_cfg(base_addr, FSYNR0, n)	/* don't put "," here. */
685 
686 #define smmu_make_cfg(base_addr)			\
687 	smmu_make_gnsr0_nsec_cfg(base_addr, CR0),	\
688 	smmu_make_gnsr0_sec_cfg(base_addr, IDR0),	\
689 	smmu_make_gnsr0_sec_cfg(base_addr, IDR1),	\
690 	smmu_make_gnsr0_sec_cfg(base_addr, IDR2),	\
691 	smmu_make_gnsr0_nsec_cfg(base_addr, GFSR),	\
692 	smmu_make_gnsr0_nsec_cfg(base_addr, GFSYNR0),	\
693 	smmu_make_gnsr0_nsec_cfg(base_addr, GFSYNR1),	\
694 	smmu_make_gnsr0_nsec_cfg(base_addr, TLBGSTATUS),\
695 	smmu_make_gnsr0_nsec_cfg(base_addr, PIDR2),	\
696 	smmu_make_smrg_group(base_addr, 0),		\
697 	smmu_make_smrg_group(base_addr, 1),		\
698 	smmu_make_smrg_group(base_addr, 2),		\
699 	smmu_make_smrg_group(base_addr, 3),		\
700 	smmu_make_smrg_group(base_addr, 4),		\
701 	smmu_make_smrg_group(base_addr, 5),		\
702 	smmu_make_smrg_group(base_addr, 6),		\
703 	smmu_make_smrg_group(base_addr, 7),		\
704 	smmu_make_smrg_group(base_addr, 8),		\
705 	smmu_make_smrg_group(base_addr, 9),		\
706 	smmu_make_smrg_group(base_addr, 10),		\
707 	smmu_make_smrg_group(base_addr, 11),		\
708 	smmu_make_smrg_group(base_addr, 12),		\
709 	smmu_make_smrg_group(base_addr, 13),		\
710 	smmu_make_smrg_group(base_addr, 14),		\
711 	smmu_make_smrg_group(base_addr, 15),		\
712 	smmu_make_smrg_group(base_addr, 16),		\
713 	smmu_make_smrg_group(base_addr, 17),		\
714 	smmu_make_smrg_group(base_addr, 18),		\
715 	smmu_make_smrg_group(base_addr, 19),		\
716 	smmu_make_smrg_group(base_addr, 20),		\
717 	smmu_make_smrg_group(base_addr, 21),		\
718 	smmu_make_smrg_group(base_addr, 22),		\
719 	smmu_make_smrg_group(base_addr, 23),		\
720 	smmu_make_smrg_group(base_addr, 24),		\
721 	smmu_make_smrg_group(base_addr, 25),		\
722 	smmu_make_smrg_group(base_addr, 26),		\
723 	smmu_make_smrg_group(base_addr, 27),		\
724 	smmu_make_smrg_group(base_addr, 28),		\
725 	smmu_make_smrg_group(base_addr, 29),		\
726 	smmu_make_smrg_group(base_addr, 30),		\
727 	smmu_make_smrg_group(base_addr, 31),		\
728 	smmu_make_smrg_group(base_addr, 32),		\
729 	smmu_make_smrg_group(base_addr, 33),		\
730 	smmu_make_smrg_group(base_addr, 34),		\
731 	smmu_make_smrg_group(base_addr, 35),		\
732 	smmu_make_smrg_group(base_addr, 36),		\
733 	smmu_make_smrg_group(base_addr, 37),		\
734 	smmu_make_smrg_group(base_addr, 38),		\
735 	smmu_make_smrg_group(base_addr, 39),		\
736 	smmu_make_smrg_group(base_addr, 40),		\
737 	smmu_make_smrg_group(base_addr, 41),		\
738 	smmu_make_smrg_group(base_addr, 42),		\
739 	smmu_make_smrg_group(base_addr, 43),		\
740 	smmu_make_smrg_group(base_addr, 44),		\
741 	smmu_make_smrg_group(base_addr, 45),		\
742 	smmu_make_smrg_group(base_addr, 46),		\
743 	smmu_make_smrg_group(base_addr, 47),		\
744 	smmu_make_smrg_group(base_addr, 48),		\
745 	smmu_make_smrg_group(base_addr, 49),		\
746 	smmu_make_smrg_group(base_addr, 50),		\
747 	smmu_make_smrg_group(base_addr, 51),		\
748 	smmu_make_smrg_group(base_addr, 52),		\
749 	smmu_make_smrg_group(base_addr, 53),		\
750 	smmu_make_smrg_group(base_addr, 54),		\
751 	smmu_make_smrg_group(base_addr, 55),		\
752 	smmu_make_smrg_group(base_addr, 56),		\
753 	smmu_make_smrg_group(base_addr, 57),		\
754 	smmu_make_smrg_group(base_addr, 58),		\
755 	smmu_make_smrg_group(base_addr, 59),		\
756 	smmu_make_smrg_group(base_addr, 60),		\
757 	smmu_make_smrg_group(base_addr, 61),		\
758 	smmu_make_smrg_group(base_addr, 62),		\
759 	smmu_make_smrg_group(base_addr, 63),		\
760 	smmu_make_cb_group(base_addr, 0),		\
761 	smmu_make_cb_group(base_addr, 1),		\
762 	smmu_make_cb_group(base_addr, 2),		\
763 	smmu_make_cb_group(base_addr, 3),		\
764 	smmu_make_cb_group(base_addr, 4),		\
765 	smmu_make_cb_group(base_addr, 5),		\
766 	smmu_make_cb_group(base_addr, 6),		\
767 	smmu_make_cb_group(base_addr, 7),		\
768 	smmu_make_cb_group(base_addr, 8),		\
769 	smmu_make_cb_group(base_addr, 9),		\
770 	smmu_make_cb_group(base_addr, 10),		\
771 	smmu_make_cb_group(base_addr, 11),		\
772 	smmu_make_cb_group(base_addr, 12),		\
773 	smmu_make_cb_group(base_addr, 13),		\
774 	smmu_make_cb_group(base_addr, 14),		\
775 	smmu_make_cb_group(base_addr, 15),		\
776 	smmu_make_cb_group(base_addr, 16),		\
777 	smmu_make_cb_group(base_addr, 17),		\
778 	smmu_make_cb_group(base_addr, 18),		\
779 	smmu_make_cb_group(base_addr, 19),		\
780 	smmu_make_cb_group(base_addr, 20),		\
781 	smmu_make_cb_group(base_addr, 21),		\
782 	smmu_make_cb_group(base_addr, 22),		\
783 	smmu_make_cb_group(base_addr, 23),		\
784 	smmu_make_cb_group(base_addr, 24),		\
785 	smmu_make_cb_group(base_addr, 25),		\
786 	smmu_make_cb_group(base_addr, 26),		\
787 	smmu_make_cb_group(base_addr, 27),		\
788 	smmu_make_cb_group(base_addr, 28),		\
789 	smmu_make_cb_group(base_addr, 29),		\
790 	smmu_make_cb_group(base_addr, 30),		\
791 	smmu_make_cb_group(base_addr, 31),		\
792 	smmu_make_cb_group(base_addr, 32),		\
793 	smmu_make_cb_group(base_addr, 33),		\
794 	smmu_make_cb_group(base_addr, 34),		\
795 	smmu_make_cb_group(base_addr, 35),		\
796 	smmu_make_cb_group(base_addr, 36),		\
797 	smmu_make_cb_group(base_addr, 37),		\
798 	smmu_make_cb_group(base_addr, 38),		\
799 	smmu_make_cb_group(base_addr, 39),		\
800 	smmu_make_cb_group(base_addr, 40),		\
801 	smmu_make_cb_group(base_addr, 41),		\
802 	smmu_make_cb_group(base_addr, 42),		\
803 	smmu_make_cb_group(base_addr, 43),		\
804 	smmu_make_cb_group(base_addr, 44),		\
805 	smmu_make_cb_group(base_addr, 45),		\
806 	smmu_make_cb_group(base_addr, 46),		\
807 	smmu_make_cb_group(base_addr, 47),		\
808 	smmu_make_cb_group(base_addr, 48),		\
809 	smmu_make_cb_group(base_addr, 49),		\
810 	smmu_make_cb_group(base_addr, 50),		\
811 	smmu_make_cb_group(base_addr, 51),		\
812 	smmu_make_cb_group(base_addr, 52),		\
813 	smmu_make_cb_group(base_addr, 53),		\
814 	smmu_make_cb_group(base_addr, 54),		\
815 	smmu_make_cb_group(base_addr, 55),		\
816 	smmu_make_cb_group(base_addr, 56),		\
817 	smmu_make_cb_group(base_addr, 57),		\
818 	smmu_make_cb_group(base_addr, 58),		\
819 	smmu_make_cb_group(base_addr, 59),		\
820 	smmu_make_cb_group(base_addr, 60),		\
821 	smmu_make_cb_group(base_addr, 61),		\
822 	smmu_make_cb_group(base_addr, 62),		\
823 	smmu_make_cb_group(base_addr, 63)	/* don't put "," here. */
824 
825 #define smmu_bypass_cfg \
826 	{ \
827 		.reg = TEGRA_MC_BASE + MC_SMMU_BYPASS_CONFIG, \
828 		.val = 0x00000000U, \
829 	}
830 
831 #define _START_OF_TABLE_ \
832 	{ \
833 		.reg = 0xCAFE05C7U, \
834 		.val = 0x00000000U, \
835 	}
836 
837 #define _END_OF_TABLE_ \
838 	{ \
839 		.reg = 0xFFFFFFFFU, \
840 		.val = 0xFFFFFFFFU, \
841 	}
842 
843 
844 void tegra_smmu_init(void);
845 void tegra_smmu_save_context(uint64_t smmu_ctx_addr);
846 smmu_regs_t *plat_get_smmu_ctx(void);
847 uint32_t plat_get_num_smmu_devices(void);
848 
849 #endif /* SMMU_H */
850