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