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