File Index
Files and directories
Sign in
FILE

engine.h

File preview with syntax highlighting.

linux-6.19.14/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/nvrm/engine.h C
  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.