FILE
engine.h
File preview with syntax highlighting.
linux-6.19.14/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/nvrm/engine.h
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/535.113.01 */ 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_CE_MAX MC_ENGINE_IDX_CE9 37#define MC_ENGINE_IDX_VIC 35 38#define MC_ENGINE_IDX_ISOHUB 36 39#define MC_ENGINE_IDX_VGPU 37 40#define MC_ENGINE_IDX_MSENC 38 41#define MC_ENGINE_IDX_MSENC1 39 42#define MC_ENGINE_IDX_MSENC2 40 43#define MC_ENGINE_IDX_C2C 41 44#define MC_ENGINE_IDX_LTC 42 45#define MC_ENGINE_IDX_FBHUB 43 46#define MC_ENGINE_IDX_HDACODEC 44 47#define MC_ENGINE_IDX_GMMU 45 48#define MC_ENGINE_IDX_SEC2 46 49#define MC_ENGINE_IDX_FSP 47 50#define MC_ENGINE_IDX_NVLINK 48 51#define MC_ENGINE_IDX_GSP 49 52#define MC_ENGINE_IDX_NVJPG 50 53#define MC_ENGINE_IDX_NVJPEG MC_ENGINE_IDX_NVJPG 54#define MC_ENGINE_IDX_NVJPEG0 MC_ENGINE_IDX_NVJPEG 55#define MC_ENGINE_IDX_NVJPEG1 51 56#define MC_ENGINE_IDX_NVJPEG2 52 57#define MC_ENGINE_IDX_NVJPEG3 53 58#define MC_ENGINE_IDX_NVJPEG4 54 59#define MC_ENGINE_IDX_NVJPEG5 55 60#define MC_ENGINE_IDX_NVJPEG6 56 61#define MC_ENGINE_IDX_NVJPEG7 57 62#define MC_ENGINE_IDX_REPLAYABLE_FAULT 58 63#define MC_ENGINE_IDX_ACCESS_CNTR 59 64#define MC_ENGINE_IDX_NON_REPLAYABLE_FAULT 60 65#define MC_ENGINE_IDX_REPLAYABLE_FAULT_ERROR 61 66#define MC_ENGINE_IDX_NON_REPLAYABLE_FAULT_ERROR 62 67#define MC_ENGINE_IDX_INFO_FAULT 63 68#define MC_ENGINE_IDX_BSP 64 69#define MC_ENGINE_IDX_NVDEC MC_ENGINE_IDX_BSP 70#define MC_ENGINE_IDX_NVDEC0 MC_ENGINE_IDX_NVDEC 71#define MC_ENGINE_IDX_NVDEC1 65 72#define MC_ENGINE_IDX_NVDEC2 66 73#define MC_ENGINE_IDX_NVDEC3 67 74#define MC_ENGINE_IDX_NVDEC4 68 75#define MC_ENGINE_IDX_NVDEC5 69 76#define MC_ENGINE_IDX_NVDEC6 70 77#define MC_ENGINE_IDX_NVDEC7 71 78#define MC_ENGINE_IDX_CPU_DOORBELL 72 79#define MC_ENGINE_IDX_PRIV_DOORBELL 73 80#define MC_ENGINE_IDX_MMU_ECC_ERROR 74 81#define MC_ENGINE_IDX_BLG 75 82#define MC_ENGINE_IDX_PERFMON 76 83#define MC_ENGINE_IDX_BUF_RESET 77 84#define MC_ENGINE_IDX_XBAR 78 85#define MC_ENGINE_IDX_ZPW 79 86#define MC_ENGINE_IDX_OFA0 80 87#define MC_ENGINE_IDX_TEGRA 81 88#define MC_ENGINE_IDX_GR 82 89#define MC_ENGINE_IDX_GR0 MC_ENGINE_IDX_GR 90#define MC_ENGINE_IDX_GR1 83 91#define MC_ENGINE_IDX_GR2 84 92#define MC_ENGINE_IDX_GR3 85 93#define MC_ENGINE_IDX_GR4 86 94#define MC_ENGINE_IDX_GR5 87 95#define MC_ENGINE_IDX_GR6 88 96#define MC_ENGINE_IDX_GR7 89 97#define MC_ENGINE_IDX_ESCHED 90 98#define MC_ENGINE_IDX_ESCHED__SIZE 64 99#define MC_ENGINE_IDX_GR_FECS_LOG 154 100#define MC_ENGINE_IDX_GR0_FECS_LOG MC_ENGINE_IDX_GR_FECS_LOG 101#define MC_ENGINE_IDX_GR1_FECS_LOG 155 102#define MC_ENGINE_IDX_GR2_FECS_LOG 156 103#define MC_ENGINE_IDX_GR3_FECS_LOG 157 104#define MC_ENGINE_IDX_GR4_FECS_LOG 158 105#define MC_ENGINE_IDX_GR5_FECS_LOG 159 106#define MC_ENGINE_IDX_GR6_FECS_LOG 160 107#define MC_ENGINE_IDX_GR7_FECS_LOG 161 108#define MC_ENGINE_IDX_TMR_SWRL 162 109#define MC_ENGINE_IDX_DISP_GSP 163 110#define MC_ENGINE_IDX_REPLAYABLE_FAULT_CPU 164 111#define MC_ENGINE_IDX_NON_REPLAYABLE_FAULT_CPU 165 112#define MC_ENGINE_IDX_PXUC 166 113#define MC_ENGINE_IDX_MAX 167 // This must be kept as the max bit if 114#define MC_ENGINE_IDX_INVALID 0xFFFFFFFF 115#define MC_ENGINE_IDX_GRn(x) (MC_ENGINE_IDX_GR0 + (x)) 116#define MC_ENGINE_IDX_GRn_FECS_LOG(x) (MC_ENGINE_IDX_GR0_FECS_LOG + (x)) 117#define MC_ENGINE_IDX_CE(x) (MC_ENGINE_IDX_CE0 + (x)) 118#define MC_ENGINE_IDX_MSENCn(x) (MC_ENGINE_IDX_MSENC + (x)) 119#define MC_ENGINE_IDX_NVDECn(x) (MC_ENGINE_IDX_NVDEC + (x)) 120#define MC_ENGINE_IDX_NVJPEGn(x) (MC_ENGINE_IDX_NVJPEG + (x)) 121#define MC_ENGINE_IDX_ESCHEDn(x) (MC_ENGINE_IDX_ESCHED + (x)) 122 123typedef enum 124{ 125 RM_ENGINE_TYPE_NULL = (0x00000000), 126 RM_ENGINE_TYPE_GR0 = (0x00000001), 127 RM_ENGINE_TYPE_GR1 = (0x00000002), 128 RM_ENGINE_TYPE_GR2 = (0x00000003), 129 RM_ENGINE_TYPE_GR3 = (0x00000004), 130 RM_ENGINE_TYPE_GR4 = (0x00000005), 131 RM_ENGINE_TYPE_GR5 = (0x00000006), 132 RM_ENGINE_TYPE_GR6 = (0x00000007), 133 RM_ENGINE_TYPE_GR7 = (0x00000008), 134 RM_ENGINE_TYPE_COPY0 = (0x00000009), 135 RM_ENGINE_TYPE_COPY1 = (0x0000000a), 136 RM_ENGINE_TYPE_COPY2 = (0x0000000b), 137 RM_ENGINE_TYPE_COPY3 = (0x0000000c), 138 RM_ENGINE_TYPE_COPY4 = (0x0000000d), 139 RM_ENGINE_TYPE_COPY5 = (0x0000000e), 140 RM_ENGINE_TYPE_COPY6 = (0x0000000f), 141 RM_ENGINE_TYPE_COPY7 = (0x00000010), 142 RM_ENGINE_TYPE_COPY8 = (0x00000011), 143 RM_ENGINE_TYPE_COPY9 = (0x00000012), 144 RM_ENGINE_TYPE_NVDEC0 = (0x0000001d), 145 RM_ENGINE_TYPE_NVDEC1 = (0x0000001e), 146 RM_ENGINE_TYPE_NVDEC2 = (0x0000001f), 147 RM_ENGINE_TYPE_NVDEC3 = (0x00000020), 148 RM_ENGINE_TYPE_NVDEC4 = (0x00000021), 149 RM_ENGINE_TYPE_NVDEC5 = (0x00000022), 150 RM_ENGINE_TYPE_NVDEC6 = (0x00000023), 151 RM_ENGINE_TYPE_NVDEC7 = (0x00000024), 152 RM_ENGINE_TYPE_NVENC0 = (0x00000025), 153 RM_ENGINE_TYPE_NVENC1 = (0x00000026), 154 RM_ENGINE_TYPE_NVENC2 = (0x00000027), 155 RM_ENGINE_TYPE_VP = (0x00000028), 156 RM_ENGINE_TYPE_ME = (0x00000029), 157 RM_ENGINE_TYPE_PPP = (0x0000002a), 158 RM_ENGINE_TYPE_MPEG = (0x0000002b), 159 RM_ENGINE_TYPE_SW = (0x0000002c), 160 RM_ENGINE_TYPE_TSEC = (0x0000002d), 161 RM_ENGINE_TYPE_VIC = (0x0000002e), 162 RM_ENGINE_TYPE_MP = (0x0000002f), 163 RM_ENGINE_TYPE_SEC2 = (0x00000030), 164 RM_ENGINE_TYPE_HOST = (0x00000031), 165 RM_ENGINE_TYPE_DPU = (0x00000032), 166 RM_ENGINE_TYPE_PMU = (0x00000033), 167 RM_ENGINE_TYPE_FBFLCN = (0x00000034), 168 RM_ENGINE_TYPE_NVJPEG0 = (0x00000035), 169 RM_ENGINE_TYPE_NVJPEG1 = (0x00000036), 170 RM_ENGINE_TYPE_NVJPEG2 = (0x00000037), 171 RM_ENGINE_TYPE_NVJPEG3 = (0x00000038), 172 RM_ENGINE_TYPE_NVJPEG4 = (0x00000039), 173 RM_ENGINE_TYPE_NVJPEG5 = (0x0000003a), 174 RM_ENGINE_TYPE_NVJPEG6 = (0x0000003b), 175 RM_ENGINE_TYPE_NVJPEG7 = (0x0000003c), 176 RM_ENGINE_TYPE_OFA = (0x0000003d), 177 RM_ENGINE_TYPE_LAST = (0x0000003e), 178} RM_ENGINE_TYPE; 179 180#define NV2080_ENGINE_TYPE_NULL (0x00000000) 181#define NV2080_ENGINE_TYPE_GRAPHICS (0x00000001) 182#define NV2080_ENGINE_TYPE_GR0 NV2080_ENGINE_TYPE_GRAPHICS 183#define NV2080_ENGINE_TYPE_GR1 (0x00000002) 184#define NV2080_ENGINE_TYPE_GR2 (0x00000003) 185#define NV2080_ENGINE_TYPE_GR3 (0x00000004) 186#define NV2080_ENGINE_TYPE_GR4 (0x00000005) 187#define NV2080_ENGINE_TYPE_GR5 (0x00000006) 188#define NV2080_ENGINE_TYPE_GR6 (0x00000007) 189#define NV2080_ENGINE_TYPE_GR7 (0x00000008) 190#define NV2080_ENGINE_TYPE_COPY0 (0x00000009) 191#define NV2080_ENGINE_TYPE_COPY1 (0x0000000a) 192#define NV2080_ENGINE_TYPE_COPY2 (0x0000000b) 193#define NV2080_ENGINE_TYPE_COPY3 (0x0000000c) 194#define NV2080_ENGINE_TYPE_COPY4 (0x0000000d) 195#define NV2080_ENGINE_TYPE_COPY5 (0x0000000e) 196#define NV2080_ENGINE_TYPE_COPY6 (0x0000000f) 197#define NV2080_ENGINE_TYPE_COPY7 (0x00000010) 198#define NV2080_ENGINE_TYPE_COPY8 (0x00000011) 199#define NV2080_ENGINE_TYPE_COPY9 (0x00000012) 200#define NV2080_ENGINE_TYPE_BSP (0x00000013) 201#define NV2080_ENGINE_TYPE_NVDEC0 NV2080_ENGINE_TYPE_BSP 202#define NV2080_ENGINE_TYPE_NVDEC1 (0x00000014) 203#define NV2080_ENGINE_TYPE_NVDEC2 (0x00000015) 204#define NV2080_ENGINE_TYPE_NVDEC3 (0x00000016) 205#define NV2080_ENGINE_TYPE_NVDEC4 (0x00000017) 206#define NV2080_ENGINE_TYPE_NVDEC5 (0x00000018) 207#define NV2080_ENGINE_TYPE_NVDEC6 (0x00000019) 208#define NV2080_ENGINE_TYPE_NVDEC7 (0x0000001a) 209#define NV2080_ENGINE_TYPE_MSENC (0x0000001b) 210#define NV2080_ENGINE_TYPE_NVENC0 NV2080_ENGINE_TYPE_MSENC /* Mutually exclusive alias */ 211#define NV2080_ENGINE_TYPE_NVENC1 (0x0000001c) 212#define NV2080_ENGINE_TYPE_NVENC2 (0x0000001d) 213#define NV2080_ENGINE_TYPE_VP (0x0000001e) 214#define NV2080_ENGINE_TYPE_ME (0x0000001f) 215#define NV2080_ENGINE_TYPE_PPP (0x00000020) 216#define NV2080_ENGINE_TYPE_MPEG (0x00000021) 217#define NV2080_ENGINE_TYPE_SW (0x00000022) 218#define NV2080_ENGINE_TYPE_CIPHER (0x00000023) 219#define NV2080_ENGINE_TYPE_TSEC NV2080_ENGINE_TYPE_CIPHER 220#define NV2080_ENGINE_TYPE_VIC (0x00000024) 221#define NV2080_ENGINE_TYPE_MP (0x00000025) 222#define NV2080_ENGINE_TYPE_SEC2 (0x00000026) 223#define NV2080_ENGINE_TYPE_HOST (0x00000027) 224#define NV2080_ENGINE_TYPE_DPU (0x00000028) 225#define NV2080_ENGINE_TYPE_PMU (0x00000029) 226#define NV2080_ENGINE_TYPE_FBFLCN (0x0000002a) 227#define NV2080_ENGINE_TYPE_NVJPG (0x0000002b) 228#define NV2080_ENGINE_TYPE_NVJPEG0 NV2080_ENGINE_TYPE_NVJPG 229#define NV2080_ENGINE_TYPE_NVJPEG1 (0x0000002c) 230#define NV2080_ENGINE_TYPE_NVJPEG2 (0x0000002d) 231#define NV2080_ENGINE_TYPE_NVJPEG3 (0x0000002e) 232#define NV2080_ENGINE_TYPE_NVJPEG4 (0x0000002f) 233#define NV2080_ENGINE_TYPE_NVJPEG5 (0x00000030) 234#define NV2080_ENGINE_TYPE_NVJPEG6 (0x00000031) 235#define NV2080_ENGINE_TYPE_NVJPEG7 (0x00000032) 236#define NV2080_ENGINE_TYPE_OFA (0x00000033) 237#define NV2080_ENGINE_TYPE_LAST (0x0000003e) 238#define NV2080_ENGINE_TYPE_ALLENGINES (0xffffffff) 239#define NV2080_ENGINE_TYPE_COPY_SIZE 10 240#define NV2080_ENGINE_TYPE_NVENC_SIZE 3 241#define NV2080_ENGINE_TYPE_NVJPEG_SIZE 8 242#define NV2080_ENGINE_TYPE_NVDEC_SIZE 8 243#define NV2080_ENGINE_TYPE_GR_SIZE 8 244#define NV2080_ENGINE_TYPE_COPY(i) (NV2080_ENGINE_TYPE_COPY0+(i)) 245#define NV2080_ENGINE_TYPE_IS_COPY(i) (((i) >= NV2080_ENGINE_TYPE_COPY0) && ((i) <= NV2080_ENGINE_TYPE_COPY9)) 246#define NV2080_ENGINE_TYPE_COPY_IDX(i) ((i) - NV2080_ENGINE_TYPE_COPY0) 247#define NV2080_ENGINE_TYPE_NVENC(i) (NV2080_ENGINE_TYPE_NVENC0+(i)) 248#define NV2080_ENGINE_TYPE_IS_NVENC(i) (((i) >= NV2080_ENGINE_TYPE_NVENC0) && ((i) < NV2080_ENGINE_TYPE_NVENC(NV2080_ENGINE_TYPE_NVENC_SIZE))) 249#define NV2080_ENGINE_TYPE_NVENC_IDX(i) ((i) - NV2080_ENGINE_TYPE_NVENC0) 250#define NV2080_ENGINE_TYPE_NVDEC(i) (NV2080_ENGINE_TYPE_NVDEC0+(i)) 251#define NV2080_ENGINE_TYPE_IS_NVDEC(i) (((i) >= NV2080_ENGINE_TYPE_NVDEC0) && ((i) < NV2080_ENGINE_TYPE_NVDEC(NV2080_ENGINE_TYPE_NVDEC_SIZE))) 252#define NV2080_ENGINE_TYPE_NVDEC_IDX(i) ((i) - NV2080_ENGINE_TYPE_NVDEC0) 253#define NV2080_ENGINE_TYPE_NVJPEG(i) (NV2080_ENGINE_TYPE_NVJPEG0+(i)) 254#define NV2080_ENGINE_TYPE_IS_NVJPEG(i) (((i) >= NV2080_ENGINE_TYPE_NVJPEG0) && ((i) < NV2080_ENGINE_TYPE_NVJPEG(NV2080_ENGINE_TYPE_NVJPEG_SIZE))) 255#define NV2080_ENGINE_TYPE_NVJPEG_IDX(i) ((i) - NV2080_ENGINE_TYPE_NVJPEG0) 256#define NV2080_ENGINE_TYPE_GR(i) (NV2080_ENGINE_TYPE_GR0 + (i)) 257#define NV2080_ENGINE_TYPE_IS_GR(i) (((i) >= NV2080_ENGINE_TYPE_GR0) && ((i) < NV2080_ENGINE_TYPE_GR(NV2080_ENGINE_TYPE_GR_SIZE))) 258#define NV2080_ENGINE_TYPE_GR_IDX(i) ((i) - NV2080_ENGINE_TYPE_GR0) 259#define NV2080_ENGINE_TYPE_IS_VALID(i) (((i) > (NV2080_ENGINE_TYPE_NULL)) && ((i) < (NV2080_ENGINE_TYPE_LAST))) 260#endif
~/
Read-only file preview.