xref: /rk3399_ARM-atf/drivers/qti/accesscontrol/vmidmt/vmidmt.h (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 #ifndef VMIDMT_H
8 #define VMIDMT_H
9 
10 #include <stdbool.h>
11 
12 #define ACC_ERR_VMIDMT_CFG_FAIL 1
13 
14 #define ACC_VMID_NOACCESS 0
15 #define ACC_VMID_VMID_0 0
16 #define ACC_VMID_RPM 1
17 #define ACC_VMID_TZ 2
18 #define ACC_VMID_AP 3
19 #define ACC_VMID_MSS 4
20 #define ACC_VMID_LPASS 5
21 #define ACC_VMID_CP 6
22 #define ACC_VMID_VIDEO 7
23 #define ACC_VMID_ZAP_SHADER 8
24 #define ACC_VMID_MDSS 9
25 /* Space for VMID 10 */
26 #define ACC_VMID_SSC 11
27 
28 /* IPA VMIDs (used to generate SIDs) */
29 #define ACC_VMID_IPA_AP (0b1100) /* 12 */
30 #define ACC_VMID_IPA_UC_PIPE (0b1101) /* 13 */
31 #define ACC_VMID_IPA_WIFI ACC_VMID_IPA_UC_PIPE
32 #define ACC_VMID_IPA_UC (0b1110) /* 14 */
33 #define ACC_VMID_IPA_GP (0b0000) /* 0  */
34 #define ACC_VMID_IPA_FW (0b0010) /* 2  */
35 #define ACC_VMID_IPA_PERIPH_1 (0b0001) /* 1  */
36 #define ACC_VMID_IPA_PERIPH_2 (0b0011) /* 3  */
37 #define ACC_VMID_IPA_PERIPH_3 (0b0100) /* 4  */
38 #define ACC_VMID_IPA_PERIPH_4 (0b0101) /* 5  */
39 
40 /*
41  * 9x35/9x45 IPA VMID behavior:
42  * IPA u_c handles power collapse save/restore. Without XPU/VMIDMT retention,
43  * u_c firmware may reprogram VMIDMT. Security requires IPA HW to force VMID
44  * bit 4 high so it cannot use regular system VMIDs.
45  */
46 #define ACC_VMID_IPA_AP_MDM 0x13 /* BIT 4 SET | ACC_VMID_AP  */
47 #define ACC_VMID_IPA_UC_PIPE_MDM 0x14 /* BIT 4 SET | ACC_VMID_MSS */
48 #define ACC_VMID_IPA_UC_MDM 0x15 /* BIT 4 SET & new VMID     */
49 
50 #define ACC_VMID_WLAN 15
51 
52 /*
53  */
54 #define ACC_VMID_AP_GSI 0x16
55 #define ACC_VMID_QUP_TZ 0x0
56 
57 #define ACC_VMID_NOACCESS_BIT (1U << ACC_VMID_NOACCESS)
58 #define ACC_VMID_VMID_0_BIT (1U << ACC_VMID_VMID_0)
59 #define ACC_VMID_TZ_BIT (1U << ACC_VMID_TZ)
60 #define ACC_VMID_RPM_BIT (1U << ACC_VMID_RPM)
61 #define ACC_VMID_LPASS_BIT (1U << ACC_VMID_LPASS)
62 #define ACC_VMID_MSS_BIT (1U << ACC_VMID_MSS)
63 #define ACC_VMID_AP_BIT (1U << ACC_VMID_AP)
64 #define ACC_VMID_CP_BIT (1U << ACC_VMID_CP)
65 #define ACC_VMID_VIDEO_BIT (1U << ACC_VMID_VIDEO)
66 #define ACC_VMID_MDSS_BIT (1U << ACC_VMID_MDSS)
67 #define ACC_VMID_SSC_BIT (1U << ACC_VMID_SSC)
68 
69 #define ACC_VMID_IPA_AP_BIT (1U << ACC_VMID_IPA_AP)
70 #define ACC_VMID_IPA_UC_PIPE_BIT (1U << ACC_VMID_IPA_UC_PIPE)
71 #define ACC_VMID_IPA_UC_BIT (1U << ACC_VMID_IPA_UC)
72 
73 #define ACC_VMID_IPA_AP_MDM_BIT (1U << ACC_VMID_IPA_AP_MDM)
74 #define ACC_VMID_IPA_UC_PIPE_MDM_BIT (1U << ACC_VMID_IPA_UC_PIPE_MDM)
75 #define ACC_VMID_IPA_UC_MDM_BIT (1U << ACC_VMID_IPA_UC_MDM)
76 
77 #define ACC_VMID_WLAN_BIT (1U << ACC_VMID_WLAN)
78 #define ACC_VMID_ZAP_SHADER_BIT (1U << ACC_VMID_ZAP_SHADER)
79 #define ACC_VMID_IPA_WIFI_BIT (1U << ACC_VMID_IPA_WIFI)
80 
81 /* All VMIDs except NOACCESS, with domain bits masked out */
82 #define ACC_ALL_VMID ((~MSM_VMID_NOACCESS) & (~MSM_DOMAIN_MASK))
83 
84 /* Domain definitions. Start from 31 downward to avoid VMID conflicts. */
85 #define ACC_DOMAIN_MASK 0xFF000000 /* Reserve 8 bits for domains */
86 #define ACC_DOMAIN_MSA 31
87 #define ACC_DOMAIN_HYP 30
88 #define ACC_DOMAIN_SP 29
89 #define ACC_DOMAIN_TZ 28
90 
91 /* Domain bit masks */
92 #define ACC_DOMAIN_MSA_BIT (1U << ACC_DOMAIN_MSA)
93 #define ACC_DOMAIN_HYP_BIT (1U << ACC_DOMAIN_HYP)
94 #define ACC_DOMAIN_SP_BIT (1U << ACC_DOMAIN_SP)
95 #define ACC_DOMAIN_TZ_BIT (1U << ACC_DOMAIN_TZ)
96 
97 int vmidmt_configure(void);
98 
99 #endif /* VMIDMT_H */
100