1 /* 2 * SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 3 * SPDX-License-Identifier: MIT 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included in 13 * all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 * DEALINGS IN THE SOFTWARE. 22 */ 23 24 #ifndef _cl2080_notification_h_ 25 #define _cl2080_notification_h_ 26 27 #include "nvcfg_sdk.h" 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #include "nvcfg_sdk.h" 34 35 /* event values */ 36 #define NV2080_NOTIFIERS_SW (0) 37 #define NV2080_NOTIFIERS_HOTPLUG (1) 38 #define NV2080_NOTIFIERS_POWER_CONNECTOR (2) 39 #define NV2080_NOTIFIERS_THERMAL_SW (3) 40 #define NV2080_NOTIFIERS_THERMAL_HW (4) 41 #define NV2080_NOTIFIERS_FULL_SCREEN_CHANGE (5) 42 #define NV2080_NOTIFIERS_EVENTBUFFER (6) 43 #define NV2080_NOTIFIERS_DP_IRQ (7) 44 #define NV2080_NOTIFIERS_GR_DEBUG_INTR (8) 45 #define NV2080_NOTIFIERS_PMU_EVENT (9) 46 #define NV2080_NOTIFIERS_PMU_COMMAND (10) 47 #define NV2080_NOTIFIERS_TIMER (11) 48 #define NV2080_NOTIFIERS_GRAPHICS (12) 49 #define NV2080_NOTIFIERS_PPP (13) 50 #define NV2080_NOTIFIERS_VLD (14) // also known as BSP 51 #define NV2080_NOTIFIERS_NVDEC0 NV2080_NOTIFIERS_VLD 52 #define NV2080_NOTIFIERS_NVDEC1 (15) 53 #define NV2080_NOTIFIERS_NVDEC2 (16) 54 #define NV2080_NOTIFIERS_NVDEC3 (17) 55 #define NV2080_NOTIFIERS_NVDEC4 (18) 56 #define NV2080_NOTIFIERS_NVDEC5 (19) 57 #define NV2080_NOTIFIERS_NVDEC6 (20) 58 #define NV2080_NOTIFIERS_NVDEC7 (21) 59 #define NV2080_NOTIFIERS_PDEC (22) // also known as VP 60 #define NV2080_NOTIFIERS_CE0 (23) 61 #define NV2080_NOTIFIERS_CE1 (24) 62 #define NV2080_NOTIFIERS_CE2 (25) 63 #define NV2080_NOTIFIERS_CE3 (26) 64 #define NV2080_NOTIFIERS_CE4 (27) 65 #define NV2080_NOTIFIERS_CE5 (28) 66 #define NV2080_NOTIFIERS_CE6 (29) 67 #define NV2080_NOTIFIERS_CE7 (30) 68 #define NV2080_NOTIFIERS_CE8 (31) 69 #define NV2080_NOTIFIERS_CE9 (32) 70 #define NV2080_NOTIFIERS_PSTATE_CHANGE (33) 71 #define NV2080_NOTIFIERS_HDCP_STATUS_CHANGE (34) 72 #define NV2080_NOTIFIERS_FIFO_EVENT_MTHD (35) 73 #define NV2080_NOTIFIERS_PRIV_RING_HANG (36) 74 #define NV2080_NOTIFIERS_RC_ERROR (37) 75 #define NV2080_NOTIFIERS_MSENC (38) 76 #define NV2080_NOTIFIERS_NVENC0 NV2080_NOTIFIERS_MSENC 77 #define NV2080_NOTIFIERS_NVENC1 (39) 78 #define NV2080_NOTIFIERS_NVENC2 (40) 79 #define NV2080_NOTIFIERS_UNUSED_0 (41) // Unused 80 #define NV2080_NOTIFIERS_ACPI_NOTIFY (42) 81 #define NV2080_NOTIFIERS_COOLER_DIAG_ZONE (43) 82 #define NV2080_NOTIFIERS_THERMAL_DIAG_ZONE (44) 83 #define NV2080_NOTIFIERS_AUDIO_HDCP_REQUEST (45) 84 #define NV2080_NOTIFIERS_WORKLOAD_MODULATION_CHANGE (46) 85 #define NV2080_NOTIFIERS_GPIO_0_RISING_INTERRUPT (47) 86 #define NV2080_NOTIFIERS_GPIO_1_RISING_INTERRUPT (48) 87 #define NV2080_NOTIFIERS_GPIO_2_RISING_INTERRUPT (49) 88 #define NV2080_NOTIFIERS_GPIO_3_RISING_INTERRUPT (50) 89 #define NV2080_NOTIFIERS_GPIO_4_RISING_INTERRUPT (51) 90 #define NV2080_NOTIFIERS_GPIO_5_RISING_INTERRUPT (52) 91 #define NV2080_NOTIFIERS_GPIO_6_RISING_INTERRUPT (53) 92 #define NV2080_NOTIFIERS_GPIO_7_RISING_INTERRUPT (54) 93 #define NV2080_NOTIFIERS_GPIO_8_RISING_INTERRUPT (55) 94 #define NV2080_NOTIFIERS_GPIO_9_RISING_INTERRUPT (56) 95 #define NV2080_NOTIFIERS_GPIO_10_RISING_INTERRUPT (57) 96 #define NV2080_NOTIFIERS_GPIO_11_RISING_INTERRUPT (58) 97 #define NV2080_NOTIFIERS_GPIO_12_RISING_INTERRUPT (59) 98 #define NV2080_NOTIFIERS_GPIO_13_RISING_INTERRUPT (60) 99 #define NV2080_NOTIFIERS_GPIO_14_RISING_INTERRUPT (61) 100 #define NV2080_NOTIFIERS_GPIO_15_RISING_INTERRUPT (62) 101 #define NV2080_NOTIFIERS_GPIO_16_RISING_INTERRUPT (63) 102 #define NV2080_NOTIFIERS_GPIO_17_RISING_INTERRUPT (64) 103 #define NV2080_NOTIFIERS_GPIO_18_RISING_INTERRUPT (65) 104 #define NV2080_NOTIFIERS_GPIO_19_RISING_INTERRUPT (66) 105 #define NV2080_NOTIFIERS_GPIO_20_RISING_INTERRUPT (67) 106 #define NV2080_NOTIFIERS_GPIO_21_RISING_INTERRUPT (68) 107 #define NV2080_NOTIFIERS_GPIO_22_RISING_INTERRUPT (69) 108 #define NV2080_NOTIFIERS_GPIO_23_RISING_INTERRUPT (70) 109 #define NV2080_NOTIFIERS_GPIO_24_RISING_INTERRUPT (71) 110 #define NV2080_NOTIFIERS_GPIO_25_RISING_INTERRUPT (72) 111 #define NV2080_NOTIFIERS_GPIO_26_RISING_INTERRUPT (73) 112 #define NV2080_NOTIFIERS_GPIO_27_RISING_INTERRUPT (74) 113 #define NV2080_NOTIFIERS_GPIO_28_RISING_INTERRUPT (75) 114 #define NV2080_NOTIFIERS_GPIO_29_RISING_INTERRUPT (76) 115 #define NV2080_NOTIFIERS_GPIO_30_RISING_INTERRUPT (77) 116 #define NV2080_NOTIFIERS_GPIO_31_RISING_INTERRUPT (78) 117 #define NV2080_NOTIFIERS_GPIO_0_FALLING_INTERRUPT (79) 118 #define NV2080_NOTIFIERS_GPIO_1_FALLING_INTERRUPT (80) 119 #define NV2080_NOTIFIERS_GPIO_2_FALLING_INTERRUPT (81) 120 #define NV2080_NOTIFIERS_GPIO_3_FALLING_INTERRUPT (82) 121 #define NV2080_NOTIFIERS_GPIO_4_FALLING_INTERRUPT (83) 122 #define NV2080_NOTIFIERS_GPIO_5_FALLING_INTERRUPT (84) 123 #define NV2080_NOTIFIERS_GPIO_6_FALLING_INTERRUPT (85) 124 #define NV2080_NOTIFIERS_GPIO_7_FALLING_INTERRUPT (86) 125 #define NV2080_NOTIFIERS_GPIO_8_FALLING_INTERRUPT (87) 126 #define NV2080_NOTIFIERS_GPIO_9_FALLING_INTERRUPT (88) 127 #define NV2080_NOTIFIERS_GPIO_10_FALLING_INTERRUPT (89) 128 #define NV2080_NOTIFIERS_GPIO_11_FALLING_INTERRUPT (90) 129 #define NV2080_NOTIFIERS_GPIO_12_FALLING_INTERRUPT (91) 130 #define NV2080_NOTIFIERS_GPIO_13_FALLING_INTERRUPT (92) 131 #define NV2080_NOTIFIERS_GPIO_14_FALLING_INTERRUPT (93) 132 #define NV2080_NOTIFIERS_GPIO_15_FALLING_INTERRUPT (94) 133 #define NV2080_NOTIFIERS_GPIO_16_FALLING_INTERRUPT (95) 134 #define NV2080_NOTIFIERS_GPIO_17_FALLING_INTERRUPT (96) 135 #define NV2080_NOTIFIERS_GPIO_18_FALLING_INTERRUPT (97) 136 #define NV2080_NOTIFIERS_GPIO_19_FALLING_INTERRUPT (98) 137 #define NV2080_NOTIFIERS_GPIO_20_FALLING_INTERRUPT (99) 138 #define NV2080_NOTIFIERS_GPIO_21_FALLING_INTERRUPT (100) 139 #define NV2080_NOTIFIERS_GPIO_22_FALLING_INTERRUPT (101) 140 #define NV2080_NOTIFIERS_GPIO_23_FALLING_INTERRUPT (102) 141 #define NV2080_NOTIFIERS_GPIO_24_FALLING_INTERRUPT (103) 142 #define NV2080_NOTIFIERS_GPIO_25_FALLING_INTERRUPT (104) 143 #define NV2080_NOTIFIERS_GPIO_26_FALLING_INTERRUPT (105) 144 #define NV2080_NOTIFIERS_GPIO_27_FALLING_INTERRUPT (106) 145 #define NV2080_NOTIFIERS_GPIO_28_FALLING_INTERRUPT (107) 146 #define NV2080_NOTIFIERS_GPIO_29_FALLING_INTERRUPT (108) 147 #define NV2080_NOTIFIERS_GPIO_30_FALLING_INTERRUPT (109) 148 #define NV2080_NOTIFIERS_GPIO_31_FALLING_INTERRUPT (110) 149 #define NV2080_NOTIFIERS_ECC_SBE (111) 150 #define NV2080_NOTIFIERS_ECC_DBE (112) 151 #define NV2080_NOTIFIERS_STEREO_EMITTER_DETECTION (113) 152 #define NV2080_NOTIFIERS_GC5_GPU_READY (114) 153 #define NV2080_NOTIFIERS_SEC2 (115) 154 #define NV2080_NOTIFIERS_GC6_REFCOUNT_INC (116) 155 #define NV2080_NOTIFIERS_GC6_REFCOUNT_DEC (117) 156 #define NV2080_NOTIFIERS_POWER_EVENT (118) 157 #define NV2080_NOTIFIERS_CLOCKS_CHANGE (119) 158 #define NV2080_NOTIFIERS_HOTPLUG_PROCESSING_COMPLETE (120) 159 #define NV2080_NOTIFIERS_PHYSICAL_PAGE_FAULT (121) 160 #define NV2080_NOTIFIERS_RESERVED122 (122) 161 #define NV2080_NOTIFIERS_NVLINK_ERROR_FATAL (123) 162 #define NV2080_NOTIFIERS_PRIV_REG_ACCESS_FAULT (124) 163 #define NV2080_NOTIFIERS_NVLINK_ERROR_RECOVERY_REQUIRED (125) 164 #define NV2080_NOTIFIERS_NVJPG (126) 165 #define NV2080_NOTIFIERS_NVJPEG0 NV2080_NOTIFIERS_NVJPG 166 #define NV2080_NOTIFIERS_NVJPEG1 (127) 167 #define NV2080_NOTIFIERS_NVJPEG2 (128) 168 #define NV2080_NOTIFIERS_NVJPEG3 (129) 169 #define NV2080_NOTIFIERS_NVJPEG4 (130) 170 #define NV2080_NOTIFIERS_NVJPEG5 (131) 171 #define NV2080_NOTIFIERS_NVJPEG6 (132) 172 #define NV2080_NOTIFIERS_NVJPEG7 (133) 173 #define NV2080_NOTIFIERS_RUNLIST_AND_ENG_IDLE (134) 174 #define NV2080_NOTIFIERS_RUNLIST_ACQUIRE (135) 175 #define NV2080_NOTIFIERS_RUNLIST_ACQUIRE_AND_ENG_IDLE (136) 176 #define NV2080_NOTIFIERS_RUNLIST_IDLE (137) 177 #define NV2080_NOTIFIERS_TSG_PREEMPT_COMPLETE (138) 178 #define NV2080_NOTIFIERS_RUNLIST_PREEMPT_COMPLETE (139) 179 #define NV2080_NOTIFIERS_CTXSW_TIMEOUT (140) 180 #define NV2080_NOTIFIERS_INFOROM_ECC_OBJECT_UPDATED (141) 181 #define NV2080_NOTIFIERS_NVTELEMETRY_REPORT_EVENT (142) 182 #define NV2080_NOTIFIERS_DSTATE_XUSB_PPC (143) 183 #define NV2080_NOTIFIERS_FECS_CTX_SWITCH (144) 184 #define NV2080_NOTIFIERS_XUSB_PPC_CONNECTED (145) 185 #define NV2080_NOTIFIERS_GR0 NV2080_NOTIFIERS_GRAPHICS 186 #define NV2080_NOTIFIERS_GR1 (146) 187 #define NV2080_NOTIFIERS_GR2 (147) 188 #define NV2080_NOTIFIERS_GR3 (148) 189 #define NV2080_NOTIFIERS_GR4 (149) 190 #define NV2080_NOTIFIERS_GR5 (150) 191 #define NV2080_NOTIFIERS_GR6 (151) 192 #define NV2080_NOTIFIERS_GR7 (152) 193 #define NV2080_NOTIFIERS_OFA (153) 194 #define NV2080_NOTIFIERS_OFA0 NV2080_NOTIFIERS_OFA 195 #define NV2080_NOTIFIERS_DSTATE_HDA (154) 196 #define NV2080_NOTIFIERS_POISON_ERROR_NON_FATAL (155) 197 #define NV2080_NOTIFIERS_POISON_ERROR_FATAL (156) 198 #define NV2080_NOTIFIERS_UCODE_RESET (157) 199 #define NV2080_NOTIFIERS_PLATFORM_POWER_MODE_CHANGE (158) 200 #define NV2080_NOTIFIERS_SMC_CONFIG_UPDATE (159) 201 #define NV2080_NOTIFIERS_INFOROM_RRL_OBJECT_UPDATED (160) 202 #define NV2080_NOTIFIERS_INFOROM_PBL_OBJECT_UPDATED (161) 203 #define NV2080_NOTIFIERS_LPWR_DIFR_PREFETCH_REQUEST (162) 204 #define NV2080_NOTIFIERS_SEC_FAULT_ERROR (163) 205 #define NV2080_NOTIFIERS_POSSIBLE_ERROR (164) 206 #define NV2080_NOTIFIERS_NVLINK_INFO_LINK_UP (165) 207 #define NV2080_NOTIFIERS_RESERVED166 (166) 208 #define NV2080_NOTIFIERS_RESERVED167 (167) 209 #define NV2080_NOTIFIERS_RESERVED168 (168) 210 #define NV2080_NOTIFIERS_RESERVED169 (169) 211 #define NV2080_NOTIFIERS_RESERVED170 (170) 212 #define NV2080_NOTIFIERS_RESERVED171 (171) 213 #define NV2080_NOTIFIERS_RESERVED172 (172) 214 #define NV2080_NOTIFIERS_RESERVED173 (173) 215 #define NV2080_NOTIFIERS_RESERVED174 (174) 216 #define NV2080_NOTIFIERS_RESERVED175 (175) 217 #define NV2080_NOTIFIERS_NVLINK_INFO_LINK_DOWN (176) 218 #define NV2080_NOTIFIERS_NVPCF_EVENTS (177) 219 #define NV2080_NOTIFIERS_HDMI_FRL_RETRAINING_REQUEST (178) 220 #define NV2080_NOTIFIERS_VRR_SET_TIMEOUT (179) 221 #define NV2080_NOTIFIERS_RESERVED180 (180) 222 #define NV2080_NOTIFIERS_AUX_POWER_EVENT (181) 223 #define NV2080_NOTIFIERS_AUX_POWER_STATE_CHANGE (182) 224 #define NV2080_NOTIFIERS_MAXCOUNT (183) 225 226 // Indexed GR notifier reference 227 #define NV2080_NOTIFIERS_GR(x) ((x == 0) ? (NV2080_NOTIFIERS_GR0) : (NV2080_NOTIFIERS_GR1 + (x - 1))) 228 #define NV2080_NOTIFIERS_GR_IDX(x) ((x) - NV2080_NOTIFIERS_GR0) 229 #define NV2080_NOTIFIER_TYPE_IS_GR(x) (((x) == NV2080_NOTIFIERS_GR0) || (((x) >= NV2080_NOTIFIERS_GR1) && ((x) <= NV2080_NOTIFIERS_GR7))) 230 231 // Indexed CE notifier reference 232 #define NV2080_NOTIFIERS_CE(x) (NV2080_NOTIFIERS_CE0 + (x)) 233 #define NV2080_NOTIFIERS_CE_IDX(x) ((x) - NV2080_NOTIFIERS_CE0) 234 #define NV2080_NOTIFIER_TYPE_IS_CE(x) (((x) >= NV2080_NOTIFIERS_CE0) && ((x) <= NV2080_NOTIFIERS_CE9)) 235 236 // Indexed MSENC notifier reference 237 #define NV2080_NOTIFIERS_NVENC(x) (NV2080_NOTIFIERS_NVENC0 + (x)) 238 #define NV2080_NOTIFIERS_NVENC_IDX(x) ((x) - NV2080_NOTIFIERS_NVENC0) 239 #define NV2080_NOTIFIER_TYPE_IS_NVENC(x) (((x) >= NV2080_NOTIFIERS_NVENC0) && ((x) <= NV2080_NOTIFIERS_NVENC2)) 240 // Indexed NVDEC notifier reference 241 #define NV2080_NOTIFIERS_NVDEC(x) (NV2080_NOTIFIERS_NVDEC0 + (x)) 242 #define NV2080_NOTIFIERS_NVDEC_IDX(x) ((x) - NV2080_NOTIFIERS_NVDEC0) 243 #define NV2080_NOTIFIER_TYPE_IS_NVDEC(x) (((x) >= NV2080_NOTIFIERS_NVDEC0) && ((x) <= NV2080_NOTIFIERS_NVDEC7)) 244 // Indexed NVJPEG notifier reference 245 #define NV2080_NOTIFIERS_NVJPEG(x) (NV2080_NOTIFIERS_NVJPEG0 + (x)) 246 #define NV2080_NOTIFIERS_NVJPEG_IDX(x) ((x) - NV2080_NOTIFIERS_NVJPEG0) 247 #define NV2080_NOTIFIER_TYPE_IS_NVJPEG(x) (((x) >= NV2080_NOTIFIERS_NVJPEG0) && ((x) <= NV2080_NOTIFIERS_NVJPEG7)) 248 249 // Indexed OFA notifier reference 250 #define NV2080_NOTIFIERS_OFAn(x) ((x == 0) ? (NV2080_NOTIFIERS_OFA0) : (NV2080_NOTIFIERS_MAXCOUNT)) 251 #define NV2080_NOTIFIERS_OFA_IDX(x) ((x == NV2080_NOTIFIERS_OFA0) ? (0) : (-1)) 252 #define NV2080_NOTIFIER_TYPE_IS_OFA(x) (((x) == NV2080_NOTIFIERS_OFA0)) 253 254 #define NV2080_NOTIFIERS_GPIO_RISING_INTERRUPT(pin) (NV2080_NOTIFIERS_GPIO_0_RISING_INTERRUPT + (pin)) 255 #define NV2080_NOTIFIERS_GPIO_FALLING_INTERRUPT(pin) (NV2080_NOTIFIERS_GPIO_0_FALLING_INTERRUPT + (pin)) 256 257 #define NV2080_SUBDEVICE_NOTIFICATION_STATUS_IN_PROGRESS (0x8000) 258 #define NV2080_SUBDEVICE_NOTIFICATION_STATUS_BAD_ARGUMENT (0x4000) 259 #define NV2080_SUBDEVICE_NOTIFICATION_STATUS_ERROR_INVALID_STATE (0x2000) 260 #define NV2080_SUBDEVICE_NOTIFICATION_STATUS_ERROR_STATE_IN_USE (0x1000) 261 #define NV2080_SUBDEVICE_NOTIFICATION_STATUS_DONE_SUCCESS (0x0000) 262 263 /* exported engine defines */ 264 #define NV2080_ENGINE_TYPE_NULL (0x00000000) 265 #define NV2080_ENGINE_TYPE_GRAPHICS (0x00000001) 266 #define NV2080_ENGINE_TYPE_GR0 NV2080_ENGINE_TYPE_GRAPHICS 267 #define NV2080_ENGINE_TYPE_GR1 (0x00000002) 268 #define NV2080_ENGINE_TYPE_GR2 (0x00000003) 269 #define NV2080_ENGINE_TYPE_GR3 (0x00000004) 270 #define NV2080_ENGINE_TYPE_GR4 (0x00000005) 271 #define NV2080_ENGINE_TYPE_GR5 (0x00000006) 272 #define NV2080_ENGINE_TYPE_GR6 (0x00000007) 273 #define NV2080_ENGINE_TYPE_GR7 (0x00000008) 274 #define NV2080_ENGINE_TYPE_COPY0 (0x00000009) 275 #define NV2080_ENGINE_TYPE_COPY1 (0x0000000a) 276 #define NV2080_ENGINE_TYPE_COPY2 (0x0000000b) 277 #define NV2080_ENGINE_TYPE_COPY3 (0x0000000c) 278 #define NV2080_ENGINE_TYPE_COPY4 (0x0000000d) 279 #define NV2080_ENGINE_TYPE_COPY5 (0x0000000e) 280 #define NV2080_ENGINE_TYPE_COPY6 (0x0000000f) 281 #define NV2080_ENGINE_TYPE_COPY7 (0x00000010) 282 #define NV2080_ENGINE_TYPE_COPY8 (0x00000011) 283 #define NV2080_ENGINE_TYPE_COPY9 (0x00000012) 284 #define NV2080_ENGINE_TYPE_BSP (0x00000013) 285 #define NV2080_ENGINE_TYPE_NVDEC0 NV2080_ENGINE_TYPE_BSP 286 #define NV2080_ENGINE_TYPE_NVDEC1 (0x00000014) 287 #define NV2080_ENGINE_TYPE_NVDEC2 (0x00000015) 288 #define NV2080_ENGINE_TYPE_NVDEC3 (0x00000016) 289 #define NV2080_ENGINE_TYPE_NVDEC4 (0x00000017) 290 #define NV2080_ENGINE_TYPE_NVDEC5 (0x00000018) 291 #define NV2080_ENGINE_TYPE_NVDEC6 (0x00000019) 292 #define NV2080_ENGINE_TYPE_NVDEC7 (0x0000001a) 293 #define NV2080_ENGINE_TYPE_MSENC (0x0000001b) 294 #define NV2080_ENGINE_TYPE_NVENC0 NV2080_ENGINE_TYPE_MSENC /* Mutually exclusive alias */ 295 #define NV2080_ENGINE_TYPE_NVENC1 (0x0000001c) 296 #define NV2080_ENGINE_TYPE_NVENC2 (0x0000001d) 297 #define NV2080_ENGINE_TYPE_VP (0x0000001e) 298 #define NV2080_ENGINE_TYPE_ME (0x0000001f) 299 #define NV2080_ENGINE_TYPE_PPP (0x00000020) 300 #define NV2080_ENGINE_TYPE_MPEG (0x00000021) 301 #define NV2080_ENGINE_TYPE_SW (0x00000022) 302 #define NV2080_ENGINE_TYPE_CIPHER (0x00000023) 303 #define NV2080_ENGINE_TYPE_TSEC NV2080_ENGINE_TYPE_CIPHER 304 #define NV2080_ENGINE_TYPE_VIC (0x00000024) 305 #define NV2080_ENGINE_TYPE_MP (0x00000025) 306 #define NV2080_ENGINE_TYPE_SEC2 (0x00000026) 307 #define NV2080_ENGINE_TYPE_HOST (0x00000027) 308 #define NV2080_ENGINE_TYPE_DPU (0x00000028) 309 #define NV2080_ENGINE_TYPE_PMU (0x00000029) 310 #define NV2080_ENGINE_TYPE_FBFLCN (0x0000002a) 311 #define NV2080_ENGINE_TYPE_NVJPG (0x0000002b) 312 #define NV2080_ENGINE_TYPE_NVJPEG0 NV2080_ENGINE_TYPE_NVJPG 313 #define NV2080_ENGINE_TYPE_NVJPEG1 (0x0000002c) 314 #define NV2080_ENGINE_TYPE_NVJPEG2 (0x0000002d) 315 #define NV2080_ENGINE_TYPE_NVJPEG3 (0x0000002e) 316 #define NV2080_ENGINE_TYPE_NVJPEG4 (0x0000002f) 317 #define NV2080_ENGINE_TYPE_NVJPEG5 (0x00000030) 318 #define NV2080_ENGINE_TYPE_NVJPEG6 (0x00000031) 319 #define NV2080_ENGINE_TYPE_NVJPEG7 (0x00000032) 320 #define NV2080_ENGINE_TYPE_OFA (0x00000033) 321 #define NV2080_ENGINE_TYPE_OFA0 NV2080_ENGINE_TYPE_OFA 322 #define NV2080_ENGINE_TYPE_RESERVED34 (0x00000034) 323 #define NV2080_ENGINE_TYPE_RESERVED35 (0x00000035) 324 #define NV2080_ENGINE_TYPE_RESERVED36 (0x00000036) 325 #define NV2080_ENGINE_TYPE_RESERVED37 (0x00000037) 326 #define NV2080_ENGINE_TYPE_RESERVED38 (0x00000038) 327 #define NV2080_ENGINE_TYPE_RESERVED39 (0x00000039) 328 #define NV2080_ENGINE_TYPE_RESERVED3a (0x0000003a) 329 #define NV2080_ENGINE_TYPE_RESERVED3b (0x0000003b) 330 #define NV2080_ENGINE_TYPE_RESERVED3c (0x0000003c) 331 #define NV2080_ENGINE_TYPE_RESERVED3d (0x0000003d) 332 #define NV2080_ENGINE_TYPE_RESERVED3e (0x0000003e) 333 #define NV2080_ENGINE_TYPE_LAST (0x0000003f) 334 #define NV2080_ENGINE_TYPE_ALLENGINES (0xffffffff) 335 336 // 337 // NV2080_ENGINE_TYPE_COPY_SIZE is now defined as the maximum possible CE size. 338 // It does not reflect the max supported NV2080_ENGINE_TYPE_COPY counts. Bug 3713687 #90. 339 // It needs to use NV2080_ENGINE_TYPE_IS_COPY() to check if a CE is valid when 340 // the clients try to enumerate all NV2080_ENGINE_TYPE_COPYs. 341 // 342 #define NV2080_ENGINE_TYPE_COPY_SIZE 64 343 344 #define NV2080_ENGINE_TYPE_NVENC_SIZE 3 345 #define NV2080_ENGINE_TYPE_NVJPEG_SIZE 8 346 #define NV2080_ENGINE_TYPE_NVDEC_SIZE 8 347 #define NV2080_ENGINE_TYPE_GR_SIZE 8 348 #define NV2080_ENGINE_TYPE_OFA_SIZE 1 349 350 // Indexed engines 351 #define NV2080_ENGINE_TYPE_COPY(i) (NV2080_ENGINE_TYPE_COPY0+(i)) 352 #define NV2080_ENGINE_TYPE_IS_COPY(i) (((i) >= NV2080_ENGINE_TYPE_COPY0) && ((i) <= NV2080_ENGINE_TYPE_COPY9)) 353 #define NV2080_ENGINE_TYPE_COPY_IDX(i) ((i) - NV2080_ENGINE_TYPE_COPY0) 354 355 #define NV2080_ENGINE_TYPE_NVENC(i) (NV2080_ENGINE_TYPE_NVENC0+(i)) 356 #define NV2080_ENGINE_TYPE_IS_NVENC(i) (((i) >= NV2080_ENGINE_TYPE_NVENC0) && ((i) < NV2080_ENGINE_TYPE_NVENC(NV2080_ENGINE_TYPE_NVENC_SIZE))) 357 #define NV2080_ENGINE_TYPE_NVENC_IDX(i) ((i) - NV2080_ENGINE_TYPE_NVENC0) 358 359 #define NV2080_ENGINE_TYPE_NVDEC(i) (NV2080_ENGINE_TYPE_NVDEC0+(i)) 360 #define NV2080_ENGINE_TYPE_IS_NVDEC(i) (((i) >= NV2080_ENGINE_TYPE_NVDEC0) && ((i) < NV2080_ENGINE_TYPE_NVDEC(NV2080_ENGINE_TYPE_NVDEC_SIZE))) 361 #define NV2080_ENGINE_TYPE_NVDEC_IDX(i) ((i) - NV2080_ENGINE_TYPE_NVDEC0) 362 363 #define NV2080_ENGINE_TYPE_NVJPEG(i) (NV2080_ENGINE_TYPE_NVJPEG0+(i)) 364 #define NV2080_ENGINE_TYPE_IS_NVJPEG(i) (((i) >= NV2080_ENGINE_TYPE_NVJPEG0) && ((i) < NV2080_ENGINE_TYPE_NVJPEG(NV2080_ENGINE_TYPE_NVJPEG_SIZE))) 365 #define NV2080_ENGINE_TYPE_NVJPEG_IDX(i) ((i) - NV2080_ENGINE_TYPE_NVJPEG0) 366 367 #define NV2080_ENGINE_TYPE_GR(i) (NV2080_ENGINE_TYPE_GR0 + (i)) 368 #define NV2080_ENGINE_TYPE_IS_GR(i) (((i) >= NV2080_ENGINE_TYPE_GR0) && ((i) < NV2080_ENGINE_TYPE_GR(NV2080_ENGINE_TYPE_GR_SIZE))) 369 #define NV2080_ENGINE_TYPE_GR_IDX(i) ((i) - NV2080_ENGINE_TYPE_GR0) 370 371 #define NV2080_ENGINE_TYPE_OFAn(i) ((i == 0) ? (NV2080_ENGINE_TYPE_OFA0) : (NV2080_ENGINE_TYPE_LAST)) 372 #define NV2080_ENGINE_TYPE_IS_OFA(i) (((i) == NV2080_ENGINE_TYPE_OFA0)) 373 #define NV2080_ENGINE_TYPE_OFA_IDX(i) ((i == NV2080_ENGINE_TYPE_OFA0) ? (0) : (-1)) 374 375 #define NV2080_ENGINE_TYPE_IS_VALID(i) (((i) > (NV2080_ENGINE_TYPE_NULL)) && ((i) < (NV2080_ENGINE_TYPE_LAST))) 376 377 /* exported client defines */ 378 #define NV2080_CLIENT_TYPE_TEX (0x00000001) 379 #define NV2080_CLIENT_TYPE_COLOR (0x00000002) 380 #define NV2080_CLIENT_TYPE_DEPTH (0x00000003) 381 #define NV2080_CLIENT_TYPE_DA (0x00000004) 382 #define NV2080_CLIENT_TYPE_FE (0x00000005) 383 #define NV2080_CLIENT_TYPE_SCC (0x00000006) 384 #define NV2080_CLIENT_TYPE_WID (0x00000007) 385 #define NV2080_CLIENT_TYPE_MSVLD (0x00000008) 386 #define NV2080_CLIENT_TYPE_MSPDEC (0x00000009) 387 #define NV2080_CLIENT_TYPE_MSPPP (0x0000000a) 388 #define NV2080_CLIENT_TYPE_VIC (0x0000000b) 389 #define NV2080_CLIENT_TYPE_ALLCLIENTS (0xffffffff) 390 391 /* GC5 Gpu Ready event defines */ 392 #define NV2080_GC5_EXIT_COMPLETE (0x00000001) 393 #define NV2080_GC5_ENTRY_ABORTED (0x00000002) 394 395 /* Platform Power Mode event defines */ 396 #define NV2080_PLATFORM_POWER_MODE_CHANGE_COMPLETION (0x00000000) 397 #define NV2080_PLATFORM_POWER_MODE_CHANGE_ACPI_NOTIFICATION (0x00000001) 398 399 /* NvNotification[] fields and values */ 400 #define NV2080_NOTIFICATION_STATUS_ERROR_PROTECTION_FAULT (0x4000) 401 /* pio method data structure */ 402 typedef volatile struct _cl2080_tag0 { 403 NvV32 Reserved00[0x7c0]; 404 } Nv2080Typedef, Nv20Subdevice0; 405 #define NV2080_TYPEDEF Nv20Subdevice0 406 407 /* HDCP Status change notification information */ 408 typedef struct Nv2080HdcpStatusChangeNotificationRec { 409 NvU32 displayId; 410 NvU32 hdcpStatusChangeNotif; 411 } Nv2080HdcpStatusChangeNotification; 412 413 /* Pstate change notification information */ 414 typedef struct Nv2080PStateChangeNotificationRec { 415 struct { 416 NvU32 nanoseconds[2]; /* nanoseconds since Jan. 1, 1970 0- 7*/ 417 } timeStamp; /* -0007*/ 418 NvU32 NewPstate; 419 } Nv2080PStateChangeNotification; 420 421 /* Clocks change notification information */ 422 typedef struct Nv2080ClocksChangeNotificationRec { 423 struct { 424 NvU32 nanoseconds[2]; /* nanoseconds since Jan. 1, 1970 0- 7*/ 425 } timeStamp; /* -0007*/ 426 } Nv2080ClocksChangeNotification; 427 428 /* WorkLoad Modulation state change notification information*/ 429 typedef struct Nv2080WorkloadModulationChangeNotificationRec { 430 struct { 431 NvU32 nanoseconds[2]; /* nanoseconds since Jan. 1, 1970 0- 7*/ 432 } timeStamp; /* -0007*/ 433 NvBool WorkloadModulationEnabled; 434 } Nv2080WorkloadModulationChangeNotification; 435 436 /* Hotplug notification information */ 437 typedef struct { 438 NvU32 plugDisplayMask; 439 NvU32 unplugDisplayMask; 440 } Nv2080HotplugNotification; 441 442 /* Power state changing notification information */ 443 typedef struct { 444 NvBool bSwitchToAC; 445 NvBool bGPUCapabilityChanged; 446 NvU32 displayMaskAffected; 447 } Nv2080PowerEventNotification; 448 449 /* DP IRQ notification information */ 450 typedef struct Nv2080DpIrqNotificationRec { 451 NvU32 displayId; 452 } Nv2080DpIrqNotification; 453 454 /* XUSB/PPC D-State change notification information */ 455 typedef struct Nv2080DstateXusbPpcNotificationRec { 456 NvU32 dstateXusb; 457 NvU32 dstatePpc; 458 } Nv2080DstateXusbPpcNotification; 459 460 /* XUSB/PPC Connection status notification information */ 461 typedef struct Nv2080XusbPpcConnectStateNotificationRec { 462 NvBool bConnected; 463 } Nv2080XusbPpcConnectStateNotification; 464 465 /* ACPI event notification information */ 466 typedef struct Nv2080ACPIEvent { 467 NvU32 event; 468 } Nv2080ACPIEvent; 469 470 /* Cooler Zone notification information */ 471 typedef struct _NV2080_COOLER_DIAG_ZONE_NOTIFICATION_REC { 472 NvU32 currentZone; 473 } NV2080_COOLER_DIAG_ZONE_NOTIFICATION_REC; 474 475 /* Thermal Zone notification information */ 476 typedef struct _NV2080_THERM_DIAG_ZONE_NOTIFICATION_REC { 477 NvU32 currentZone; 478 } NV2080_THERM_DIAG_ZONE_NOTIFICATION_REC; 479 480 /* HDCP ref count change notification information */ 481 typedef struct Nv2080AudioHdcpRequestRec { 482 NvU32 displayId; 483 NvU32 requestedState; 484 } Nv2080AudioHdcpRequest; 485 486 /* Gpu ready event information */ 487 typedef struct Nv2080GC5GpuReadyParams { 488 NvU32 event; 489 NvU32 sciIntr0; 490 NvU32 sciIntr1; 491 } Nv2080GC5GpuReadyParams; 492 493 /* Priv reg access fault notification information */ 494 typedef struct { 495 NvU32 errAddr; 496 } Nv2080PrivRegAccessFaultNotification; 497 498 /* HDA D-State change notification information 499 * See @HDACODEC_DSTATE for definitions 500 */ 501 typedef struct Nv2080DstateHdaCodecNotificationRec { 502 NvU32 dstateHdaCodec; 503 } Nv2080DstateHdaCodecNotification; 504 505 /* HDMI FRL retraining request notification information */ 506 typedef struct Nv2080HdmiFrlRequestNotificationRec { 507 NvU32 displayId; 508 } Nv2080HdmiFrlRequestNotification; 509 510 /* 511 * Platform Power Mode event information 512 */ 513 typedef struct _NV2080_PLATFORM_POWER_MODE_CHANGE_STATUS { 514 NvU8 platformPowerModeIndex; 515 NvU8 platformPowerModeMask; 516 NvU8 eventReason; 517 } NV2080_PLATFORM_POWER_MODE_CHANGE_STATUS; 518 519 #define NV2080_PLATFORM_POWER_MODE_CHANGE_INFO_INDEX 7:0 520 #define NV2080_PLATFORM_POWER_MODE_CHANGE_INFO_MASK 15:8 521 #define NV2080_PLATFORM_POWER_MODE_CHANGE_INFO_REASON 23:16 522 523 /* 524 * ENGINE_INFO_TYPE_NV2080 of the engine for which the QOS interrupt has been raised 525 */ 526 typedef struct { 527 NvU32 engineType; 528 } Nv2080QosIntrNotification; 529 530 typedef struct { 531 NvU64 physAddress NV_ALIGN_BYTES(8); 532 } Nv2080EccDbeNotification; 533 534 /* 535 * LPWR DIFR Prefetch Request - Size of L2 Cache 536 */ 537 typedef struct { 538 NvU32 l2CacheSize; 539 } Nv2080LpwrDifrPrefetchNotification; 540 541 /* 542 * Nvlink Link status change Notification 543 */ 544 typedef struct { 545 NvU32 GpuId; 546 NvU32 linkId; 547 } Nv2080NvlinkLnkChangeNotification; 548 549 typedef struct { 550 NvU32 head; 551 } Nv2080VrrSetTimeoutNotification; 552 553 #ifdef __cplusplus 554 }; /* extern "C" */ 555 #endif 556 557 #endif /* _cl2080_notification_h_ */ 558