xref: /rk3399_ARM-atf/drivers/qti/accesscontrol/vmidmt/kodiak/vmidmt_static_config.c (revision 5de3e03dbd7c2da6748e294f423c83f9582f459c)
1 /*
2  * Copyright (c) 2026, Qualcomm Technologies, Inc. and/or its subsidiaries.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <stdbool.h>
8 
9 #include <lib/utils_def.h>
10 #include <vmidmt.h>
11 #include <vmidmt_internal.h>
12 
13 /* Configuration/options for each VMIDMT. */
14 const struct vmidmt_cfg g_vmidmt_cfg[] = {
15 	{ HAL_VMIDMT_IPA, VMIDMT_ERR_OPT, NULL, 0, 1 },
16 	/* Rennell.QUPV3 0 VMIDMT SMR 48 SSD6 SID6 MA48 SP48 36 */
17 	{ HAL_VMIDMT_QUPV3_0, VMIDMT_ERR_OPT, NULL, 0, 1 },
18 	/* Rennell.QUPV3 1 VMIDMT SMR 48 SSD6 SID6 MA48 SP48 36 */
19 	{ HAL_VMIDMT_QUPV3_1, VMIDMT_ERR_OPT, NULL, 0, 1 },
20 };
21 
22 const uint32_t g_vmidmt_cfg_count = ARRAY_SIZE(g_vmidmt_cfg);
23 
24 /* Mapping from master indices to VMIDs. */
25 const struct vmidmt_map g_vmid_map[] = {
26 	{ HAL_VMIDMT_IPA,
27 	  0,
28 	  { 0 },
29 	  1,
30 	  ACC_VMID_IPA_GP,
31 	  1,
32 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
33 	{ HAL_VMIDMT_IPA,
34 	  1,
35 	  { 1 },
36 	  1,
37 	  ACC_VMID_IPA_GP,
38 	  1,
39 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
40 	{ HAL_VMIDMT_IPA,
41 	  2,
42 	  { 2 },
43 	  1,
44 	  ACC_VMID_IPA_GP,
45 	  1,
46 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
47 	{ HAL_VMIDMT_IPA,
48 	  3,
49 	  { 3 },
50 	  1,
51 	  ACC_VMID_IPA_PERIPH_1,
52 	  1,
53 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
54 	{ HAL_VMIDMT_IPA,
55 	  4,
56 	  { 4 },
57 	  1,
58 	  ACC_VMID_IPA_GP,
59 	  1,
60 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
61 	{ HAL_VMIDMT_IPA,
62 	  5,
63 	  { 5 },
64 	  1,
65 	  ACC_VMID_NOACCESS,
66 	  1,
67 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
68 	{ HAL_VMIDMT_IPA,
69 	  6,
70 	  { 6 },
71 	  1,
72 	  ACC_VMID_NOACCESS,
73 	  1,
74 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
75 	{ HAL_VMIDMT_IPA,
76 	  7,
77 	  { 7 },
78 	  1,
79 	  ACC_VMID_IPA_GP,
80 	  1,
81 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
82 	{ HAL_VMIDMT_IPA,
83 	  8,
84 	  { 8 },
85 	  1,
86 	  ACC_VMID_NOACCESS,
87 	  1,
88 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
89 	{ HAL_VMIDMT_IPA,
90 	  9,
91 	  { 9 },
92 	  1,
93 	  ACC_VMID_IPA_GP,
94 	  1,
95 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
96 	{ HAL_VMIDMT_IPA,
97 	  10,
98 	  { 10 },
99 	  1,
100 	  ACC_VMID_NOACCESS,
101 	  1,
102 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
103 	{ HAL_VMIDMT_IPA,
104 	  11,
105 	  { 11 },
106 	  1,
107 	  ACC_VMID_NOACCESS,
108 	  1,
109 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
110 	{ HAL_VMIDMT_IPA,
111 	  12,
112 	  { 12 },
113 	  1,
114 	  ACC_VMID_NOACCESS,
115 	  1,
116 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
117 	{ HAL_VMIDMT_IPA,
118 	  13,
119 	  { 13 },
120 	  1,
121 	  ACC_VMID_NOACCESS,
122 	  1,
123 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
124 	{ HAL_VMIDMT_IPA,
125 	  14,
126 	  { 14 },
127 	  1,
128 	  ACC_VMID_NOACCESS,
129 	  1,
130 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
131 	{ HAL_VMIDMT_IPA,
132 	  15,
133 	  { 15 },
134 	  1,
135 	  ACC_VMID_IPA_GP,
136 	  1,
137 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
138 	{ HAL_VMIDMT_IPA,
139 	  16,
140 	  { 16 },
141 	  1,
142 	  ACC_VMID_IPA_GP,
143 	  1,
144 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
145 	{ HAL_VMIDMT_IPA,
146 	  17,
147 	  { 17 },
148 	  1,
149 	  ACC_VMID_IPA_GP,
150 	  1,
151 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
152 	{ HAL_VMIDMT_IPA,
153 	  18,
154 	  { 18 },
155 	  1,
156 	  ACC_VMID_IPA_PERIPH_1,
157 	  1,
158 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
159 	{ HAL_VMIDMT_IPA,
160 	  19,
161 	  { 19 },
162 	  1,
163 	  ACC_VMID_IPA_GP,
164 	  1,
165 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
166 	{ HAL_VMIDMT_IPA,
167 	  20,
168 	  { 20 },
169 	  1,
170 	  ACC_VMID_IPA_GP,
171 	  1,
172 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
173 	{ HAL_VMIDMT_IPA,
174 	  21,
175 	  { 21 },
176 	  1,
177 	  ACC_VMID_IPA_GP,
178 	  1,
179 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
180 	{ HAL_VMIDMT_IPA,
181 	  22,
182 	  { 22 },
183 	  1,
184 	  ACC_VMID_IPA_GP,
185 	  1,
186 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
187 	{ HAL_VMIDMT_IPA,
188 	  32,
189 	  { 32 },
190 	  1,
191 	  ACC_VMID_IPA_GP,
192 	  1,
193 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
194 	{ HAL_VMIDMT_IPA,
195 	  33,
196 	  { 33 },
197 	  1,
198 	  ACC_VMID_NOACCESS,
199 	  1,
200 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
201 	{ HAL_VMIDMT_IPA,
202 	  34,
203 	  { 34 },
204 	  1,
205 	  ACC_VMID_NOACCESS,
206 	  1,
207 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
208 	{ HAL_VMIDMT_IPA,
209 	  40,
210 	  { 40 },
211 	  1,
212 	  ACC_VMID_IPA_FW,
213 	  1,
214 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
215 	{ HAL_VMIDMT_IPA,
216 	  41,
217 	  { 41 },
218 	  1,
219 	  ACC_VMID_NOACCESS,
220 	  1,
221 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
222 	{ HAL_VMIDMT_IPA,
223 	  48,
224 	  { 48 },
225 	  1,
226 	  ACC_VMID_NOACCESS,
227 	  1,
228 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
229 	/* 3_0 */
230 	{ HAL_VMIDMT_QUPV3_0,
231 	  0,
232 	  { 0 },
233 	  1,
234 	  ACC_VMID_AP,
235 	  1,
236 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
237 	{ HAL_VMIDMT_QUPV3_0,
238 	  1,
239 	  { 1 },
240 	  1,
241 	  ACC_VMID_AP,
242 	  1,
243 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
244 	{ HAL_VMIDMT_QUPV3_0,
245 	  2,
246 	  { 2 },
247 	  1,
248 	  ACC_VMID_AP,
249 	  1,
250 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
251 	{ HAL_VMIDMT_QUPV3_0,
252 	  3,
253 	  { 3 },
254 	  1,
255 	  ACC_VMID_AP,
256 	  1,
257 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
258 	{ HAL_VMIDMT_QUPV3_0,
259 	  4,
260 	  { 4 },
261 	  1,
262 	  ACC_VMID_AP,
263 	  1,
264 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
265 	{ HAL_VMIDMT_QUPV3_0,
266 	  5,
267 	  { 5 },
268 	  1,
269 	  ACC_VMID_AP,
270 	  1,
271 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
272 	{ HAL_VMIDMT_QUPV3_0,
273 	  6,
274 	  { 6 },
275 	  1,
276 	  ACC_VMID_AP,
277 	  1,
278 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
279 	{ HAL_VMIDMT_QUPV3_0,
280 	  7,
281 	  { 7 },
282 	  1,
283 	  ACC_VMID_LPASS,
284 	  1,
285 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
286 	{ HAL_VMIDMT_QUPV3_0,
287 	  8,
288 	  { 8 },
289 	  1,
290 	  ACC_VMID_LPASS,
291 	  1,
292 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
293 	{ HAL_VMIDMT_QUPV3_0,
294 	  11,
295 	  { 11 },
296 	  1,
297 	  ACC_VMID_MSS,
298 	  1,
299 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
300 	{ HAL_VMIDMT_QUPV3_0,
301 	  16,
302 	  { 16 },
303 	  1,
304 	  ACC_VMID_AP,
305 	  1,
306 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
307 	{ HAL_VMIDMT_QUPV3_0,
308 	  17,
309 	  { 17 },
310 	  1,
311 	  ACC_VMID_AP,
312 	  1,
313 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
314 	{ HAL_VMIDMT_QUPV3_0,
315 	  18,
316 	  { 18 },
317 	  1,
318 	  ACC_VMID_AP,
319 	  1,
320 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
321 	{ HAL_VMIDMT_QUPV3_0,
322 	  19,
323 	  { 19 },
324 	  1,
325 	  ACC_VMID_AP,
326 	  1,
327 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
328 	{ HAL_VMIDMT_QUPV3_0,
329 	  20,
330 	  { 20 },
331 	  1,
332 	  ACC_VMID_AP,
333 	  1,
334 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
335 	{ HAL_VMIDMT_QUPV3_0,
336 	  21,
337 	  { 21 },
338 	  1,
339 	  ACC_VMID_AP,
340 	  1,
341 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
342 	{ HAL_VMIDMT_QUPV3_0,
343 	  22,
344 	  { 22 },
345 	  1,
346 	  ACC_VMID_AP,
347 	  1,
348 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
349 	{ HAL_VMIDMT_QUPV3_0,
350 	  23,
351 	  { 23 },
352 	  1,
353 	  ACC_VMID_AP,
354 	  1,
355 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
356 	{ HAL_VMIDMT_QUPV3_0,
357 	  32,
358 	  { 32 },
359 	  1,
360 	  ACC_VMID_AP_GSI,
361 	  1,
362 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
363 	{ HAL_VMIDMT_QUPV3_0,
364 	  33,
365 	  { 33 },
366 	  1,
367 	  ACC_VMID_AP_GSI,
368 	  1,
369 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
370 	{ HAL_VMIDMT_QUPV3_0,
371 	  34,
372 	  { 34 },
373 	  1,
374 	  ACC_VMID_AP_GSI,
375 	  1,
376 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
377 	{ HAL_VMIDMT_QUPV3_0,
378 	  35,
379 	  { 35 },
380 	  1,
381 	  ACC_VMID_AP_GSI,
382 	  1,
383 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
384 	{ HAL_VMIDMT_QUPV3_0,
385 	  36,
386 	  { 36 },
387 	  1,
388 	  ACC_VMID_AP_GSI,
389 	  1,
390 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
391 	{ HAL_VMIDMT_QUPV3_0,
392 	  37,
393 	  { 37 },
394 	  1,
395 	  ACC_VMID_AP_GSI,
396 	  1,
397 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
398 	{ HAL_VMIDMT_QUPV3_0,
399 	  38,
400 	  { 38 },
401 	  1,
402 	  ACC_VMID_AP_GSI,
403 	  1,
404 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
405 	/* 3_1 */
406 	{ HAL_VMIDMT_QUPV3_1,
407 	  0,
408 	  { 0 },
409 	  1,
410 	  ACC_VMID_AP,
411 	  1,
412 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
413 	{ HAL_VMIDMT_QUPV3_1,
414 	  1,
415 	  { 1 },
416 	  1,
417 	  ACC_VMID_AP,
418 	  1,
419 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
420 	{ HAL_VMIDMT_QUPV3_1,
421 	  2,
422 	  { 2 },
423 	  1,
424 	  ACC_VMID_AP,
425 	  1,
426 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
427 	{ HAL_VMIDMT_QUPV3_1,
428 	  3,
429 	  { 3 },
430 	  1,
431 	  ACC_VMID_AP,
432 	  1,
433 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
434 	{ HAL_VMIDMT_QUPV3_1,
435 	  4,
436 	  { 4 },
437 	  1,
438 	  ACC_VMID_AP,
439 	  1,
440 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
441 	{ HAL_VMIDMT_QUPV3_1,
442 	  5,
443 	  { 5 },
444 	  1,
445 	  ACC_VMID_AP,
446 	  1,
447 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
448 	{ HAL_VMIDMT_QUPV3_1,
449 	  6,
450 	  { 6 },
451 	  1,
452 	  ACC_VMID_AP,
453 	  1,
454 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
455 	{ HAL_VMIDMT_QUPV3_1,
456 	  7,
457 	  { 7 },
458 	  1,
459 	  ACC_VMID_LPASS,
460 	  1,
461 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
462 	{ HAL_VMIDMT_QUPV3_1,
463 	  8,
464 	  { 8 },
465 	  1,
466 	  ACC_VMID_LPASS,
467 	  1,
468 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
469 	{ HAL_VMIDMT_QUPV3_1,
470 	  11,
471 	  { 11 },
472 	  1,
473 	  ACC_VMID_MSS,
474 	  1,
475 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
476 	{ HAL_VMIDMT_QUPV3_1,
477 	  16,
478 	  { 16 },
479 	  1,
480 	  ACC_VMID_AP,
481 	  1,
482 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
483 	{ HAL_VMIDMT_QUPV3_1,
484 	  17,
485 	  { 17 },
486 	  1,
487 	  ACC_VMID_AP,
488 	  1,
489 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
490 	{ HAL_VMIDMT_QUPV3_1,
491 	  18,
492 	  { 18 },
493 	  1,
494 	  ACC_VMID_AP,
495 	  1,
496 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
497 	{ HAL_VMIDMT_QUPV3_1,
498 	  19,
499 	  { 19 },
500 	  1,
501 	  ACC_VMID_AP,
502 	  1,
503 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
504 	{ HAL_VMIDMT_QUPV3_1,
505 	  20,
506 	  { 20 },
507 	  1,
508 	  ACC_VMID_AP,
509 	  1,
510 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
511 	{ HAL_VMIDMT_QUPV3_1,
512 	  21,
513 	  { 21 },
514 	  1,
515 	  ACC_VMID_AP,
516 	  1,
517 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
518 	{ HAL_VMIDMT_QUPV3_1,
519 	  22,
520 	  { 22 },
521 	  1,
522 	  ACC_VMID_AP,
523 	  1,
524 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
525 	{ HAL_VMIDMT_QUPV3_1,
526 	  23,
527 	  { 23 },
528 	  1,
529 	  ACC_VMID_AP,
530 	  1,
531 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
532 	{ HAL_VMIDMT_QUPV3_1,
533 	  32,
534 	  { 32 },
535 	  1,
536 	  ACC_VMID_AP_GSI,
537 	  1,
538 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
539 	{ HAL_VMIDMT_QUPV3_1,
540 	  33,
541 	  { 33 },
542 	  1,
543 	  ACC_VMID_AP_GSI,
544 	  1,
545 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
546 	{ HAL_VMIDMT_QUPV3_1,
547 	  34,
548 	  { 34 },
549 	  1,
550 	  ACC_VMID_AP_GSI,
551 	  1,
552 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
553 	{ HAL_VMIDMT_QUPV3_1,
554 	  35,
555 	  { 35 },
556 	  1,
557 	  ACC_VMID_AP_GSI,
558 	  1,
559 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
560 	{ HAL_VMIDMT_QUPV3_1,
561 	  36,
562 	  { 36 },
563 	  1,
564 	  ACC_VMID_AP_GSI,
565 	  1,
566 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
567 	{ HAL_VMIDMT_QUPV3_1,
568 	  37,
569 	  { 37 },
570 	  1,
571 	  ACC_VMID_AP_GSI,
572 	  1,
573 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
574 	{ HAL_VMIDMT_QUPV3_1,
575 	  38,
576 	  { 38 },
577 	  1,
578 	  ACC_VMID_AP_GSI,
579 	  1,
580 	  ACC_VMIDMT_MEMTYPE_DEFAULT },
581 };
582 
583 const uint32_t g_vmid_map_count = ARRAY_SIZE(g_vmid_map);
584 
585 #define IPA_0_IPA_VMIDMT_SCR0_ADDR (0x01E30000)
586 #define QUPV3_0_VMIDMT_SCR0_ADDR (0x009C6000)
587 #define QUPV3_1_VMIDMT_SCR0_ADDR (0x00AC6000)
588 #define SSC_QUPV3_VMIDMT_SCR0_ADDR (0x037C6000)
589 
590 struct hal_vmidmt_port_map g_vmidmt_info_cfg[] = {
591 	{ HAL_VMIDMT_IPA,
592 	  { IPA_0_IPA_VMIDMT_SCR0_ADDR, { 40, 0, 0, 0, 0, false } } },
593 	{ HAL_VMIDMT_QUPV3_0,
594 	  { QUPV3_0_VMIDMT_SCR0_ADDR, { 48, 0, 0, 0, 0, false } } },
595 	{ HAL_VMIDMT_QUPV3_1,
596 	  { QUPV3_1_VMIDMT_SCR0_ADDR, { 48, 0, 0, 0, 0, false } } },
597 };
598 
599 const uint8_t g_vmidmt_info_cfg_count = ARRAY_SIZE(g_vmidmt_info_cfg);
600 
601 /*
602  * Mapping of VMIDMT position in VMIDMT Error interrupt status register
603  * to corresponding HAL VMIDMT index
604  */
605 struct vmidmt_err_pos_to_hal_map vmidmt_err_pos_to_hal_map
606 	[ACC_VMIDMT_ERR_INT_STATUS_REG_NUM][ACC_VMIDMT_ERR_NUM_PER_REG] = {
607 		{
608 			{ 0, HAL_VMIDMT_CRYPTO0_BAM },
609 			{ 1, HAL_VMIDMT_AOP },
610 			{ 2, HAL_VMIDMT_QUPV3_0 },
611 			{ 3, HAL_VMIDMT_SSC_SDC },
612 			{ 4, HAL_VMIDMT_QUPV3_1 },
613 			{ 5, HAL_VMIDMT_QUPV3_2 },
614 			{ 6, HAL_VMIDMT_SSC_QUPV3 },
615 			{ 7, HAL_VMIDMT_LPASS_RXTX }, /* lpass_0_vmidmt_girpt */
616 			{ 8, HAL_VMIDMT_LPASS_VA }, /* lpass_1_vmidmt_girpt */
617 			{ 9, HAL_VMIDMT_IPA },
618 			{ 10, HAL_VMIDMT_QDSS_VMIDETR },
619 			{ 11, HAL_VMIDMT_QDSS_VMIDDAP },
620 			{ 12, HAL_VMIDMT_COUNT }, /* spdm_vmidmt_girpt */
621 			{ 13, HAL_VMIDMT_QSPI }, /* qspi_vmidmt_girpt */
622 			{ 14, HAL_VMIDMT_LPASS_WSA }, /* lpass_2_vmidmt_girpt */
623 			{ 15, HAL_VMIDMT_COUNT }, /* reserved */
624 			{ 16, HAL_VMIDMT_COUNT }, /* reserved */
625 			{ 17, HAL_VMIDMT_COUNT }, /* reserved */
626 		},
627 	};
628