xref: /linux/drivers/memory/tegra/tegra238.c (revision 00599d4841790d05401820a96cf7edb193888b00)
1*907ef6a1SAshish Mhetre // SPDX-License-Identifier: GPL-2.0-only
2*907ef6a1SAshish Mhetre /*
3*907ef6a1SAshish Mhetre  * Copyright (C) 2026, NVIDIA CORPORATION.  All rights reserved.
4*907ef6a1SAshish Mhetre  */
5*907ef6a1SAshish Mhetre 
6*907ef6a1SAshish Mhetre #include <soc/tegra/mc.h>
7*907ef6a1SAshish Mhetre 
8*907ef6a1SAshish Mhetre #include <dt-bindings/memory/tegra234-mc.h>
9*907ef6a1SAshish Mhetre #include <dt-bindings/memory/nvidia,tegra238-mc.h>
10*907ef6a1SAshish Mhetre #include <linux/interconnect.h>
11*907ef6a1SAshish Mhetre #include <linux/tegra-icc.h>
12*907ef6a1SAshish Mhetre 
13*907ef6a1SAshish Mhetre #include <soc/tegra/bpmp.h>
14*907ef6a1SAshish Mhetre #include "mc.h"
15*907ef6a1SAshish Mhetre 
16*907ef6a1SAshish Mhetre static const struct tegra_mc_client tegra238_mc_clients[] = {
17*907ef6a1SAshish Mhetre 	{
18*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_HDAR,
19*907ef6a1SAshish Mhetre 		.name = "hdar",
20*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_HDA,
21*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_ISO_AUDIO,
22*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_HDA,
23*907ef6a1SAshish Mhetre 		.regs = {
24*907ef6a1SAshish Mhetre 			.sid = {
25*907ef6a1SAshish Mhetre 				.override = 0xa8,
26*907ef6a1SAshish Mhetre 				.security = 0xac,
27*907ef6a1SAshish Mhetre 			},
28*907ef6a1SAshish Mhetre 		},
29*907ef6a1SAshish Mhetre 	}, {
30*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_HDAW,
31*907ef6a1SAshish Mhetre 		.name = "hdaw",
32*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_HDA,
33*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_ISO_AUDIO,
34*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_HDA,
35*907ef6a1SAshish Mhetre 		.regs = {
36*907ef6a1SAshish Mhetre 			.sid = {
37*907ef6a1SAshish Mhetre 				.override = 0x1a8,
38*907ef6a1SAshish Mhetre 				.security = 0x1ac,
39*907ef6a1SAshish Mhetre 			},
40*907ef6a1SAshish Mhetre 		},
41*907ef6a1SAshish Mhetre 	}, {
42*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_SDMMCRAB,
43*907ef6a1SAshish Mhetre 		.name = "sdmmcrab",
44*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_SDMMC_4,
45*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
46*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_SDMMC4A,
47*907ef6a1SAshish Mhetre 		.regs = {
48*907ef6a1SAshish Mhetre 			.sid = {
49*907ef6a1SAshish Mhetre 				.override = 0x318,
50*907ef6a1SAshish Mhetre 				.security = 0x31c,
51*907ef6a1SAshish Mhetre 			},
52*907ef6a1SAshish Mhetre 		},
53*907ef6a1SAshish Mhetre 	}, {
54*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_SDMMCWAB,
55*907ef6a1SAshish Mhetre 		.name = "sdmmcwab",
56*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_SDMMC_4,
57*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
58*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_SDMMC4A,
59*907ef6a1SAshish Mhetre 		.regs = {
60*907ef6a1SAshish Mhetre 			.sid = {
61*907ef6a1SAshish Mhetre 				.override = 0x338,
62*907ef6a1SAshish Mhetre 				.security = 0x33c,
63*907ef6a1SAshish Mhetre 			},
64*907ef6a1SAshish Mhetre 		},
65*907ef6a1SAshish Mhetre 	}, {
66*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_APER,
67*907ef6a1SAshish Mhetre 		.name = "aper",
68*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_APE,
69*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_ISO_AUDIO,
70*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_ISO_APE0,
71*907ef6a1SAshish Mhetre 		.regs = {
72*907ef6a1SAshish Mhetre 			.sid = {
73*907ef6a1SAshish Mhetre 				.override = 0x3d0,
74*907ef6a1SAshish Mhetre 				.security = 0x3d4,
75*907ef6a1SAshish Mhetre 			},
76*907ef6a1SAshish Mhetre 		},
77*907ef6a1SAshish Mhetre 	}, {
78*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_APEW,
79*907ef6a1SAshish Mhetre 		.name = "apew",
80*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_APE,
81*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_ISO_AUDIO,
82*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_ISO_APE0,
83*907ef6a1SAshish Mhetre 		.regs = {
84*907ef6a1SAshish Mhetre 			.sid = {
85*907ef6a1SAshish Mhetre 				.override = 0x3d8,
86*907ef6a1SAshish Mhetre 				.security = 0x3dc,
87*907ef6a1SAshish Mhetre 			},
88*907ef6a1SAshish Mhetre 		},
89*907ef6a1SAshish Mhetre 	}, {
90*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_NVDISPLAYR,
91*907ef6a1SAshish Mhetre 		.name = "nvdisplayr",
92*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_DISPLAY,
93*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_ISO_DISPLAY,
94*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_ISO_NVDISPLAY,
95*907ef6a1SAshish Mhetre 		.regs = {
96*907ef6a1SAshish Mhetre 			.sid = {
97*907ef6a1SAshish Mhetre 				.override = 0x490,
98*907ef6a1SAshish Mhetre 				.security = 0x494,
99*907ef6a1SAshish Mhetre 			},
100*907ef6a1SAshish Mhetre 		},
101*907ef6a1SAshish Mhetre 	}, {
102*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_NVDISPLAYR1,
103*907ef6a1SAshish Mhetre 		.name = "nvdisplayr1",
104*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_DISPLAY,
105*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_ISO_DISPLAY,
106*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_ISO_NVDISPLAY,
107*907ef6a1SAshish Mhetre 		.regs = {
108*907ef6a1SAshish Mhetre 			.sid = {
109*907ef6a1SAshish Mhetre 				.override = 0x508,
110*907ef6a1SAshish Mhetre 				.security = 0x50c,
111*907ef6a1SAshish Mhetre 			},
112*907ef6a1SAshish Mhetre 		},
113*907ef6a1SAshish Mhetre 	}, {
114*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_BPMPR,
115*907ef6a1SAshish Mhetre 		.name = "bpmpr",
116*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_BPMP,
117*907ef6a1SAshish Mhetre 		.regs = {
118*907ef6a1SAshish Mhetre 			.sid = {
119*907ef6a1SAshish Mhetre 				.override = 0x498,
120*907ef6a1SAshish Mhetre 				.security = 0x49c,
121*907ef6a1SAshish Mhetre 			},
122*907ef6a1SAshish Mhetre 		},
123*907ef6a1SAshish Mhetre 	}, {
124*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_BPMPW,
125*907ef6a1SAshish Mhetre 		.name = "bpmpw",
126*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_BPMP,
127*907ef6a1SAshish Mhetre 		.regs = {
128*907ef6a1SAshish Mhetre 			.sid = {
129*907ef6a1SAshish Mhetre 				.override = 0x4a0,
130*907ef6a1SAshish Mhetre 				.security = 0x4a4,
131*907ef6a1SAshish Mhetre 			},
132*907ef6a1SAshish Mhetre 		},
133*907ef6a1SAshish Mhetre 	}, {
134*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_BPMPDMAR,
135*907ef6a1SAshish Mhetre 		.name = "bpmpdmar",
136*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_BPMP,
137*907ef6a1SAshish Mhetre 		.regs = {
138*907ef6a1SAshish Mhetre 			.sid = {
139*907ef6a1SAshish Mhetre 				.override = 0x4a8,
140*907ef6a1SAshish Mhetre 				.security = 0x4ac,
141*907ef6a1SAshish Mhetre 			},
142*907ef6a1SAshish Mhetre 		},
143*907ef6a1SAshish Mhetre 	}, {
144*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_BPMPDMAW,
145*907ef6a1SAshish Mhetre 		.name = "bpmpdmaw",
146*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_BPMP,
147*907ef6a1SAshish Mhetre 		.regs = {
148*907ef6a1SAshish Mhetre 			.sid = {
149*907ef6a1SAshish Mhetre 				.override = 0x4b0,
150*907ef6a1SAshish Mhetre 				.security = 0x4b4,
151*907ef6a1SAshish Mhetre 			},
152*907ef6a1SAshish Mhetre 		},
153*907ef6a1SAshish Mhetre 	}, {
154*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_APEDMAR,
155*907ef6a1SAshish Mhetre 		.name = "apedmar",
156*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_APEDMA,
157*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_ISO_AUDIO,
158*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_ISO_APE1,
159*907ef6a1SAshish Mhetre 		.regs = {
160*907ef6a1SAshish Mhetre 			.sid = {
161*907ef6a1SAshish Mhetre 				.override = 0x4f8,
162*907ef6a1SAshish Mhetre 				.security = 0x4fc,
163*907ef6a1SAshish Mhetre 			},
164*907ef6a1SAshish Mhetre 		},
165*907ef6a1SAshish Mhetre 	}, {
166*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_APEDMAW,
167*907ef6a1SAshish Mhetre 		.name = "apedmaw",
168*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_APEDMA,
169*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_ISO_AUDIO,
170*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_ISO_APE1,
171*907ef6a1SAshish Mhetre 		.regs = {
172*907ef6a1SAshish Mhetre 			.sid = {
173*907ef6a1SAshish Mhetre 				.override = 0x500,
174*907ef6a1SAshish Mhetre 				.security = 0x504,
175*907ef6a1SAshish Mhetre 			},
176*907ef6a1SAshish Mhetre 		},
177*907ef6a1SAshish Mhetre 	}, {
178*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_VICSRD,
179*907ef6a1SAshish Mhetre 		.name = "vicsrd",
180*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_VIC,
181*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
182*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_VIC,
183*907ef6a1SAshish Mhetre 		.regs = {
184*907ef6a1SAshish Mhetre 			.sid = {
185*907ef6a1SAshish Mhetre 				.override = 0x360,
186*907ef6a1SAshish Mhetre 				.security = 0x364,
187*907ef6a1SAshish Mhetre 			},
188*907ef6a1SAshish Mhetre 		},
189*907ef6a1SAshish Mhetre 	}, {
190*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_VICSWR,
191*907ef6a1SAshish Mhetre 		.name = "vicswr",
192*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_VIC,
193*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
194*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_VIC,
195*907ef6a1SAshish Mhetre 		.regs = {
196*907ef6a1SAshish Mhetre 			.sid = {
197*907ef6a1SAshish Mhetre 				.override = 0x368,
198*907ef6a1SAshish Mhetre 				.security = 0x36c,
199*907ef6a1SAshish Mhetre 			},
200*907ef6a1SAshish Mhetre 		},
201*907ef6a1SAshish Mhetre 	}, {
202*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_NVDECSRD,
203*907ef6a1SAshish Mhetre 		.name = "nvdecsrd",
204*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_NVDEC,
205*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
206*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_NVDEC,
207*907ef6a1SAshish Mhetre 		.regs = {
208*907ef6a1SAshish Mhetre 			.sid = {
209*907ef6a1SAshish Mhetre 				.override = 0x3c0,
210*907ef6a1SAshish Mhetre 				.security = 0x3c4,
211*907ef6a1SAshish Mhetre 			},
212*907ef6a1SAshish Mhetre 		},
213*907ef6a1SAshish Mhetre 	}, {
214*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_NVDECSWR,
215*907ef6a1SAshish Mhetre 		.name = "nvdecswr",
216*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_NVDEC,
217*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
218*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_NVDEC,
219*907ef6a1SAshish Mhetre 		.regs = {
220*907ef6a1SAshish Mhetre 			.sid = {
221*907ef6a1SAshish Mhetre 				.override = 0x3c8,
222*907ef6a1SAshish Mhetre 				.security = 0x3cc,
223*907ef6a1SAshish Mhetre 			},
224*907ef6a1SAshish Mhetre 		},
225*907ef6a1SAshish Mhetre 	}, {
226*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_NVENCSRD,
227*907ef6a1SAshish Mhetre 		.name = "nvencsrd",
228*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_NVENC,
229*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
230*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_NVENC,
231*907ef6a1SAshish Mhetre 		.regs = {
232*907ef6a1SAshish Mhetre 			.sid = {
233*907ef6a1SAshish Mhetre 				.override = 0xe0,
234*907ef6a1SAshish Mhetre 				.security = 0xe4,
235*907ef6a1SAshish Mhetre 			},
236*907ef6a1SAshish Mhetre 		},
237*907ef6a1SAshish Mhetre 	}, {
238*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_NVENCSWR,
239*907ef6a1SAshish Mhetre 		.name = "nvencswr",
240*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_NVENC,
241*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
242*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_NVENC,
243*907ef6a1SAshish Mhetre 		.regs = {
244*907ef6a1SAshish Mhetre 			.sid = {
245*907ef6a1SAshish Mhetre 				.override = 0x158,
246*907ef6a1SAshish Mhetre 				.security = 0x15c,
247*907ef6a1SAshish Mhetre 			},
248*907ef6a1SAshish Mhetre 		},
249*907ef6a1SAshish Mhetre 	}, {
250*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_PCIE0R,
251*907ef6a1SAshish Mhetre 		.name = "pcie0r",
252*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_PCIE_0,
253*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
254*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_PCIE0,
255*907ef6a1SAshish Mhetre 		.regs = {
256*907ef6a1SAshish Mhetre 			.sid = {
257*907ef6a1SAshish Mhetre 				.override = 0x6c0,
258*907ef6a1SAshish Mhetre 				.security = 0x6c4,
259*907ef6a1SAshish Mhetre 			},
260*907ef6a1SAshish Mhetre 		},
261*907ef6a1SAshish Mhetre 	}, {
262*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_PCIE0W,
263*907ef6a1SAshish Mhetre 		.name = "pcie0w",
264*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_PCIE_0,
265*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
266*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_PCIE0,
267*907ef6a1SAshish Mhetre 		.regs = {
268*907ef6a1SAshish Mhetre 			.sid = {
269*907ef6a1SAshish Mhetre 				.override = 0x6c8,
270*907ef6a1SAshish Mhetre 				.security = 0x6cc,
271*907ef6a1SAshish Mhetre 			},
272*907ef6a1SAshish Mhetre 		},
273*907ef6a1SAshish Mhetre 	}, {
274*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_PCIE1R,
275*907ef6a1SAshish Mhetre 		.name = "pcie1r",
276*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_PCIE_1,
277*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
278*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_PCIE1,
279*907ef6a1SAshish Mhetre 		.regs = {
280*907ef6a1SAshish Mhetre 			.sid = {
281*907ef6a1SAshish Mhetre 				.override = 0x6d0,
282*907ef6a1SAshish Mhetre 				.security = 0x6d4,
283*907ef6a1SAshish Mhetre 			},
284*907ef6a1SAshish Mhetre 		},
285*907ef6a1SAshish Mhetre 	}, {
286*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_PCIE1W,
287*907ef6a1SAshish Mhetre 		.name = "pcie1w",
288*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_PCIE_1,
289*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
290*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_PCIE1,
291*907ef6a1SAshish Mhetre 		.regs = {
292*907ef6a1SAshish Mhetre 			.sid = {
293*907ef6a1SAshish Mhetre 				.override = 0x6d8,
294*907ef6a1SAshish Mhetre 				.security = 0x6dc,
295*907ef6a1SAshish Mhetre 			},
296*907ef6a1SAshish Mhetre 		},
297*907ef6a1SAshish Mhetre 	}, {
298*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_PCIE2AR,
299*907ef6a1SAshish Mhetre 		.name = "pcie2ar",
300*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_PCIE_2,
301*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
302*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_PCIE2,
303*907ef6a1SAshish Mhetre 		.regs = {
304*907ef6a1SAshish Mhetre 			.sid = {
305*907ef6a1SAshish Mhetre 				.override = 0x6e0,
306*907ef6a1SAshish Mhetre 				.security = 0x6e4,
307*907ef6a1SAshish Mhetre 			},
308*907ef6a1SAshish Mhetre 		},
309*907ef6a1SAshish Mhetre 	}, {
310*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_PCIE2AW,
311*907ef6a1SAshish Mhetre 		.name = "pcie2aw",
312*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_PCIE_2,
313*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
314*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_PCIE2,
315*907ef6a1SAshish Mhetre 		.regs = {
316*907ef6a1SAshish Mhetre 			.sid = {
317*907ef6a1SAshish Mhetre 				.override = 0x6e8,
318*907ef6a1SAshish Mhetre 				.security = 0x6ec,
319*907ef6a1SAshish Mhetre 			},
320*907ef6a1SAshish Mhetre 		},
321*907ef6a1SAshish Mhetre 	}, {
322*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_PCIE3R,
323*907ef6a1SAshish Mhetre 		.name = "pcie3r",
324*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_PCIE_3,
325*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
326*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_PCIE3,
327*907ef6a1SAshish Mhetre 		.regs = {
328*907ef6a1SAshish Mhetre 			.sid = {
329*907ef6a1SAshish Mhetre 				.override = 0x6f0,
330*907ef6a1SAshish Mhetre 				.security = 0x6f4,
331*907ef6a1SAshish Mhetre 			},
332*907ef6a1SAshish Mhetre 		},
333*907ef6a1SAshish Mhetre 	}, {
334*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_PCIE3W,
335*907ef6a1SAshish Mhetre 		.name = "pcie3w",
336*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_PCIE_3,
337*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
338*907ef6a1SAshish Mhetre 		.sid = TEGRA238_SID_PCIE3,
339*907ef6a1SAshish Mhetre 		.regs = {
340*907ef6a1SAshish Mhetre 			.sid = {
341*907ef6a1SAshish Mhetre 				.override = 0x6f8,
342*907ef6a1SAshish Mhetre 				.security = 0x6fc,
343*907ef6a1SAshish Mhetre 			},
344*907ef6a1SAshish Mhetre 		},
345*907ef6a1SAshish Mhetre 	}, {
346*907ef6a1SAshish Mhetre 		.id = TEGRA_ICC_MC_CPU_CLUSTER0,
347*907ef6a1SAshish Mhetre 		.name = "sw_cluster0",
348*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_CPU_CLUSTER0,
349*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
350*907ef6a1SAshish Mhetre 	}, {
351*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_NVL1R,
352*907ef6a1SAshish Mhetre 		.name = "nvl1r",
353*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_GPU,
354*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
355*907ef6a1SAshish Mhetre 	}, {
356*907ef6a1SAshish Mhetre 		.id = TEGRA234_MEMORY_CLIENT_NVL1W,
357*907ef6a1SAshish Mhetre 		.name = "nvl1w",
358*907ef6a1SAshish Mhetre 		.bpmp_id = TEGRA_ICC_BPMP_GPU,
359*907ef6a1SAshish Mhetre 		.type = TEGRA_ICC_NISO,
360*907ef6a1SAshish Mhetre 	}
361*907ef6a1SAshish Mhetre };
362*907ef6a1SAshish Mhetre 
363*907ef6a1SAshish Mhetre static const struct tegra_mc_intmask tegra238_mc_intmasks[] = {
364*907ef6a1SAshish Mhetre 	{
365*907ef6a1SAshish Mhetre 		.reg = MC_INTMASK,
366*907ef6a1SAshish Mhetre 		.mask = MC_INT_DECERR_ROUTE_SANITY | MC_INT_DECERR_GENERALIZED_CARVEOUT |
367*907ef6a1SAshish Mhetre 			MC_INT_DECERR_MTS | MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
368*907ef6a1SAshish Mhetre 			MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM,
369*907ef6a1SAshish Mhetre 	},
370*907ef6a1SAshish Mhetre };
371*907ef6a1SAshish Mhetre 
372*907ef6a1SAshish Mhetre const struct tegra_mc_soc tegra238_mc_soc = {
373*907ef6a1SAshish Mhetre 	.num_clients = ARRAY_SIZE(tegra238_mc_clients),
374*907ef6a1SAshish Mhetre 	.clients = tegra238_mc_clients,
375*907ef6a1SAshish Mhetre 	.num_address_bits = 40,
376*907ef6a1SAshish Mhetre 	.num_channels = 8,
377*907ef6a1SAshish Mhetre 	.client_id_mask = 0x1ff,
378*907ef6a1SAshish Mhetre 	.intmasks = tegra238_mc_intmasks,
379*907ef6a1SAshish Mhetre 	.num_intmasks = ARRAY_SIZE(tegra238_mc_intmasks),
380*907ef6a1SAshish Mhetre 	.has_addr_hi_reg = true,
381*907ef6a1SAshish Mhetre 	.ops = &tegra186_mc_ops,
382*907ef6a1SAshish Mhetre 	.icc_ops = &tegra234_mc_icc_ops,
383*907ef6a1SAshish Mhetre 	.ch_intmask = 0x0000ff00,
384*907ef6a1SAshish Mhetre 	.global_intstatus_channel_shift = 8,
385*907ef6a1SAshish Mhetre 	.num_carveouts = 32,
386*907ef6a1SAshish Mhetre 	.regs = &tegra20_mc_regs,
387*907ef6a1SAshish Mhetre 	.handle_irq = tegra30_mc_irq_handlers,
388*907ef6a1SAshish Mhetre 	.num_interrupts = ARRAY_SIZE(tegra30_mc_irq_handlers),
389*907ef6a1SAshish Mhetre 	.mc_addr_hi_mask = 0x3,
390*907ef6a1SAshish Mhetre 	.mc_err_status_type_mask = (0x7 << 28),
391*907ef6a1SAshish Mhetre };
392