1 /* SPDX-License-Identifier: MIT */ 2 3 /* Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. */ 4 5 #ifndef __NVRM_ENGINE_H__ 6 #define __NVRM_ENGINE_H__ 7 #include <nvrm/nvtypes.h> 8 9 /* Excerpt of RM headers from https://github.com/NVIDIA/open-gpu-kernel-modules/tree/570.144 */ 10 11 #define MC_ENGINE_IDX_NULL 0 // This must be 0 12 #define MC_ENGINE_IDX_TMR 1 13 #define MC_ENGINE_IDX_DISP 2 14 #define MC_ENGINE_IDX_FB 3 15 #define MC_ENGINE_IDX_FIFO 4 16 #define MC_ENGINE_IDX_VIDEO 5 17 #define MC_ENGINE_IDX_MD 6 18 #define MC_ENGINE_IDX_BUS 7 19 #define MC_ENGINE_IDX_PMGR 8 20 #define MC_ENGINE_IDX_VP2 9 21 #define MC_ENGINE_IDX_CIPHER 10 22 #define MC_ENGINE_IDX_BIF 11 23 #define MC_ENGINE_IDX_PPP 12 24 #define MC_ENGINE_IDX_PRIVRING 13 25 #define MC_ENGINE_IDX_PMU 14 26 #define MC_ENGINE_IDX_CE0 15 27 #define MC_ENGINE_IDX_CE1 16 28 #define MC_ENGINE_IDX_CE2 17 29 #define MC_ENGINE_IDX_CE3 18 30 #define MC_ENGINE_IDX_CE4 19 31 #define MC_ENGINE_IDX_CE5 20 32 #define MC_ENGINE_IDX_CE6 21 33 #define MC_ENGINE_IDX_CE7 22 34 #define MC_ENGINE_IDX_CE8 23 35 #define MC_ENGINE_IDX_CE9 24 36 #define MC_ENGINE_IDX_CE10 25 37 #define MC_ENGINE_IDX_CE11 26 38 #define MC_ENGINE_IDX_CE12 27 39 #define MC_ENGINE_IDX_CE13 28 40 #define MC_ENGINE_IDX_CE14 29 41 #define MC_ENGINE_IDX_CE15 30 42 #define MC_ENGINE_IDX_CE16 31 43 #define MC_ENGINE_IDX_CE17 32 44 #define MC_ENGINE_IDX_CE18 33 45 #define MC_ENGINE_IDX_CE19 34 46 #define MC_ENGINE_IDX_CE_MAX MC_ENGINE_IDX_CE19 47 #define MC_ENGINE_IDX_VIC 35 48 #define MC_ENGINE_IDX_ISOHUB 36 49 #define MC_ENGINE_IDX_VGPU 37 50 #define MC_ENGINE_IDX_NVENC 38 51 #define MC_ENGINE_IDX_NVENC1 39 52 #define MC_ENGINE_IDX_NVENC2 40 53 #define MC_ENGINE_IDX_NVENC3 41 54 #define MC_ENGINE_IDX_C2C 42 55 #define MC_ENGINE_IDX_LTC 43 56 #define MC_ENGINE_IDX_FBHUB 44 57 #define MC_ENGINE_IDX_HDACODEC 45 58 #define MC_ENGINE_IDX_GMMU 46 59 #define MC_ENGINE_IDX_SEC2 47 60 #define MC_ENGINE_IDX_FSP 48 61 #define MC_ENGINE_IDX_NVLINK 49 62 #define MC_ENGINE_IDX_GSP 50 63 #define MC_ENGINE_IDX_NVJPG 51 64 #define MC_ENGINE_IDX_NVJPEG MC_ENGINE_IDX_NVJPG 65 #define MC_ENGINE_IDX_NVJPEG0 MC_ENGINE_IDX_NVJPEG 66 #define MC_ENGINE_IDX_NVJPEG1 52 67 #define MC_ENGINE_IDX_NVJPEG2 53 68 #define MC_ENGINE_IDX_NVJPEG3 54 69 #define MC_ENGINE_IDX_NVJPEG4 55 70 #define MC_ENGINE_IDX_NVJPEG5 56 71 #define MC_ENGINE_IDX_NVJPEG6 57 72 #define MC_ENGINE_IDX_NVJPEG7 58 73 #define MC_ENGINE_IDX_REPLAYABLE_FAULT 59 74 #define MC_ENGINE_IDX_ACCESS_CNTR 60 75 #define MC_ENGINE_IDX_NON_REPLAYABLE_FAULT 61 76 #define MC_ENGINE_IDX_REPLAYABLE_FAULT_ERROR 62 77 #define MC_ENGINE_IDX_NON_REPLAYABLE_FAULT_ERROR 63 78 #define MC_ENGINE_IDX_INFO_FAULT 64 79 #define MC_ENGINE_IDX_BSP 65 80 #define MC_ENGINE_IDX_NVDEC MC_ENGINE_IDX_BSP 81 #define MC_ENGINE_IDX_NVDEC0 MC_ENGINE_IDX_NVDEC 82 #define MC_ENGINE_IDX_NVDEC1 66 83 #define MC_ENGINE_IDX_NVDEC2 67 84 #define MC_ENGINE_IDX_NVDEC3 68 85 #define MC_ENGINE_IDX_NVDEC4 69 86 #define MC_ENGINE_IDX_NVDEC5 70 87 #define MC_ENGINE_IDX_NVDEC6 71 88 #define MC_ENGINE_IDX_NVDEC7 72 89 #define MC_ENGINE_IDX_CPU_DOORBELL 73 90 #define MC_ENGINE_IDX_PRIV_DOORBELL 74 91 #define MC_ENGINE_IDX_MMU_ECC_ERROR 75 92 #define MC_ENGINE_IDX_BLG 76 93 #define MC_ENGINE_IDX_PERFMON 77 94 #define MC_ENGINE_IDX_BUF_RESET 78 95 #define MC_ENGINE_IDX_XBAR 79 96 #define MC_ENGINE_IDX_ZPW 80 97 #define MC_ENGINE_IDX_OFA0 81 98 #define MC_ENGINE_IDX_OFA1 82 99 #define MC_ENGINE_IDX_TEGRA 83 100 #define MC_ENGINE_IDX_GR 84 101 #define MC_ENGINE_IDX_GR0 MC_ENGINE_IDX_GR 102 #define MC_ENGINE_IDX_GR1 85 103 #define MC_ENGINE_IDX_GR2 86 104 #define MC_ENGINE_IDX_GR3 87 105 #define MC_ENGINE_IDX_GR4 88 106 #define MC_ENGINE_IDX_GR5 89 107 #define MC_ENGINE_IDX_GR6 90 108 #define MC_ENGINE_IDX_GR7 91 109 #define MC_ENGINE_IDX_ESCHED 92 110 #define MC_ENGINE_IDX_ESCHED__SIZE 64 111 #define MC_ENGINE_IDX_GR_FECS_LOG 156 112 #define MC_ENGINE_IDX_GR0_FECS_LOG MC_ENGINE_IDX_GR_FECS_LOG 113 #define MC_ENGINE_IDX_GR1_FECS_LOG 157 114 #define MC_ENGINE_IDX_GR2_FECS_LOG 158 115 #define MC_ENGINE_IDX_GR3_FECS_LOG 159 116 #define MC_ENGINE_IDX_GR4_FECS_LOG 160 117 #define MC_ENGINE_IDX_GR5_FECS_LOG 161 118 #define MC_ENGINE_IDX_GR6_FECS_LOG 162 119 #define MC_ENGINE_IDX_GR7_FECS_LOG 163 120 #define MC_ENGINE_IDX_TMR_SWRL 164 121 #define MC_ENGINE_IDX_DISP_GSP 165 122 #define MC_ENGINE_IDX_REPLAYABLE_FAULT_CPU 166 123 #define MC_ENGINE_IDX_NON_REPLAYABLE_FAULT_CPU 167 124 #define MC_ENGINE_IDX_PXUC 168 125 #define MC_ENGINE_IDX_SYSLTC 169 126 #define MC_ENGINE_IDX_LRCC 170 127 #define MC_ENGINE_IDX_GSPLITE 171 128 #define MC_ENGINE_IDX_GSPLITE0 MC_ENGINE_IDX_GSPLITE 129 #define MC_ENGINE_IDX_GSPLITE1 172 130 #define MC_ENGINE_IDX_GSPLITE2 173 131 #define MC_ENGINE_IDX_GSPLITE3 174 132 #define MC_ENGINE_IDX_GSPLITE_MAX MC_ENGINE_IDX_GSPLITE3 133 #define MC_ENGINE_IDX_DPAUX 175 134 #define MC_ENGINE_IDX_DISP_LOW 176 135 #define MC_ENGINE_IDX_MAX 177 136 137 typedef enum 138 { 139 RM_ENGINE_TYPE_NULL = (0x00000000), 140 RM_ENGINE_TYPE_GR0 = (0x00000001), 141 RM_ENGINE_TYPE_GR1 = (0x00000002), 142 RM_ENGINE_TYPE_GR2 = (0x00000003), 143 RM_ENGINE_TYPE_GR3 = (0x00000004), 144 RM_ENGINE_TYPE_GR4 = (0x00000005), 145 RM_ENGINE_TYPE_GR5 = (0x00000006), 146 RM_ENGINE_TYPE_GR6 = (0x00000007), 147 RM_ENGINE_TYPE_GR7 = (0x00000008), 148 RM_ENGINE_TYPE_COPY0 = (0x00000009), 149 RM_ENGINE_TYPE_COPY1 = (0x0000000a), 150 RM_ENGINE_TYPE_COPY2 = (0x0000000b), 151 RM_ENGINE_TYPE_COPY3 = (0x0000000c), 152 RM_ENGINE_TYPE_COPY4 = (0x0000000d), 153 RM_ENGINE_TYPE_COPY5 = (0x0000000e), 154 RM_ENGINE_TYPE_COPY6 = (0x0000000f), 155 RM_ENGINE_TYPE_COPY7 = (0x00000010), 156 RM_ENGINE_TYPE_COPY8 = (0x00000011), 157 RM_ENGINE_TYPE_COPY9 = (0x00000012), 158 RM_ENGINE_TYPE_COPY10 = (0x00000013), 159 RM_ENGINE_TYPE_COPY11 = (0x00000014), 160 RM_ENGINE_TYPE_COPY12 = (0x00000015), 161 RM_ENGINE_TYPE_COPY13 = (0x00000016), 162 RM_ENGINE_TYPE_COPY14 = (0x00000017), 163 RM_ENGINE_TYPE_COPY15 = (0x00000018), 164 RM_ENGINE_TYPE_COPY16 = (0x00000019), 165 RM_ENGINE_TYPE_COPY17 = (0x0000001a), 166 RM_ENGINE_TYPE_COPY18 = (0x0000001b), 167 RM_ENGINE_TYPE_COPY19 = (0x0000001c), 168 RM_ENGINE_TYPE_NVDEC0 = (0x0000001d), 169 RM_ENGINE_TYPE_NVDEC1 = (0x0000001e), 170 RM_ENGINE_TYPE_NVDEC2 = (0x0000001f), 171 RM_ENGINE_TYPE_NVDEC3 = (0x00000020), 172 RM_ENGINE_TYPE_NVDEC4 = (0x00000021), 173 RM_ENGINE_TYPE_NVDEC5 = (0x00000022), 174 RM_ENGINE_TYPE_NVDEC6 = (0x00000023), 175 RM_ENGINE_TYPE_NVDEC7 = (0x00000024), 176 RM_ENGINE_TYPE_NVENC0 = (0x00000025), 177 RM_ENGINE_TYPE_NVENC1 = (0x00000026), 178 RM_ENGINE_TYPE_NVENC2 = (0x00000027), 179 // Bug 4175886 - Use this new value for all chips once GB20X is released 180 RM_ENGINE_TYPE_NVENC3 = (0x00000028), 181 RM_ENGINE_TYPE_VP = (0x00000029), 182 RM_ENGINE_TYPE_ME = (0x0000002a), 183 RM_ENGINE_TYPE_PPP = (0x0000002b), 184 RM_ENGINE_TYPE_MPEG = (0x0000002c), 185 RM_ENGINE_TYPE_SW = (0x0000002d), 186 RM_ENGINE_TYPE_TSEC = (0x0000002e), 187 RM_ENGINE_TYPE_VIC = (0x0000002f), 188 RM_ENGINE_TYPE_MP = (0x00000030), 189 RM_ENGINE_TYPE_SEC2 = (0x00000031), 190 RM_ENGINE_TYPE_HOST = (0x00000032), 191 RM_ENGINE_TYPE_DPU = (0x00000033), 192 RM_ENGINE_TYPE_PMU = (0x00000034), 193 RM_ENGINE_TYPE_FBFLCN = (0x00000035), 194 RM_ENGINE_TYPE_NVJPEG0 = (0x00000036), 195 RM_ENGINE_TYPE_NVJPEG1 = (0x00000037), 196 RM_ENGINE_TYPE_NVJPEG2 = (0x00000038), 197 RM_ENGINE_TYPE_NVJPEG3 = (0x00000039), 198 RM_ENGINE_TYPE_NVJPEG4 = (0x0000003a), 199 RM_ENGINE_TYPE_NVJPEG5 = (0x0000003b), 200 RM_ENGINE_TYPE_NVJPEG6 = (0x0000003c), 201 RM_ENGINE_TYPE_NVJPEG7 = (0x0000003d), 202 RM_ENGINE_TYPE_OFA0 = (0x0000003e), 203 RM_ENGINE_TYPE_OFA1 = (0x0000003f), 204 RM_ENGINE_TYPE_RESERVED40 = (0x00000040), 205 RM_ENGINE_TYPE_RESERVED41 = (0x00000041), 206 RM_ENGINE_TYPE_RESERVED42 = (0x00000042), 207 RM_ENGINE_TYPE_RESERVED43 = (0x00000043), 208 RM_ENGINE_TYPE_RESERVED44 = (0x00000044), 209 RM_ENGINE_TYPE_RESERVED45 = (0x00000045), 210 RM_ENGINE_TYPE_RESERVED46 = (0x00000046), 211 RM_ENGINE_TYPE_RESERVED47 = (0x00000047), 212 RM_ENGINE_TYPE_RESERVED48 = (0x00000048), 213 RM_ENGINE_TYPE_RESERVED49 = (0x00000049), 214 RM_ENGINE_TYPE_RESERVED4a = (0x0000004a), 215 RM_ENGINE_TYPE_RESERVED4b = (0x0000004b), 216 RM_ENGINE_TYPE_RESERVED4c = (0x0000004c), 217 RM_ENGINE_TYPE_RESERVED4d = (0x0000004d), 218 RM_ENGINE_TYPE_RESERVED4e = (0x0000004e), 219 RM_ENGINE_TYPE_RESERVED4f = (0x0000004f), 220 RM_ENGINE_TYPE_RESERVED50 = (0x00000050), 221 RM_ENGINE_TYPE_RESERVED51 = (0x00000051), 222 RM_ENGINE_TYPE_RESERVED52 = (0x00000052), 223 RM_ENGINE_TYPE_RESERVED53 = (0x00000053), 224 RM_ENGINE_TYPE_LAST = (0x00000054), 225 } RM_ENGINE_TYPE; 226 227 #define NV2080_ENGINE_TYPE_NULL (0x00000000) 228 #define NV2080_ENGINE_TYPE_GRAPHICS (0x00000001) 229 #define NV2080_ENGINE_TYPE_GR0 NV2080_ENGINE_TYPE_GRAPHICS 230 #define NV2080_ENGINE_TYPE_GR1 (0x00000002) 231 #define NV2080_ENGINE_TYPE_GR2 (0x00000003) 232 #define NV2080_ENGINE_TYPE_GR3 (0x00000004) 233 #define NV2080_ENGINE_TYPE_GR4 (0x00000005) 234 #define NV2080_ENGINE_TYPE_GR5 (0x00000006) 235 #define NV2080_ENGINE_TYPE_GR6 (0x00000007) 236 #define NV2080_ENGINE_TYPE_GR7 (0x00000008) 237 #define NV2080_ENGINE_TYPE_COPY0 (0x00000009) 238 #define NV2080_ENGINE_TYPE_COPY1 (0x0000000a) 239 #define NV2080_ENGINE_TYPE_COPY2 (0x0000000b) 240 #define NV2080_ENGINE_TYPE_COPY3 (0x0000000c) 241 #define NV2080_ENGINE_TYPE_COPY4 (0x0000000d) 242 #define NV2080_ENGINE_TYPE_COPY5 (0x0000000e) 243 #define NV2080_ENGINE_TYPE_COPY6 (0x0000000f) 244 #define NV2080_ENGINE_TYPE_COPY7 (0x00000010) 245 #define NV2080_ENGINE_TYPE_COPY8 (0x00000011) 246 #define NV2080_ENGINE_TYPE_COPY9 (0x00000012) 247 #define NV2080_ENGINE_TYPE_BSP (0x00000013) 248 #define NV2080_ENGINE_TYPE_NVDEC0 NV2080_ENGINE_TYPE_BSP 249 #define NV2080_ENGINE_TYPE_NVDEC1 (0x00000014) 250 #define NV2080_ENGINE_TYPE_NVDEC2 (0x00000015) 251 #define NV2080_ENGINE_TYPE_NVDEC3 (0x00000016) 252 #define NV2080_ENGINE_TYPE_NVDEC4 (0x00000017) 253 #define NV2080_ENGINE_TYPE_NVDEC5 (0x00000018) 254 #define NV2080_ENGINE_TYPE_NVDEC6 (0x00000019) 255 #define NV2080_ENGINE_TYPE_NVDEC7 (0x0000001a) 256 #define NV2080_ENGINE_TYPE_MSENC (0x0000001b) 257 #define NV2080_ENGINE_TYPE_NVENC0 NV2080_ENGINE_TYPE_MSENC /* Mutually exclusive alias */ 258 #define NV2080_ENGINE_TYPE_NVENC1 (0x0000001c) 259 #define NV2080_ENGINE_TYPE_NVENC2 (0x0000001d) 260 #define NV2080_ENGINE_TYPE_VP (0x0000001e) 261 #define NV2080_ENGINE_TYPE_ME (0x0000001f) 262 #define NV2080_ENGINE_TYPE_PPP (0x00000020) 263 #define NV2080_ENGINE_TYPE_MPEG (0x00000021) 264 #define NV2080_ENGINE_TYPE_SW (0x00000022) 265 #define NV2080_ENGINE_TYPE_CIPHER (0x00000023) 266 #define NV2080_ENGINE_TYPE_TSEC NV2080_ENGINE_TYPE_CIPHER 267 #define NV2080_ENGINE_TYPE_VIC (0x00000024) 268 #define NV2080_ENGINE_TYPE_MP (0x00000025) 269 #define NV2080_ENGINE_TYPE_SEC2 (0x00000026) 270 #define NV2080_ENGINE_TYPE_HOST (0x00000027) 271 #define NV2080_ENGINE_TYPE_DPU (0x00000028) 272 #define NV2080_ENGINE_TYPE_PMU (0x00000029) 273 #define NV2080_ENGINE_TYPE_FBFLCN (0x0000002a) 274 #define NV2080_ENGINE_TYPE_NVJPG (0x0000002b) 275 #define NV2080_ENGINE_TYPE_NVJPEG0 NV2080_ENGINE_TYPE_NVJPG 276 #define NV2080_ENGINE_TYPE_NVJPEG1 (0x0000002c) 277 #define NV2080_ENGINE_TYPE_NVJPEG2 (0x0000002d) 278 #define NV2080_ENGINE_TYPE_NVJPEG3 (0x0000002e) 279 #define NV2080_ENGINE_TYPE_NVJPEG4 (0x0000002f) 280 #define NV2080_ENGINE_TYPE_NVJPEG5 (0x00000030) 281 #define NV2080_ENGINE_TYPE_NVJPEG6 (0x00000031) 282 #define NV2080_ENGINE_TYPE_NVJPEG7 (0x00000032) 283 #define NV2080_ENGINE_TYPE_OFA (0x00000033) 284 #define NV2080_ENGINE_TYPE_OFA0 NV2080_ENGINE_TYPE_OFA 285 #define NV2080_ENGINE_TYPE_COPY10 (0x00000034) 286 #define NV2080_ENGINE_TYPE_COPY11 (0x00000035) 287 #define NV2080_ENGINE_TYPE_COPY12 (0x00000036) 288 #define NV2080_ENGINE_TYPE_COPY13 (0x00000037) 289 #define NV2080_ENGINE_TYPE_COPY14 (0x00000038) 290 #define NV2080_ENGINE_TYPE_COPY15 (0x00000039) 291 #define NV2080_ENGINE_TYPE_COPY16 (0x0000003a) 292 #define NV2080_ENGINE_TYPE_COPY17 (0x0000003b) 293 #define NV2080_ENGINE_TYPE_COPY18 (0x0000003c) 294 #define NV2080_ENGINE_TYPE_COPY19 (0x0000003d) 295 #define NV2080_ENGINE_TYPE_OFA1 (0x0000003e) 296 #define NV2080_ENGINE_TYPE_NVENC3 (0x0000003f) 297 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY0 (0x00000040) 298 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY1 (0x00000041) 299 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY2 (0x00000042) 300 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY3 (0x00000043) 301 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY4 (0x00000044) 302 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY5 (0x00000045) 303 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY6 (0x00000046) 304 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY7 (0x00000047) 305 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY8 (0x00000048) 306 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY9 (0x00000049) 307 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY10 (0x0000004a) 308 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY11 (0x0000004b) 309 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY12 (0x0000004c) 310 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY13 (0x0000004d) 311 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY14 (0x0000004e) 312 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY15 (0x0000004f) 313 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY16 (0x00000050) 314 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY17 (0x00000051) 315 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY18 (0x00000052) 316 #define NV2080_ENGINE_TYPE_COMP_DECOMP_COPY19 (0x00000053) 317 #define NV2080_ENGINE_TYPE_LAST (0x00000054) 318 #endif 319