xref: /OK3568_Linux_fs/kernel/drivers/memory/tegra/tegra114.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (C) 2014 NVIDIA CORPORATION.  All rights reserved.
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #include <linux/of.h>
7*4882a593Smuzhiyun #include <linux/mm.h>
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <dt-bindings/memory/tegra114-mc.h>
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #include "mc.h"
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun static const struct tegra_mc_client tegra114_mc_clients[] = {
14*4882a593Smuzhiyun 	{
15*4882a593Smuzhiyun 		.id = 0x00,
16*4882a593Smuzhiyun 		.name = "ptcr",
17*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_PTC,
18*4882a593Smuzhiyun 	}, {
19*4882a593Smuzhiyun 		.id = 0x01,
20*4882a593Smuzhiyun 		.name = "display0a",
21*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_DC,
22*4882a593Smuzhiyun 		.smmu = {
23*4882a593Smuzhiyun 			.reg = 0x228,
24*4882a593Smuzhiyun 			.bit = 1,
25*4882a593Smuzhiyun 		},
26*4882a593Smuzhiyun 		.la = {
27*4882a593Smuzhiyun 			.reg = 0x2e8,
28*4882a593Smuzhiyun 			.shift = 0,
29*4882a593Smuzhiyun 			.mask = 0xff,
30*4882a593Smuzhiyun 			.def = 0x4e,
31*4882a593Smuzhiyun 		},
32*4882a593Smuzhiyun 	}, {
33*4882a593Smuzhiyun 		.id = 0x02,
34*4882a593Smuzhiyun 		.name = "display0ab",
35*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_DCB,
36*4882a593Smuzhiyun 		.smmu = {
37*4882a593Smuzhiyun 			.reg = 0x228,
38*4882a593Smuzhiyun 			.bit = 2,
39*4882a593Smuzhiyun 		},
40*4882a593Smuzhiyun 		.la = {
41*4882a593Smuzhiyun 			.reg = 0x2f4,
42*4882a593Smuzhiyun 			.shift = 0,
43*4882a593Smuzhiyun 			.mask = 0xff,
44*4882a593Smuzhiyun 			.def = 0x4e,
45*4882a593Smuzhiyun 		},
46*4882a593Smuzhiyun 	}, {
47*4882a593Smuzhiyun 		.id = 0x03,
48*4882a593Smuzhiyun 		.name = "display0b",
49*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_DC,
50*4882a593Smuzhiyun 		.smmu = {
51*4882a593Smuzhiyun 			.reg = 0x228,
52*4882a593Smuzhiyun 			.bit = 3,
53*4882a593Smuzhiyun 		},
54*4882a593Smuzhiyun 		.la = {
55*4882a593Smuzhiyun 			.reg = 0x2e8,
56*4882a593Smuzhiyun 			.shift = 16,
57*4882a593Smuzhiyun 			.mask = 0xff,
58*4882a593Smuzhiyun 			.def = 0x4e,
59*4882a593Smuzhiyun 		},
60*4882a593Smuzhiyun 	}, {
61*4882a593Smuzhiyun 		.id = 0x04,
62*4882a593Smuzhiyun 		.name = "display0bb",
63*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_DCB,
64*4882a593Smuzhiyun 		.smmu = {
65*4882a593Smuzhiyun 			.reg = 0x228,
66*4882a593Smuzhiyun 			.bit = 4,
67*4882a593Smuzhiyun 		},
68*4882a593Smuzhiyun 		.la = {
69*4882a593Smuzhiyun 			.reg = 0x2f4,
70*4882a593Smuzhiyun 			.shift = 16,
71*4882a593Smuzhiyun 			.mask = 0xff,
72*4882a593Smuzhiyun 			.def = 0x4e,
73*4882a593Smuzhiyun 		},
74*4882a593Smuzhiyun 	}, {
75*4882a593Smuzhiyun 		.id = 0x05,
76*4882a593Smuzhiyun 		.name = "display0c",
77*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_DC,
78*4882a593Smuzhiyun 		.smmu = {
79*4882a593Smuzhiyun 			.reg = 0x228,
80*4882a593Smuzhiyun 			.bit = 5,
81*4882a593Smuzhiyun 		},
82*4882a593Smuzhiyun 		.la = {
83*4882a593Smuzhiyun 			.reg = 0x2ec,
84*4882a593Smuzhiyun 			.shift = 0,
85*4882a593Smuzhiyun 			.mask = 0xff,
86*4882a593Smuzhiyun 			.def = 0x4e,
87*4882a593Smuzhiyun 		},
88*4882a593Smuzhiyun 	}, {
89*4882a593Smuzhiyun 		.id = 0x06,
90*4882a593Smuzhiyun 		.name = "display0cb",
91*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_DCB,
92*4882a593Smuzhiyun 		.smmu = {
93*4882a593Smuzhiyun 			.reg = 0x228,
94*4882a593Smuzhiyun 			.bit = 6,
95*4882a593Smuzhiyun 		},
96*4882a593Smuzhiyun 		.la = {
97*4882a593Smuzhiyun 			.reg = 0x2f8,
98*4882a593Smuzhiyun 			.shift = 0,
99*4882a593Smuzhiyun 			.mask = 0xff,
100*4882a593Smuzhiyun 			.def = 0x4e,
101*4882a593Smuzhiyun 		},
102*4882a593Smuzhiyun 	}, {
103*4882a593Smuzhiyun 		.id = 0x09,
104*4882a593Smuzhiyun 		.name = "eppup",
105*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_EPP,
106*4882a593Smuzhiyun 		.smmu = {
107*4882a593Smuzhiyun 			.reg = 0x228,
108*4882a593Smuzhiyun 			.bit = 9,
109*4882a593Smuzhiyun 		},
110*4882a593Smuzhiyun 		.la = {
111*4882a593Smuzhiyun 			.reg = 0x300,
112*4882a593Smuzhiyun 			.shift = 0,
113*4882a593Smuzhiyun 			.mask = 0xff,
114*4882a593Smuzhiyun 			.def = 0x33,
115*4882a593Smuzhiyun 		},
116*4882a593Smuzhiyun 	}, {
117*4882a593Smuzhiyun 		.id = 0x0a,
118*4882a593Smuzhiyun 		.name = "g2pr",
119*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_G2,
120*4882a593Smuzhiyun 		.smmu = {
121*4882a593Smuzhiyun 			.reg = 0x228,
122*4882a593Smuzhiyun 			.bit = 10,
123*4882a593Smuzhiyun 		},
124*4882a593Smuzhiyun 		.la = {
125*4882a593Smuzhiyun 			.reg = 0x308,
126*4882a593Smuzhiyun 			.shift = 0,
127*4882a593Smuzhiyun 			.mask = 0xff,
128*4882a593Smuzhiyun 			.def = 0x09,
129*4882a593Smuzhiyun 		},
130*4882a593Smuzhiyun 	}, {
131*4882a593Smuzhiyun 		.id = 0x0b,
132*4882a593Smuzhiyun 		.name = "g2sr",
133*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_G2,
134*4882a593Smuzhiyun 		.smmu = {
135*4882a593Smuzhiyun 			.reg = 0x228,
136*4882a593Smuzhiyun 			.bit = 11,
137*4882a593Smuzhiyun 		},
138*4882a593Smuzhiyun 		.la = {
139*4882a593Smuzhiyun 			.reg = 0x308,
140*4882a593Smuzhiyun 			.shift = 16,
141*4882a593Smuzhiyun 			.mask = 0xff,
142*4882a593Smuzhiyun 			.def = 0x09,
143*4882a593Smuzhiyun 		},
144*4882a593Smuzhiyun 	}, {
145*4882a593Smuzhiyun 		.id = 0x0f,
146*4882a593Smuzhiyun 		.name = "avpcarm7r",
147*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_AVPC,
148*4882a593Smuzhiyun 		.smmu = {
149*4882a593Smuzhiyun 			.reg = 0x228,
150*4882a593Smuzhiyun 			.bit = 15,
151*4882a593Smuzhiyun 		},
152*4882a593Smuzhiyun 		.la = {
153*4882a593Smuzhiyun 			.reg = 0x2e4,
154*4882a593Smuzhiyun 			.shift = 0,
155*4882a593Smuzhiyun 			.mask = 0xff,
156*4882a593Smuzhiyun 			.def = 0x04,
157*4882a593Smuzhiyun 		},
158*4882a593Smuzhiyun 	}, {
159*4882a593Smuzhiyun 		.id = 0x10,
160*4882a593Smuzhiyun 		.name = "displayhc",
161*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_DC,
162*4882a593Smuzhiyun 		.smmu = {
163*4882a593Smuzhiyun 			.reg = 0x228,
164*4882a593Smuzhiyun 			.bit = 16,
165*4882a593Smuzhiyun 		},
166*4882a593Smuzhiyun 		.la = {
167*4882a593Smuzhiyun 			.reg = 0x2f0,
168*4882a593Smuzhiyun 			.shift = 0,
169*4882a593Smuzhiyun 			.mask = 0xff,
170*4882a593Smuzhiyun 			.def = 0x68,
171*4882a593Smuzhiyun 		},
172*4882a593Smuzhiyun 	}, {
173*4882a593Smuzhiyun 		.id = 0x11,
174*4882a593Smuzhiyun 		.name = "displayhcb",
175*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_DCB,
176*4882a593Smuzhiyun 		.smmu = {
177*4882a593Smuzhiyun 			.reg = 0x228,
178*4882a593Smuzhiyun 			.bit = 17,
179*4882a593Smuzhiyun 		},
180*4882a593Smuzhiyun 		.la = {
181*4882a593Smuzhiyun 			.reg = 0x2fc,
182*4882a593Smuzhiyun 			.shift = 0,
183*4882a593Smuzhiyun 			.mask = 0xff,
184*4882a593Smuzhiyun 			.def = 0x68,
185*4882a593Smuzhiyun 		},
186*4882a593Smuzhiyun 	}, {
187*4882a593Smuzhiyun 		.id = 0x12,
188*4882a593Smuzhiyun 		.name = "fdcdrd",
189*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_NV,
190*4882a593Smuzhiyun 		.smmu = {
191*4882a593Smuzhiyun 			.reg = 0x228,
192*4882a593Smuzhiyun 			.bit = 18,
193*4882a593Smuzhiyun 		},
194*4882a593Smuzhiyun 		.la = {
195*4882a593Smuzhiyun 			.reg = 0x334,
196*4882a593Smuzhiyun 			.shift = 0,
197*4882a593Smuzhiyun 			.mask = 0xff,
198*4882a593Smuzhiyun 			.def = 0x0c,
199*4882a593Smuzhiyun 		},
200*4882a593Smuzhiyun 	}, {
201*4882a593Smuzhiyun 		.id = 0x13,
202*4882a593Smuzhiyun 		.name = "fdcdrd2",
203*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_NV,
204*4882a593Smuzhiyun 		.smmu = {
205*4882a593Smuzhiyun 			.reg = 0x228,
206*4882a593Smuzhiyun 			.bit = 19,
207*4882a593Smuzhiyun 		},
208*4882a593Smuzhiyun 		.la = {
209*4882a593Smuzhiyun 			.reg = 0x33c,
210*4882a593Smuzhiyun 			.shift = 0,
211*4882a593Smuzhiyun 			.mask = 0xff,
212*4882a593Smuzhiyun 			.def = 0x0c,
213*4882a593Smuzhiyun 		},
214*4882a593Smuzhiyun 	}, {
215*4882a593Smuzhiyun 		.id = 0x14,
216*4882a593Smuzhiyun 		.name = "g2dr",
217*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_G2,
218*4882a593Smuzhiyun 		.smmu = {
219*4882a593Smuzhiyun 			.reg = 0x228,
220*4882a593Smuzhiyun 			.bit = 20,
221*4882a593Smuzhiyun 		},
222*4882a593Smuzhiyun 		.la = {
223*4882a593Smuzhiyun 			.reg = 0x30c,
224*4882a593Smuzhiyun 			.shift = 0,
225*4882a593Smuzhiyun 			.mask = 0xff,
226*4882a593Smuzhiyun 			.def = 0x0a,
227*4882a593Smuzhiyun 		},
228*4882a593Smuzhiyun 	}, {
229*4882a593Smuzhiyun 		.id = 0x15,
230*4882a593Smuzhiyun 		.name = "hdar",
231*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_HDA,
232*4882a593Smuzhiyun 		.smmu = {
233*4882a593Smuzhiyun 			.reg = 0x228,
234*4882a593Smuzhiyun 			.bit = 21,
235*4882a593Smuzhiyun 		},
236*4882a593Smuzhiyun 		.la = {
237*4882a593Smuzhiyun 			.reg = 0x318,
238*4882a593Smuzhiyun 			.shift = 0,
239*4882a593Smuzhiyun 			.mask = 0xff,
240*4882a593Smuzhiyun 			.def = 0xff,
241*4882a593Smuzhiyun 		},
242*4882a593Smuzhiyun 	}, {
243*4882a593Smuzhiyun 		.id = 0x16,
244*4882a593Smuzhiyun 		.name = "host1xdmar",
245*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_HC,
246*4882a593Smuzhiyun 		.smmu = {
247*4882a593Smuzhiyun 			.reg = 0x228,
248*4882a593Smuzhiyun 			.bit = 22,
249*4882a593Smuzhiyun 		},
250*4882a593Smuzhiyun 		.la = {
251*4882a593Smuzhiyun 			.reg = 0x310,
252*4882a593Smuzhiyun 			.shift = 0,
253*4882a593Smuzhiyun 			.mask = 0xff,
254*4882a593Smuzhiyun 			.def = 0x10,
255*4882a593Smuzhiyun 		},
256*4882a593Smuzhiyun 	}, {
257*4882a593Smuzhiyun 		.id = 0x17,
258*4882a593Smuzhiyun 		.name = "host1xr",
259*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_HC,
260*4882a593Smuzhiyun 		.smmu = {
261*4882a593Smuzhiyun 			.reg = 0x228,
262*4882a593Smuzhiyun 			.bit = 23,
263*4882a593Smuzhiyun 		},
264*4882a593Smuzhiyun 		.la = {
265*4882a593Smuzhiyun 			.reg = 0x310,
266*4882a593Smuzhiyun 			.shift = 16,
267*4882a593Smuzhiyun 			.mask = 0xff,
268*4882a593Smuzhiyun 			.def = 0xa5,
269*4882a593Smuzhiyun 		},
270*4882a593Smuzhiyun 	}, {
271*4882a593Smuzhiyun 		.id = 0x18,
272*4882a593Smuzhiyun 		.name = "idxsrd",
273*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_NV,
274*4882a593Smuzhiyun 		.smmu = {
275*4882a593Smuzhiyun 			.reg = 0x228,
276*4882a593Smuzhiyun 			.bit = 24,
277*4882a593Smuzhiyun 		},
278*4882a593Smuzhiyun 		.la = {
279*4882a593Smuzhiyun 			.reg = 0x334,
280*4882a593Smuzhiyun 			.shift = 16,
281*4882a593Smuzhiyun 			.mask = 0xff,
282*4882a593Smuzhiyun 			.def = 0x0b,
283*4882a593Smuzhiyun 		},
284*4882a593Smuzhiyun 	}, {
285*4882a593Smuzhiyun 		.id = 0x1c,
286*4882a593Smuzhiyun 		.name = "msencsrd",
287*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_MSENC,
288*4882a593Smuzhiyun 		.smmu = {
289*4882a593Smuzhiyun 			.reg = 0x228,
290*4882a593Smuzhiyun 			.bit = 28,
291*4882a593Smuzhiyun 		},
292*4882a593Smuzhiyun 		.la = {
293*4882a593Smuzhiyun 			.reg = 0x328,
294*4882a593Smuzhiyun 			.shift = 0,
295*4882a593Smuzhiyun 			.mask = 0xff,
296*4882a593Smuzhiyun 			.def = 0x80,
297*4882a593Smuzhiyun 		},
298*4882a593Smuzhiyun 	}, {
299*4882a593Smuzhiyun 		.id = 0x1d,
300*4882a593Smuzhiyun 		.name = "ppcsahbdmar",
301*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_PPCS,
302*4882a593Smuzhiyun 		.smmu = {
303*4882a593Smuzhiyun 			.reg = 0x228,
304*4882a593Smuzhiyun 			.bit = 29,
305*4882a593Smuzhiyun 		},
306*4882a593Smuzhiyun 		.la = {
307*4882a593Smuzhiyun 			.reg = 0x344,
308*4882a593Smuzhiyun 			.shift = 0,
309*4882a593Smuzhiyun 			.mask = 0xff,
310*4882a593Smuzhiyun 			.def = 0x50,
311*4882a593Smuzhiyun 		},
312*4882a593Smuzhiyun 	}, {
313*4882a593Smuzhiyun 		.id = 0x1e,
314*4882a593Smuzhiyun 		.name = "ppcsahbslvr",
315*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_PPCS,
316*4882a593Smuzhiyun 		.smmu = {
317*4882a593Smuzhiyun 			.reg = 0x228,
318*4882a593Smuzhiyun 			.bit = 30,
319*4882a593Smuzhiyun 		},
320*4882a593Smuzhiyun 		.la = {
321*4882a593Smuzhiyun 			.reg = 0x344,
322*4882a593Smuzhiyun 			.shift = 16,
323*4882a593Smuzhiyun 			.mask = 0xff,
324*4882a593Smuzhiyun 			.def = 0xe8,
325*4882a593Smuzhiyun 		},
326*4882a593Smuzhiyun 	}, {
327*4882a593Smuzhiyun 		.id = 0x20,
328*4882a593Smuzhiyun 		.name = "texl2srd",
329*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_NV,
330*4882a593Smuzhiyun 		.smmu = {
331*4882a593Smuzhiyun 			.reg = 0x22c,
332*4882a593Smuzhiyun 			.bit = 0,
333*4882a593Smuzhiyun 		},
334*4882a593Smuzhiyun 		.la = {
335*4882a593Smuzhiyun 			.reg = 0x338,
336*4882a593Smuzhiyun 			.shift = 0,
337*4882a593Smuzhiyun 			.mask = 0xff,
338*4882a593Smuzhiyun 			.def = 0x0c,
339*4882a593Smuzhiyun 		},
340*4882a593Smuzhiyun 	}, {
341*4882a593Smuzhiyun 		.id = 0x22,
342*4882a593Smuzhiyun 		.name = "vdebsevr",
343*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VDE,
344*4882a593Smuzhiyun 		.smmu = {
345*4882a593Smuzhiyun 			.reg = 0x22c,
346*4882a593Smuzhiyun 			.bit = 2,
347*4882a593Smuzhiyun 		},
348*4882a593Smuzhiyun 		.la = {
349*4882a593Smuzhiyun 			.reg = 0x354,
350*4882a593Smuzhiyun 			.shift = 0,
351*4882a593Smuzhiyun 			.mask = 0xff,
352*4882a593Smuzhiyun 			.def = 0xff,
353*4882a593Smuzhiyun 		},
354*4882a593Smuzhiyun 	}, {
355*4882a593Smuzhiyun 		.id = 0x23,
356*4882a593Smuzhiyun 		.name = "vdember",
357*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VDE,
358*4882a593Smuzhiyun 		.smmu = {
359*4882a593Smuzhiyun 			.reg = 0x22c,
360*4882a593Smuzhiyun 			.bit = 3,
361*4882a593Smuzhiyun 		},
362*4882a593Smuzhiyun 		.la = {
363*4882a593Smuzhiyun 			.reg = 0x354,
364*4882a593Smuzhiyun 			.shift = 16,
365*4882a593Smuzhiyun 			.mask = 0xff,
366*4882a593Smuzhiyun 			.def = 0xff,
367*4882a593Smuzhiyun 		},
368*4882a593Smuzhiyun 	}, {
369*4882a593Smuzhiyun 		.id = 0x24,
370*4882a593Smuzhiyun 		.name = "vdemcer",
371*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VDE,
372*4882a593Smuzhiyun 		.smmu = {
373*4882a593Smuzhiyun 			.reg = 0x22c,
374*4882a593Smuzhiyun 			.bit = 4,
375*4882a593Smuzhiyun 		},
376*4882a593Smuzhiyun 		.la = {
377*4882a593Smuzhiyun 			.reg = 0x358,
378*4882a593Smuzhiyun 			.shift = 0,
379*4882a593Smuzhiyun 			.mask = 0xff,
380*4882a593Smuzhiyun 			.def = 0xb8,
381*4882a593Smuzhiyun 		},
382*4882a593Smuzhiyun 	}, {
383*4882a593Smuzhiyun 		.id = 0x25,
384*4882a593Smuzhiyun 		.name = "vdetper",
385*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VDE,
386*4882a593Smuzhiyun 		.smmu = {
387*4882a593Smuzhiyun 			.reg = 0x22c,
388*4882a593Smuzhiyun 			.bit = 5,
389*4882a593Smuzhiyun 		},
390*4882a593Smuzhiyun 		.la = {
391*4882a593Smuzhiyun 			.reg = 0x358,
392*4882a593Smuzhiyun 			.shift = 16,
393*4882a593Smuzhiyun 			.mask = 0xff,
394*4882a593Smuzhiyun 			.def = 0xee,
395*4882a593Smuzhiyun 		},
396*4882a593Smuzhiyun 	}, {
397*4882a593Smuzhiyun 		.id = 0x26,
398*4882a593Smuzhiyun 		.name = "mpcorelpr",
399*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_MPCORELP,
400*4882a593Smuzhiyun 		.la = {
401*4882a593Smuzhiyun 			.reg = 0x324,
402*4882a593Smuzhiyun 			.shift = 0,
403*4882a593Smuzhiyun 			.mask = 0xff,
404*4882a593Smuzhiyun 			.def = 0x04,
405*4882a593Smuzhiyun 		},
406*4882a593Smuzhiyun 	}, {
407*4882a593Smuzhiyun 		.id = 0x27,
408*4882a593Smuzhiyun 		.name = "mpcorer",
409*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_MPCORE,
410*4882a593Smuzhiyun 		.la = {
411*4882a593Smuzhiyun 			.reg = 0x320,
412*4882a593Smuzhiyun 			.shift = 0,
413*4882a593Smuzhiyun 			.mask = 0xff,
414*4882a593Smuzhiyun 			.def = 0x04,
415*4882a593Smuzhiyun 		},
416*4882a593Smuzhiyun 	}, {
417*4882a593Smuzhiyun 		.id = 0x28,
418*4882a593Smuzhiyun 		.name = "eppu",
419*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_EPP,
420*4882a593Smuzhiyun 		.smmu = {
421*4882a593Smuzhiyun 			.reg = 0x22c,
422*4882a593Smuzhiyun 			.bit = 8,
423*4882a593Smuzhiyun 		},
424*4882a593Smuzhiyun 		.la = {
425*4882a593Smuzhiyun 			.reg = 0x300,
426*4882a593Smuzhiyun 			.shift = 16,
427*4882a593Smuzhiyun 			.mask = 0xff,
428*4882a593Smuzhiyun 			.def = 0x33,
429*4882a593Smuzhiyun 		},
430*4882a593Smuzhiyun 	}, {
431*4882a593Smuzhiyun 		.id = 0x29,
432*4882a593Smuzhiyun 		.name = "eppv",
433*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_EPP,
434*4882a593Smuzhiyun 		.smmu = {
435*4882a593Smuzhiyun 			.reg = 0x22c,
436*4882a593Smuzhiyun 			.bit = 9,
437*4882a593Smuzhiyun 		},
438*4882a593Smuzhiyun 		.la = {
439*4882a593Smuzhiyun 			.reg = 0x304,
440*4882a593Smuzhiyun 			.shift = 0,
441*4882a593Smuzhiyun 			.mask = 0xff,
442*4882a593Smuzhiyun 			.def = 0x6c,
443*4882a593Smuzhiyun 		},
444*4882a593Smuzhiyun 	}, {
445*4882a593Smuzhiyun 		.id = 0x2a,
446*4882a593Smuzhiyun 		.name = "eppy",
447*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_EPP,
448*4882a593Smuzhiyun 		.smmu = {
449*4882a593Smuzhiyun 			.reg = 0x22c,
450*4882a593Smuzhiyun 			.bit = 10,
451*4882a593Smuzhiyun 		},
452*4882a593Smuzhiyun 		.la = {
453*4882a593Smuzhiyun 			.reg = 0x304,
454*4882a593Smuzhiyun 			.shift = 16,
455*4882a593Smuzhiyun 			.mask = 0xff,
456*4882a593Smuzhiyun 			.def = 0x6c,
457*4882a593Smuzhiyun 		},
458*4882a593Smuzhiyun 	}, {
459*4882a593Smuzhiyun 		.id = 0x2b,
460*4882a593Smuzhiyun 		.name = "msencswr",
461*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_MSENC,
462*4882a593Smuzhiyun 		.smmu = {
463*4882a593Smuzhiyun 			.reg = 0x22c,
464*4882a593Smuzhiyun 			.bit = 11,
465*4882a593Smuzhiyun 		},
466*4882a593Smuzhiyun 		.la = {
467*4882a593Smuzhiyun 			.reg = 0x328,
468*4882a593Smuzhiyun 			.shift = 16,
469*4882a593Smuzhiyun 			.mask = 0xff,
470*4882a593Smuzhiyun 			.def = 0x80,
471*4882a593Smuzhiyun 		},
472*4882a593Smuzhiyun 	}, {
473*4882a593Smuzhiyun 		.id = 0x2c,
474*4882a593Smuzhiyun 		.name = "viwsb",
475*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VI,
476*4882a593Smuzhiyun 		.smmu = {
477*4882a593Smuzhiyun 			.reg = 0x22c,
478*4882a593Smuzhiyun 			.bit = 12,
479*4882a593Smuzhiyun 		},
480*4882a593Smuzhiyun 		.la = {
481*4882a593Smuzhiyun 			.reg = 0x364,
482*4882a593Smuzhiyun 			.shift = 0,
483*4882a593Smuzhiyun 			.mask = 0xff,
484*4882a593Smuzhiyun 			.def = 0x47,
485*4882a593Smuzhiyun 		},
486*4882a593Smuzhiyun 	}, {
487*4882a593Smuzhiyun 		.id = 0x2d,
488*4882a593Smuzhiyun 		.name = "viwu",
489*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VI,
490*4882a593Smuzhiyun 		.smmu = {
491*4882a593Smuzhiyun 			.reg = 0x22c,
492*4882a593Smuzhiyun 			.bit = 13,
493*4882a593Smuzhiyun 		},
494*4882a593Smuzhiyun 		.la = {
495*4882a593Smuzhiyun 			.reg = 0x368,
496*4882a593Smuzhiyun 			.shift = 0,
497*4882a593Smuzhiyun 			.mask = 0xff,
498*4882a593Smuzhiyun 			.def = 0xff,
499*4882a593Smuzhiyun 		},
500*4882a593Smuzhiyun 	}, {
501*4882a593Smuzhiyun 		.id = 0x2e,
502*4882a593Smuzhiyun 		.name = "viwv",
503*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VI,
504*4882a593Smuzhiyun 		.smmu = {
505*4882a593Smuzhiyun 			.reg = 0x22c,
506*4882a593Smuzhiyun 			.bit = 14,
507*4882a593Smuzhiyun 		},
508*4882a593Smuzhiyun 		.la = {
509*4882a593Smuzhiyun 			.reg = 0x368,
510*4882a593Smuzhiyun 			.shift = 16,
511*4882a593Smuzhiyun 			.mask = 0xff,
512*4882a593Smuzhiyun 			.def = 0xff,
513*4882a593Smuzhiyun 		},
514*4882a593Smuzhiyun 	}, {
515*4882a593Smuzhiyun 		.id = 0x2f,
516*4882a593Smuzhiyun 		.name = "viwy",
517*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VI,
518*4882a593Smuzhiyun 		.smmu = {
519*4882a593Smuzhiyun 			.reg = 0x22c,
520*4882a593Smuzhiyun 			.bit = 15,
521*4882a593Smuzhiyun 		},
522*4882a593Smuzhiyun 		.la = {
523*4882a593Smuzhiyun 			.reg = 0x36c,
524*4882a593Smuzhiyun 			.shift = 0,
525*4882a593Smuzhiyun 			.mask = 0xff,
526*4882a593Smuzhiyun 			.def = 0x47,
527*4882a593Smuzhiyun 		},
528*4882a593Smuzhiyun 	}, {
529*4882a593Smuzhiyun 		.id = 0x30,
530*4882a593Smuzhiyun 		.name = "g2dw",
531*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_G2,
532*4882a593Smuzhiyun 		.smmu = {
533*4882a593Smuzhiyun 			.reg = 0x22c,
534*4882a593Smuzhiyun 			.bit = 16,
535*4882a593Smuzhiyun 		},
536*4882a593Smuzhiyun 		.la = {
537*4882a593Smuzhiyun 			.reg = 0x30c,
538*4882a593Smuzhiyun 			.shift = 16,
539*4882a593Smuzhiyun 			.mask = 0xff,
540*4882a593Smuzhiyun 			.def = 0x9,
541*4882a593Smuzhiyun 		},
542*4882a593Smuzhiyun 	}, {
543*4882a593Smuzhiyun 		.id = 0x32,
544*4882a593Smuzhiyun 		.name = "avpcarm7w",
545*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_AVPC,
546*4882a593Smuzhiyun 		.smmu = {
547*4882a593Smuzhiyun 			.reg = 0x22c,
548*4882a593Smuzhiyun 			.bit = 18,
549*4882a593Smuzhiyun 		},
550*4882a593Smuzhiyun 		.la = {
551*4882a593Smuzhiyun 			.reg = 0x2e4,
552*4882a593Smuzhiyun 			.shift = 16,
553*4882a593Smuzhiyun 			.mask = 0xff,
554*4882a593Smuzhiyun 			.def = 0x0e,
555*4882a593Smuzhiyun 		},
556*4882a593Smuzhiyun 	}, {
557*4882a593Smuzhiyun 		.id = 0x33,
558*4882a593Smuzhiyun 		.name = "fdcdwr",
559*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_NV,
560*4882a593Smuzhiyun 		.smmu = {
561*4882a593Smuzhiyun 			.reg = 0x22c,
562*4882a593Smuzhiyun 			.bit = 19,
563*4882a593Smuzhiyun 		},
564*4882a593Smuzhiyun 		.la = {
565*4882a593Smuzhiyun 			.reg = 0x338,
566*4882a593Smuzhiyun 			.shift = 16,
567*4882a593Smuzhiyun 			.mask = 0xff,
568*4882a593Smuzhiyun 			.def = 0x10,
569*4882a593Smuzhiyun 		},
570*4882a593Smuzhiyun 	}, {
571*4882a593Smuzhiyun 		.id = 0x34,
572*4882a593Smuzhiyun 		.name = "fdcdwr2",
573*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_NV,
574*4882a593Smuzhiyun 		.smmu = {
575*4882a593Smuzhiyun 			.reg = 0x22c,
576*4882a593Smuzhiyun 			.bit = 20,
577*4882a593Smuzhiyun 		},
578*4882a593Smuzhiyun 		.la = {
579*4882a593Smuzhiyun 			.reg = 0x340,
580*4882a593Smuzhiyun 			.shift = 0,
581*4882a593Smuzhiyun 			.mask = 0xff,
582*4882a593Smuzhiyun 			.def = 0x10,
583*4882a593Smuzhiyun 		},
584*4882a593Smuzhiyun 	}, {
585*4882a593Smuzhiyun 		.id = 0x35,
586*4882a593Smuzhiyun 		.name = "hdaw",
587*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_HDA,
588*4882a593Smuzhiyun 		.smmu = {
589*4882a593Smuzhiyun 			.reg = 0x22c,
590*4882a593Smuzhiyun 			.bit = 21,
591*4882a593Smuzhiyun 		},
592*4882a593Smuzhiyun 		.la = {
593*4882a593Smuzhiyun 			.reg = 0x318,
594*4882a593Smuzhiyun 			.shift = 16,
595*4882a593Smuzhiyun 			.mask = 0xff,
596*4882a593Smuzhiyun 			.def = 0xff,
597*4882a593Smuzhiyun 		},
598*4882a593Smuzhiyun 	}, {
599*4882a593Smuzhiyun 		.id = 0x36,
600*4882a593Smuzhiyun 		.name = "host1xw",
601*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_HC,
602*4882a593Smuzhiyun 		.smmu = {
603*4882a593Smuzhiyun 			.reg = 0x22c,
604*4882a593Smuzhiyun 			.bit = 22,
605*4882a593Smuzhiyun 		},
606*4882a593Smuzhiyun 		.la = {
607*4882a593Smuzhiyun 			.reg = 0x314,
608*4882a593Smuzhiyun 			.shift = 0,
609*4882a593Smuzhiyun 			.mask = 0xff,
610*4882a593Smuzhiyun 			.def = 0x25,
611*4882a593Smuzhiyun 		},
612*4882a593Smuzhiyun 	}, {
613*4882a593Smuzhiyun 		.id = 0x37,
614*4882a593Smuzhiyun 		.name = "ispw",
615*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_ISP,
616*4882a593Smuzhiyun 		.smmu = {
617*4882a593Smuzhiyun 			.reg = 0x22c,
618*4882a593Smuzhiyun 			.bit = 23,
619*4882a593Smuzhiyun 		},
620*4882a593Smuzhiyun 		.la = {
621*4882a593Smuzhiyun 			.reg = 0x31c,
622*4882a593Smuzhiyun 			.shift = 0,
623*4882a593Smuzhiyun 			.mask = 0xff,
624*4882a593Smuzhiyun 			.def = 0xff,
625*4882a593Smuzhiyun 		},
626*4882a593Smuzhiyun 	}, {
627*4882a593Smuzhiyun 		.id = 0x38,
628*4882a593Smuzhiyun 		.name = "mpcorelpw",
629*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_MPCORELP,
630*4882a593Smuzhiyun 		.la = {
631*4882a593Smuzhiyun 			.reg = 0x324,
632*4882a593Smuzhiyun 			.shift = 16,
633*4882a593Smuzhiyun 			.mask = 0xff,
634*4882a593Smuzhiyun 			.def = 0x80,
635*4882a593Smuzhiyun 		},
636*4882a593Smuzhiyun 	}, {
637*4882a593Smuzhiyun 		.id = 0x39,
638*4882a593Smuzhiyun 		.name = "mpcorew",
639*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_MPCORE,
640*4882a593Smuzhiyun 		.la = {
641*4882a593Smuzhiyun 			.reg = 0x320,
642*4882a593Smuzhiyun 			.shift = 16,
643*4882a593Smuzhiyun 			.mask = 0xff,
644*4882a593Smuzhiyun 			.def = 0x0e,
645*4882a593Smuzhiyun 		},
646*4882a593Smuzhiyun 	}, {
647*4882a593Smuzhiyun 		.id = 0x3b,
648*4882a593Smuzhiyun 		.name = "ppcsahbdmaw",
649*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_PPCS,
650*4882a593Smuzhiyun 		.smmu = {
651*4882a593Smuzhiyun 			.reg = 0x22c,
652*4882a593Smuzhiyun 			.bit = 27,
653*4882a593Smuzhiyun 		},
654*4882a593Smuzhiyun 		.la = {
655*4882a593Smuzhiyun 			.reg = 0x348,
656*4882a593Smuzhiyun 			.shift = 0,
657*4882a593Smuzhiyun 			.mask = 0xff,
658*4882a593Smuzhiyun 			.def = 0xa5,
659*4882a593Smuzhiyun 		},
660*4882a593Smuzhiyun 	}, {
661*4882a593Smuzhiyun 		.id = 0x3c,
662*4882a593Smuzhiyun 		.name = "ppcsahbslvw",
663*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_PPCS,
664*4882a593Smuzhiyun 		.smmu = {
665*4882a593Smuzhiyun 			.reg = 0x22c,
666*4882a593Smuzhiyun 			.bit = 28,
667*4882a593Smuzhiyun 		},
668*4882a593Smuzhiyun 		.la = {
669*4882a593Smuzhiyun 			.reg = 0x348,
670*4882a593Smuzhiyun 			.shift = 16,
671*4882a593Smuzhiyun 			.mask = 0xff,
672*4882a593Smuzhiyun 			.def = 0xe8,
673*4882a593Smuzhiyun 		},
674*4882a593Smuzhiyun 	}, {
675*4882a593Smuzhiyun 		.id = 0x3e,
676*4882a593Smuzhiyun 		.name = "vdebsevw",
677*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VDE,
678*4882a593Smuzhiyun 		.smmu = {
679*4882a593Smuzhiyun 			.reg = 0x22c,
680*4882a593Smuzhiyun 			.bit = 30,
681*4882a593Smuzhiyun 		},
682*4882a593Smuzhiyun 		.la = {
683*4882a593Smuzhiyun 			.reg = 0x35c,
684*4882a593Smuzhiyun 			.shift = 0,
685*4882a593Smuzhiyun 			.mask = 0xff,
686*4882a593Smuzhiyun 			.def = 0xff,
687*4882a593Smuzhiyun 		},
688*4882a593Smuzhiyun 	}, {
689*4882a593Smuzhiyun 		.id = 0x3f,
690*4882a593Smuzhiyun 		.name = "vdedbgw",
691*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VDE,
692*4882a593Smuzhiyun 		.smmu = {
693*4882a593Smuzhiyun 			.reg = 0x22c,
694*4882a593Smuzhiyun 			.bit = 31,
695*4882a593Smuzhiyun 		},
696*4882a593Smuzhiyun 		.la = {
697*4882a593Smuzhiyun 			.reg = 0x35c,
698*4882a593Smuzhiyun 			.shift = 16,
699*4882a593Smuzhiyun 			.mask = 0xff,
700*4882a593Smuzhiyun 			.def = 0xff,
701*4882a593Smuzhiyun 		},
702*4882a593Smuzhiyun 	}, {
703*4882a593Smuzhiyun 		.id = 0x40,
704*4882a593Smuzhiyun 		.name = "vdembew",
705*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VDE,
706*4882a593Smuzhiyun 		.smmu = {
707*4882a593Smuzhiyun 			.reg = 0x230,
708*4882a593Smuzhiyun 			.bit = 0,
709*4882a593Smuzhiyun 		},
710*4882a593Smuzhiyun 		.la = {
711*4882a593Smuzhiyun 			.reg = 0x360,
712*4882a593Smuzhiyun 			.shift = 0,
713*4882a593Smuzhiyun 			.mask = 0xff,
714*4882a593Smuzhiyun 			.def = 0x89,
715*4882a593Smuzhiyun 		},
716*4882a593Smuzhiyun 	}, {
717*4882a593Smuzhiyun 		.id = 0x41,
718*4882a593Smuzhiyun 		.name = "vdetpmw",
719*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_VDE,
720*4882a593Smuzhiyun 		.smmu = {
721*4882a593Smuzhiyun 			.reg = 0x230,
722*4882a593Smuzhiyun 			.bit = 1,
723*4882a593Smuzhiyun 		},
724*4882a593Smuzhiyun 		.la = {
725*4882a593Smuzhiyun 			.reg = 0x360,
726*4882a593Smuzhiyun 			.shift = 16,
727*4882a593Smuzhiyun 			.mask = 0xff,
728*4882a593Smuzhiyun 			.def = 0x59,
729*4882a593Smuzhiyun 		},
730*4882a593Smuzhiyun 	}, {
731*4882a593Smuzhiyun 		.id = 0x4a,
732*4882a593Smuzhiyun 		.name = "xusb_hostr",
733*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_XUSB_HOST,
734*4882a593Smuzhiyun 		.smmu = {
735*4882a593Smuzhiyun 			.reg = 0x230,
736*4882a593Smuzhiyun 			.bit = 10,
737*4882a593Smuzhiyun 		},
738*4882a593Smuzhiyun 		.la = {
739*4882a593Smuzhiyun 			.reg = 0x37c,
740*4882a593Smuzhiyun 			.shift = 0,
741*4882a593Smuzhiyun 			.mask = 0xff,
742*4882a593Smuzhiyun 			.def = 0xa5,
743*4882a593Smuzhiyun 		},
744*4882a593Smuzhiyun 	}, {
745*4882a593Smuzhiyun 		.id = 0x4b,
746*4882a593Smuzhiyun 		.name = "xusb_hostw",
747*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_XUSB_HOST,
748*4882a593Smuzhiyun 		.smmu = {
749*4882a593Smuzhiyun 			.reg = 0x230,
750*4882a593Smuzhiyun 			.bit = 11,
751*4882a593Smuzhiyun 		},
752*4882a593Smuzhiyun 		.la = {
753*4882a593Smuzhiyun 			.reg = 0x37c,
754*4882a593Smuzhiyun 			.shift = 16,
755*4882a593Smuzhiyun 			.mask = 0xff,
756*4882a593Smuzhiyun 			.def = 0xa5,
757*4882a593Smuzhiyun 		},
758*4882a593Smuzhiyun 	}, {
759*4882a593Smuzhiyun 		.id = 0x4c,
760*4882a593Smuzhiyun 		.name = "xusb_devr",
761*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_XUSB_DEV,
762*4882a593Smuzhiyun 		.smmu = {
763*4882a593Smuzhiyun 			.reg = 0x230,
764*4882a593Smuzhiyun 			.bit = 12,
765*4882a593Smuzhiyun 		},
766*4882a593Smuzhiyun 		.la = {
767*4882a593Smuzhiyun 			.reg = 0x380,
768*4882a593Smuzhiyun 			.shift = 0,
769*4882a593Smuzhiyun 			.mask = 0xff,
770*4882a593Smuzhiyun 			.def = 0xa5,
771*4882a593Smuzhiyun 		},
772*4882a593Smuzhiyun 	}, {
773*4882a593Smuzhiyun 		.id = 0x4d,
774*4882a593Smuzhiyun 		.name = "xusb_devw",
775*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_XUSB_DEV,
776*4882a593Smuzhiyun 		.smmu = {
777*4882a593Smuzhiyun 			.reg = 0x230,
778*4882a593Smuzhiyun 			.bit = 13,
779*4882a593Smuzhiyun 		},
780*4882a593Smuzhiyun 		.la = {
781*4882a593Smuzhiyun 			.reg = 0x380,
782*4882a593Smuzhiyun 			.shift = 16,
783*4882a593Smuzhiyun 			.mask = 0xff,
784*4882a593Smuzhiyun 			.def = 0xa5,
785*4882a593Smuzhiyun 		},
786*4882a593Smuzhiyun 	}, {
787*4882a593Smuzhiyun 		.id = 0x4e,
788*4882a593Smuzhiyun 		.name = "fdcdwr3",
789*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_NV,
790*4882a593Smuzhiyun 		.smmu = {
791*4882a593Smuzhiyun 			.reg = 0x230,
792*4882a593Smuzhiyun 			.bit = 14,
793*4882a593Smuzhiyun 		},
794*4882a593Smuzhiyun 		.la = {
795*4882a593Smuzhiyun 			.reg = 0x388,
796*4882a593Smuzhiyun 			.shift = 0,
797*4882a593Smuzhiyun 			.mask = 0xff,
798*4882a593Smuzhiyun 			.def = 0x10,
799*4882a593Smuzhiyun 		},
800*4882a593Smuzhiyun 	}, {
801*4882a593Smuzhiyun 		.id = 0x4f,
802*4882a593Smuzhiyun 		.name = "fdcdrd3",
803*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_NV,
804*4882a593Smuzhiyun 		.smmu = {
805*4882a593Smuzhiyun 			.reg = 0x230,
806*4882a593Smuzhiyun 			.bit = 15,
807*4882a593Smuzhiyun 		},
808*4882a593Smuzhiyun 		.la = {
809*4882a593Smuzhiyun 			.reg = 0x384,
810*4882a593Smuzhiyun 			.shift = 0,
811*4882a593Smuzhiyun 			.mask = 0xff,
812*4882a593Smuzhiyun 			.def = 0x0c,
813*4882a593Smuzhiyun 		},
814*4882a593Smuzhiyun 	}, {
815*4882a593Smuzhiyun 		.id = 0x50,
816*4882a593Smuzhiyun 		.name = "fdcwr4",
817*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_NV,
818*4882a593Smuzhiyun 		.smmu = {
819*4882a593Smuzhiyun 			.reg = 0x230,
820*4882a593Smuzhiyun 			.bit = 16,
821*4882a593Smuzhiyun 		},
822*4882a593Smuzhiyun 		.la = {
823*4882a593Smuzhiyun 			.reg = 0x388,
824*4882a593Smuzhiyun 			.shift = 16,
825*4882a593Smuzhiyun 			.mask = 0xff,
826*4882a593Smuzhiyun 			.def = 0x10,
827*4882a593Smuzhiyun 		},
828*4882a593Smuzhiyun 	}, {
829*4882a593Smuzhiyun 		.id = 0x51,
830*4882a593Smuzhiyun 		.name = "fdcrd4",
831*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_NV,
832*4882a593Smuzhiyun 		.smmu = {
833*4882a593Smuzhiyun 			.reg = 0x230,
834*4882a593Smuzhiyun 			.bit = 17,
835*4882a593Smuzhiyun 		},
836*4882a593Smuzhiyun 		.la = {
837*4882a593Smuzhiyun 			.reg = 0x384,
838*4882a593Smuzhiyun 			.shift = 16,
839*4882a593Smuzhiyun 			.mask = 0xff,
840*4882a593Smuzhiyun 			.def = 0x0c,
841*4882a593Smuzhiyun 		},
842*4882a593Smuzhiyun 	}, {
843*4882a593Smuzhiyun 		.id = 0x52,
844*4882a593Smuzhiyun 		.name = "emucifr",
845*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_EMUCIF,
846*4882a593Smuzhiyun 		.la = {
847*4882a593Smuzhiyun 			.reg = 0x38c,
848*4882a593Smuzhiyun 			.shift = 0,
849*4882a593Smuzhiyun 			.mask = 0xff,
850*4882a593Smuzhiyun 			.def = 0x04,
851*4882a593Smuzhiyun 		},
852*4882a593Smuzhiyun 	}, {
853*4882a593Smuzhiyun 		.id = 0x53,
854*4882a593Smuzhiyun 		.name = "emucifw",
855*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_EMUCIF,
856*4882a593Smuzhiyun 		.la = {
857*4882a593Smuzhiyun 			.reg = 0x38c,
858*4882a593Smuzhiyun 			.shift = 16,
859*4882a593Smuzhiyun 			.mask = 0xff,
860*4882a593Smuzhiyun 			.def = 0x0e,
861*4882a593Smuzhiyun 		},
862*4882a593Smuzhiyun 	}, {
863*4882a593Smuzhiyun 		.id = 0x54,
864*4882a593Smuzhiyun 		.name = "tsecsrd",
865*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_TSEC,
866*4882a593Smuzhiyun 		.smmu = {
867*4882a593Smuzhiyun 			.reg = 0x230,
868*4882a593Smuzhiyun 			.bit = 20,
869*4882a593Smuzhiyun 		},
870*4882a593Smuzhiyun 		.la = {
871*4882a593Smuzhiyun 			.reg = 0x390,
872*4882a593Smuzhiyun 			.shift = 0,
873*4882a593Smuzhiyun 			.mask = 0xff,
874*4882a593Smuzhiyun 			.def = 0x50,
875*4882a593Smuzhiyun 		},
876*4882a593Smuzhiyun 	}, {
877*4882a593Smuzhiyun 		.id = 0x55,
878*4882a593Smuzhiyun 		.name = "tsecswr",
879*4882a593Smuzhiyun 		.swgroup = TEGRA_SWGROUP_TSEC,
880*4882a593Smuzhiyun 		.smmu = {
881*4882a593Smuzhiyun 			.reg = 0x230,
882*4882a593Smuzhiyun 			.bit = 21,
883*4882a593Smuzhiyun 		},
884*4882a593Smuzhiyun 		.la = {
885*4882a593Smuzhiyun 			.reg = 0x390,
886*4882a593Smuzhiyun 			.shift = 16,
887*4882a593Smuzhiyun 			.mask = 0xff,
888*4882a593Smuzhiyun 			.def = 0x50,
889*4882a593Smuzhiyun 		},
890*4882a593Smuzhiyun 	},
891*4882a593Smuzhiyun };
892*4882a593Smuzhiyun 
893*4882a593Smuzhiyun static const struct tegra_smmu_swgroup tegra114_swgroups[] = {
894*4882a593Smuzhiyun 	{ .name = "dc",        .swgroup = TEGRA_SWGROUP_DC,        .reg = 0x240 },
895*4882a593Smuzhiyun 	{ .name = "dcb",       .swgroup = TEGRA_SWGROUP_DCB,       .reg = 0x244 },
896*4882a593Smuzhiyun 	{ .name = "epp",       .swgroup = TEGRA_SWGROUP_EPP,       .reg = 0x248 },
897*4882a593Smuzhiyun 	{ .name = "g2",        .swgroup = TEGRA_SWGROUP_G2,        .reg = 0x24c },
898*4882a593Smuzhiyun 	{ .name = "avpc",      .swgroup = TEGRA_SWGROUP_AVPC,      .reg = 0x23c },
899*4882a593Smuzhiyun 	{ .name = "nv",        .swgroup = TEGRA_SWGROUP_NV,        .reg = 0x268 },
900*4882a593Smuzhiyun 	{ .name = "hda",       .swgroup = TEGRA_SWGROUP_HDA,       .reg = 0x254 },
901*4882a593Smuzhiyun 	{ .name = "hc",        .swgroup = TEGRA_SWGROUP_HC,        .reg = 0x250 },
902*4882a593Smuzhiyun 	{ .name = "msenc",     .swgroup = TEGRA_SWGROUP_MSENC,     .reg = 0x264 },
903*4882a593Smuzhiyun 	{ .name = "ppcs",      .swgroup = TEGRA_SWGROUP_PPCS,      .reg = 0x270 },
904*4882a593Smuzhiyun 	{ .name = "vde",       .swgroup = TEGRA_SWGROUP_VDE,       .reg = 0x27c },
905*4882a593Smuzhiyun 	{ .name = "vi",        .swgroup = TEGRA_SWGROUP_VI,        .reg = 0x280 },
906*4882a593Smuzhiyun 	{ .name = "isp",       .swgroup = TEGRA_SWGROUP_ISP,       .reg = 0x258 },
907*4882a593Smuzhiyun 	{ .name = "xusb_host", .swgroup = TEGRA_SWGROUP_XUSB_HOST, .reg = 0x288 },
908*4882a593Smuzhiyun 	{ .name = "xusb_dev",  .swgroup = TEGRA_SWGROUP_XUSB_DEV,  .reg = 0x28c },
909*4882a593Smuzhiyun 	{ .name = "tsec",      .swgroup = TEGRA_SWGROUP_TSEC,      .reg = 0x294 },
910*4882a593Smuzhiyun };
911*4882a593Smuzhiyun 
912*4882a593Smuzhiyun static const unsigned int tegra114_group_drm[] = {
913*4882a593Smuzhiyun 	TEGRA_SWGROUP_DC,
914*4882a593Smuzhiyun 	TEGRA_SWGROUP_DCB,
915*4882a593Smuzhiyun 	TEGRA_SWGROUP_G2,
916*4882a593Smuzhiyun 	TEGRA_SWGROUP_NV,
917*4882a593Smuzhiyun };
918*4882a593Smuzhiyun 
919*4882a593Smuzhiyun static const struct tegra_smmu_group_soc tegra114_groups[] = {
920*4882a593Smuzhiyun 	{
921*4882a593Smuzhiyun 		.name = "drm",
922*4882a593Smuzhiyun 		.swgroups = tegra114_group_drm,
923*4882a593Smuzhiyun 		.num_swgroups = ARRAY_SIZE(tegra114_group_drm),
924*4882a593Smuzhiyun 	},
925*4882a593Smuzhiyun };
926*4882a593Smuzhiyun 
927*4882a593Smuzhiyun static const struct tegra_smmu_soc tegra114_smmu_soc = {
928*4882a593Smuzhiyun 	.clients = tegra114_mc_clients,
929*4882a593Smuzhiyun 	.num_clients = ARRAY_SIZE(tegra114_mc_clients),
930*4882a593Smuzhiyun 	.swgroups = tegra114_swgroups,
931*4882a593Smuzhiyun 	.num_swgroups = ARRAY_SIZE(tegra114_swgroups),
932*4882a593Smuzhiyun 	.groups = tegra114_groups,
933*4882a593Smuzhiyun 	.num_groups = ARRAY_SIZE(tegra114_groups),
934*4882a593Smuzhiyun 	.supports_round_robin_arbitration = false,
935*4882a593Smuzhiyun 	.supports_request_limit = false,
936*4882a593Smuzhiyun 	.num_tlb_lines = 32,
937*4882a593Smuzhiyun 	.num_asids = 4,
938*4882a593Smuzhiyun };
939*4882a593Smuzhiyun 
940*4882a593Smuzhiyun #define TEGRA114_MC_RESET(_name, _control, _status, _bit)	\
941*4882a593Smuzhiyun 	{							\
942*4882a593Smuzhiyun 		.name = #_name,					\
943*4882a593Smuzhiyun 		.id = TEGRA114_MC_RESET_##_name,		\
944*4882a593Smuzhiyun 		.control = _control,				\
945*4882a593Smuzhiyun 		.status = _status,				\
946*4882a593Smuzhiyun 		.bit = _bit,					\
947*4882a593Smuzhiyun 	}
948*4882a593Smuzhiyun 
949*4882a593Smuzhiyun static const struct tegra_mc_reset tegra114_mc_resets[] = {
950*4882a593Smuzhiyun 	TEGRA114_MC_RESET(AVPC,     0x200, 0x204,  1),
951*4882a593Smuzhiyun 	TEGRA114_MC_RESET(DC,       0x200, 0x204,  2),
952*4882a593Smuzhiyun 	TEGRA114_MC_RESET(DCB,      0x200, 0x204,  3),
953*4882a593Smuzhiyun 	TEGRA114_MC_RESET(EPP,      0x200, 0x204,  4),
954*4882a593Smuzhiyun 	TEGRA114_MC_RESET(2D,       0x200, 0x204,  5),
955*4882a593Smuzhiyun 	TEGRA114_MC_RESET(HC,       0x200, 0x204,  6),
956*4882a593Smuzhiyun 	TEGRA114_MC_RESET(HDA,      0x200, 0x204,  7),
957*4882a593Smuzhiyun 	TEGRA114_MC_RESET(ISP,      0x200, 0x204,  8),
958*4882a593Smuzhiyun 	TEGRA114_MC_RESET(MPCORE,   0x200, 0x204,  9),
959*4882a593Smuzhiyun 	TEGRA114_MC_RESET(MPCORELP, 0x200, 0x204, 10),
960*4882a593Smuzhiyun 	TEGRA114_MC_RESET(MPE,      0x200, 0x204, 11),
961*4882a593Smuzhiyun 	TEGRA114_MC_RESET(3D,       0x200, 0x204, 12),
962*4882a593Smuzhiyun 	TEGRA114_MC_RESET(3D2,      0x200, 0x204, 13),
963*4882a593Smuzhiyun 	TEGRA114_MC_RESET(PPCS,     0x200, 0x204, 14),
964*4882a593Smuzhiyun 	TEGRA114_MC_RESET(VDE,      0x200, 0x204, 16),
965*4882a593Smuzhiyun 	TEGRA114_MC_RESET(VI,       0x200, 0x204, 17),
966*4882a593Smuzhiyun };
967*4882a593Smuzhiyun 
968*4882a593Smuzhiyun const struct tegra_mc_soc tegra114_mc_soc = {
969*4882a593Smuzhiyun 	.clients = tegra114_mc_clients,
970*4882a593Smuzhiyun 	.num_clients = ARRAY_SIZE(tegra114_mc_clients),
971*4882a593Smuzhiyun 	.num_address_bits = 32,
972*4882a593Smuzhiyun 	.atom_size = 32,
973*4882a593Smuzhiyun 	.client_id_mask = 0x7f,
974*4882a593Smuzhiyun 	.smmu = &tegra114_smmu_soc,
975*4882a593Smuzhiyun 	.intmask = MC_INT_INVALID_SMMU_PAGE | MC_INT_SECURITY_VIOLATION |
976*4882a593Smuzhiyun 		   MC_INT_DECERR_EMEM,
977*4882a593Smuzhiyun 	.reset_ops = &tegra_mc_reset_ops_common,
978*4882a593Smuzhiyun 	.resets = tegra114_mc_resets,
979*4882a593Smuzhiyun 	.num_resets = ARRAY_SIZE(tegra114_mc_resets),
980*4882a593Smuzhiyun };
981