xref: /linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/engine.h (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
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