1 /* 2 * SPDX-FileCopyrightText: Copyright (c) 2005-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 #pragma once 25 26 #include <nvtypes.h> 27 28 // 29 // This file was generated with FINN, an NVIDIA coding tool. 30 // Source file: ctrl/ctrl0073/ctrl0073system.finn 31 // 32 33 #include "ctrl/ctrl0073/ctrl0073base.h" 34 35 /* NV04_DISPLAY_COMMON system-level control commands and parameters */ 36 37 /* extract cap bit setting from tbl */ 38 #define NV0073_CTRL_SYSTEM_GET_CAP(tbl,c) (((NvU8)tbl[(1?c)]) & (0?c)) 39 40 /* Caps format is byte_index:bit_mask. 41 * Important: keep the number of bytes needed for these fields in sync with 42 * NV0073_CTRL_SYSTEM_CAPS_TBL_SIZE 43 */ 44 #define NV0073_CTRL_SYSTEM_CAPS_AA_FOS_GAMMA_COMP_SUPPORTED 0:0x01 45 #define NV0073_CTRL_SYSTEM_CAPS_TV_LOWRES_BUG_85919 0:0x02 46 #define NV0073_CTRL_SYSTEM_CAPS_DFP_GPU_SCALING_BUG_154102 0:0x04 47 #define NV0073_CTRL_SYSTEM_CAPS_SLI_INTERLACED_MODE_BUG_235218 0:0x08 // Deprecated 48 #define NV0073_CTRL_SYSTEM_CAPS_STEREO_DIN_AVAILABLE 0:0x10 49 #define NV0073_CTRL_SYSTEM_CAPS_OFFSET_PCLK_DFP_FOR_EMI_BUG_443891 0:0x20 50 #define NV0073_CTRL_SYSTEM_CAPS_GET_DMI_SCANLINE_SUPPORTED 0:0x40 51 /* 52 * Indicates support for HDCP Key Selection Vector (KSV) list and System 53 * Renewability Message (SRM) validation 54 */ 55 #define NV0073_CTRL_SYSTEM_CAPS_KSV_SRM_VALIDATION_SUPPORTED 0:0x80 56 57 #define NV0073_CTRL_SYSTEM_CAPS_SINGLE_HEAD_MST_SUPPORTED 1:0x01 58 #define NV0073_CTRL_SYSTEM_CAPS_SINGLE_HEAD_DUAL_SST_SUPPORTED 1:0x02 59 #define NV0073_CTRL_SYSTEM_CAPS_HDMI_2_0_SUPPORTED 1:0x04 60 #define NV0073_CTRL_SYSTEM_CAPS_CROSS_BAR_SUPPORTED 1:0x08 61 #define NV0073_CTRL_SYSTEM_CAPS_RASTER_LOCK_NEEDS_MIO_POWER 1:0x10 62 /* 63 * Indicates that modesets where no heads are increasing resource requirements, 64 * or no heads are decreasing resource requirements, can be done glitchlessly. 65 */ 66 #define NV0073_CTRL_SYSTEM_CAPS_GLITCHLESS_MODESET_SUPPORTED 1:0x20 67 /* Indicates the SW ACR is enabled for HDMI 2.1 due to Bug 3275257. */ 68 #define NV0073_CTRL_SYSTEM_CAPS_HDMI21_SW_ACR_BUG_3275257 1:0x40 69 70 /* Size in bytes of display caps table. Keep in sync with # of fields above. */ 71 #define NV0073_CTRL_SYSTEM_CAPS_TBL_SIZE 2U 72 73 /* 74 * NV0073_CTRL_CMD_SYSTEM_GET_CAPS_V2 75 * 76 * This command returns the set of display capabilities for the parent device 77 * in the form of an array of unsigned bytes. Display capabilities 78 * include supported features and required workarounds for the display 79 * engine(s) within the device, each represented by a byte offset into the 80 * table and a bit position within that byte. The set of display capabilities 81 * will be normalized across all GPUs within the device (a feature capability 82 * will be set only if it's supported on all GPUs while a required workaround 83 * capability will be set if any of the GPUs require it). 84 * 85 * [out] capsTbl 86 * The display caps bits will be transferred by the RM into this array of 87 * unsigned bytes. 88 * 89 * Possible status values returned are: 90 * NV_OK 91 */ 92 #define NV0073_CTRL_CMD_SYSTEM_GET_CAPS_V2 (0x730138U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_CAPS_V2_PARAMS_MESSAGE_ID" */ 93 94 #define NV0073_CTRL_SYSTEM_GET_CAPS_V2_PARAMS_MESSAGE_ID (0x38U) 95 96 typedef struct NV0073_CTRL_SYSTEM_GET_CAPS_V2_PARAMS { 97 NvU8 capsTbl[NV0073_CTRL_SYSTEM_CAPS_TBL_SIZE]; 98 } NV0073_CTRL_SYSTEM_GET_CAPS_V2_PARAMS; 99 100 /* 101 * NV0073_CTRL_CMD_SYSTEM_GET_NUM_HEADS 102 * 103 * This commands returns the number of heads supported by the specified 104 * subdevice and available for use by displays. 105 * 106 * subDeviceInstance 107 * This parameter specifies the subdevice instance within the 108 * NV04_DISPLAY_COMMON parent device to which the operation should be 109 * directed. This parameter must specify a value between zero and the 110 * total number of subdevices within the parent device. This parameter 111 * should be set to zero for default behavior. 112 * flags 113 * This parameter specifies optional flags to be used to while retrieving 114 * the number of heads. 115 * Possible valid flags are: 116 * NV0073_CTRL_SYSTEM_GET_NUM_HEADS_CLIENT 117 * This flag is used to request the number of heads that are 118 * currently in use by an NV client using a user display class 119 * instance (see NV15_VIDEO_LUT_CURSOR_DAC for an examle). If this 120 * flag is disabled then the total number of heads supported is 121 * returned. 122 * numHeads 123 * This parameter returns the number of usable heads for the specified 124 * subdevice. 125 * 126 * Possible status values returned are: 127 * NV_OK 128 * NV_ERR_INVALID_PARAM_STRUCT 129 * NV_ERR_INVALID_ARGUMENT 130 */ 131 #define NV0073_CTRL_CMD_SYSTEM_GET_NUM_HEADS (0x730102U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_NUM_HEADS_PARAMS_MESSAGE_ID" */ 132 133 #define NV0073_CTRL_SYSTEM_GET_NUM_HEADS_PARAMS_MESSAGE_ID (0x2U) 134 135 typedef struct NV0073_CTRL_SYSTEM_GET_NUM_HEADS_PARAMS { 136 NvU32 subDeviceInstance; 137 NvU32 flags; 138 NvU32 numHeads; 139 } NV0073_CTRL_SYSTEM_GET_NUM_HEADS_PARAMS; 140 141 /* valid get num heads flags */ 142 #define NV0073_CTRL_SYSTEM_GET_NUM_HEADS_FLAGS_CLIENT 0:0 143 #define NV0073_CTRL_SYSTEM_GET_NUM_HEADS_FLAGS_CLIENT_DISABLE (0x00000000U) 144 #define NV0073_CTRL_SYSTEM_GET_NUM_HEADS_FLAGS_CLIENT_ENABLE (0x00000001U) 145 146 147 148 149 /* 150 * NV0073_CTRL_CMD_SYSTEM_GET_SCANLINE 151 * 152 * This command returns the current RG scanline of the specified head on the 153 * specified subdevice. To get the DMI scanline on supported chips, use 154 * NV0073_CTRL_CMD_SYSTEM_GET_DMI_SCANLINE 155 * 156 * subDeviceInstance 157 * This parameter specifies the subdevice instance within the 158 * NV04_DISPLAY_COMMON parent device to which the operation should be 159 * directed. This parameter must specify a value between zero and the 160 * total number of subdevices within the parent device. This parameter 161 * should be set to zero for default behavior. 162 * head 163 * This parameter specifies the head for which the active display 164 * should be retrieved. This value must be between zero and the 165 * maximum number of heads supported by the subdevice. 166 * currentScanline 167 * This parameter returns the current RG scanline value for the specified 168 * head. If the head does not have a valid mode enabled then a scanline 169 * value of 0xffffffff is returned. 170 * bStereoEyeSupported (out) 171 * This parameter specifies whether stereoEye reporting is supported (this 172 * is hw dependent). Note that this value doesn't actually reflect whether 173 * given head is really in stereo mode. 174 * stereoEye (out) 175 * If supported (ie bStereoEyeSupported is TRUE), this parameter returns 176 * either NV0073_CTRL_SYSTEM_GET_SCANLINE_PARAMS_RIGHT_EYE or 177 * NV0073_CTRL_SYSTEM_GET_SCANLINE_PARAMS_LEFT_EYE, reflecting the 178 * stereo eye that is currently scanned out. Although this value typically 179 * changes at the beginning of vblank, the exact guarantee isn't more 180 * accurate than "somewhere in vblank". 181 * 182 * Possible status values returned are: 183 * NV_OK 184 * NV_ERR_INVALID_PARAM_STRUCT 185 * NV_ERR_INVALID_ARGUMENT 186 */ 187 #define NV0073_CTRL_CMD_SYSTEM_GET_SCANLINE (0x730108U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_SCANLINE_PARAMS_MESSAGE_ID" */ 188 189 #define NV0073_CTRL_CMD_SYSTEM_GET_SCANLINE_RIGHT_EYE 0x00000000U 190 #define NV0073_CTRL_CMD_SYSTEM_GET_SCANLINE_LEFT_EYE 0x00000001U 191 192 #define NV0073_CTRL_SYSTEM_GET_SCANLINE_PARAMS_MESSAGE_ID (0x8U) 193 194 typedef struct NV0073_CTRL_SYSTEM_GET_SCANLINE_PARAMS { 195 NvU32 subDeviceInstance; 196 NvU32 head; 197 NvU32 currentScanline; 198 NvBool bStereoEyeSupported; 199 NvU32 stereoEye; 200 } NV0073_CTRL_SYSTEM_GET_SCANLINE_PARAMS; 201 202 /* 203 * NV0073_CTRL_CMD_SYSTEM_GET_VBLANK_COUNTER 204 * 205 * This command returns the current VBlank counter of the specified head on the 206 * specified subdevice. 207 * 208 * subDeviceInstance 209 * This parameter specifies the subdevice instance within the 210 * NV04_DISPLAY_COMMON parent device to which the operation should be 211 * directed. This parameter must specify a value between zero and the 212 * total number of subdevices within the parent device. This parameter 213 * should be set to zero for default behavior. 214 * head 215 * This parameter specifies the head for which the vblank counter 216 * should be retrieved. This value must be between zero and the 217 * maximum number of heads supported by the subdevice. 218 * verticalBlankCounter 219 * This parameter returns the vblank counter value for the specified 220 * head. If the display mode is not valid or vblank not active then 221 * the verticalBlankCounter value is undefined. 222 * Possible status values returned are: 223 * NV_OK 224 * NV_ERR_INVALID_PARAM_STRUCT 225 * NV_ERR_INVALID_ARGUMENT 226 */ 227 #define NV0073_CTRL_CMD_SYSTEM_GET_VBLANK_COUNTER (0x730109U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_VBLANK_COUNTER_PARAMS_MESSAGE_ID" */ 228 229 #define NV0073_CTRL_SYSTEM_GET_VBLANK_COUNTER_PARAMS_MESSAGE_ID (0x9U) 230 231 typedef struct NV0073_CTRL_SYSTEM_GET_VBLANK_COUNTER_PARAMS { 232 NvU32 subDeviceInstance; 233 NvU32 head; 234 NvU32 verticalBlankCounter; 235 } NV0073_CTRL_SYSTEM_GET_VBLANK_COUNTER_PARAMS; 236 237 /* 238 * NV0073_CTRL_CMD_SYSTEM_GET_VBLANK_ENABLE 239 * 240 * This command returns the current VBlank enable status for the specified 241 * head. 242 * 243 * subDeviceInstance 244 * This parameter specifies the subdevice instance within the 245 * NV04_DISPLAY_COMMON parent device to which the operation should be 246 * directed. This parameter must specify a value between zero and the 247 * total number of subdevices within the parent device. This parameter 248 * should be set to zero for default behavior. 249 * head 250 * This parameter specifies the head for which the vblank status 251 * should be retrieved. This value must be between zero and the 252 * maximum number of heads supported by the subdevice. 253 * bEnabled 254 * This parameter returns the vblank enable status for the specified head. 255 * A value of NV_FALSE indicates that vblank interrupts are not currently 256 * enabled while a value of NV_TRUE indicates that vblank are currently 257 * enabled. 258 * 259 * Possible status values returned are: 260 * NV_OK 261 * NV_ERR_INVALID_PARAM_STRUCT 262 * NV_ERR_INVALID_ARGUMENT 263 */ 264 #define NV0073_CTRL_CMD_SYSTEM_GET_VBLANK_ENABLE (0x73010aU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_VBLANK_ENABLE_PARAMS_MESSAGE_ID" */ 265 266 #define NV0073_CTRL_SYSTEM_GET_VBLANK_ENABLE_PARAMS_MESSAGE_ID (0xAU) 267 268 typedef struct NV0073_CTRL_SYSTEM_GET_VBLANK_ENABLE_PARAMS { 269 NvU32 subDeviceInstance; 270 NvU32 head; 271 NvBool bEnabled; 272 } NV0073_CTRL_SYSTEM_GET_VBLANK_ENABLE_PARAMS; 273 274 /* 275 * NV0073_CTRL_CMD_SYSTEM_GET_SUPPORTED 276 * 277 * This command returns the set of supported display IDs for the specified 278 * subdevice in the form of a 32bit display mask. State from internal 279 * display connectivity tables is used to determine the set of possible 280 * display connections for the GPU. The presence of a display in the 281 * display mask only indicates the display is supported. The connectivity 282 * status of the display should be determined using the 283 * NV0073_CTRL_CMD_SYSTEM_GET_CONNECT_STATE command. The displayMask 284 * value returned by NV0073_CTRL_CMD_SYSTEM_GET_SUPPORTED is static 285 * and will remain consistent across boots of the system. 286 * 287 * subDeviceInstance 288 * This parameter specifies the subdevice instance within the 289 * NV04_DISPLAY_COMMON parent device to which the operation should be 290 * directed. This parameter must specify a value between zero and the 291 * total number of subdevices within the parent device. This parameter 292 * should be set to zero for default behavior. 293 * displayMask 294 * This parameter returns a NV0073_DISPLAY_MASK value describing the set 295 * of displays supported by the subdevice. An enabled bit in displayMask 296 * indicates the support of a display device with that displayId. 297 * displayMaskDDC 298 * This parameter returns a NV0073_DISPLAY_MASK value, indicating the 299 * subset of displayMask that supports DDC. 300 * 301 * Possible status values returned are: 302 * NV_OK 303 * NV_ERR_INVALID_PARAM_STRUCT 304 * NV_ERR_INVALID_ARGUMENT 305 */ 306 #define NV0073_CTRL_CMD_SYSTEM_GET_SUPPORTED (0x730120U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_SUPPORTED_PARAMS_MESSAGE_ID" */ 307 308 #define NV0073_CTRL_SYSTEM_GET_SUPPORTED_PARAMS_MESSAGE_ID (0x20U) 309 310 typedef struct NV0073_CTRL_SYSTEM_GET_SUPPORTED_PARAMS { 311 NvU32 subDeviceInstance; 312 NvU32 displayMask; 313 NvU32 displayMaskDDC; 314 } NV0073_CTRL_SYSTEM_GET_SUPPORTED_PARAMS; 315 316 /* 317 * NV0073_CTRL_CMD_SYSTEM_GET_CONNECT_STATE 318 * 319 * This command can be used to check the presence of a mask of display 320 * devices on the specified subdevice. 321 * 322 * subDeviceInstance 323 * This parameter specifies the subdevice instance within the 324 * NV04_DISPLAY_COMMON parent device to which the operation should be 325 * directed. This parameter must specify a value between zero and the 326 * total number of subdevices within the parent device. This parameter 327 * should be set to zero for default behavior. 328 * flags 329 * This parameter specifies optional flags to be used while retrieving 330 * the connection state information. 331 * Here are the current defined fields: 332 * NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_METHOD 333 * A client uses this field to indicate what method it wishes the 334 * system to use when determining the presence of attached displays. 335 * Possible values are: 336 * NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_METHOD_DEFAULT 337 * The system decides what method to use. 338 * NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_METHOD_CACHED 339 * Return the last full detection state for the display mask. 340 * safety.) 341 * NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_METHOD_ECONODDC 342 * Ping the DDC address of the given display mask to check for 343 * a connected device. This is a lightweight method to check 344 * for a present device. 345 * NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_DDC 346 * A client uses this field to indicate whether to allow DDC during 347 * this detection or to not use it. 348 * Possible values are: 349 * NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_DDC_DEFAULT 350 * The system will use DDC as needed for each display. 351 * NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_DDC_DISABLE 352 * The system will not use DDC for any display. If DDC is 353 * disabled, this detection state will not be cached. 354 * NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_LOAD 355 * A client uses this field to indicate whether to detect loads 356 * during this detection or to not use it. 357 * Possible values are: 358 * NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_LOAD_DEFAULT 359 * The system will use load detection as needed for each display. 360 * NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_LOAD_DISABLE 361 * The system will not use load detection for any display. If 362 * load detection is disabled, this detection state will not 363 * be cached. 364 * displayMask 365 * This parameter specifies an NV0073_DISPLAY_MASK value describing 366 * the set of displays for which connectivity status is to be checked. 367 * If a display is present then the corresponding bit in the display 368 * mask is left enabled. If the display is not present then the 369 * corresponding bit in the display mask is disabled. Upon return this 370 * parameter contains the subset of displays in the mask that are 371 * connected. 372 * 373 * If displayMask includes bit(s) that correspond to a TV encoder, the 374 * result will be simply 'yes' or 'no' without any indication of which 375 * connector(s) are actually attached. For fine-grained TV attachment 376 * detection, please see NV0073_CTRL_CMD_TV_GET_ATTACHMENT_STATUS. 377 * retryTimeMs 378 * This parameter is an output to this command. In case of 379 * NVOS_STATUS_ERROR_RETRY return status, this parameter returns the time 380 * duration in milli-seconds after which client should retry this command. 381 * 382 * Possible status values returned are: 383 * NV_OK 384 * NV_ERR_INVALID_PARAM_STRUCT 385 * NV_ERR_INVALID_ARGUMENT 386 * NVOS_STATUS_ERROR_RETRY 387 */ 388 #define NV0073_CTRL_CMD_SYSTEM_GET_CONNECT_STATE (0x730122U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_PARAMS_MESSAGE_ID" */ 389 390 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_PARAMS_MESSAGE_ID (0x22U) 391 392 typedef struct NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_PARAMS { 393 NvU32 subDeviceInstance; 394 NvU32 flags; 395 NvU32 displayMask; 396 NvU32 retryTimeMs; 397 } NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_PARAMS; 398 399 /* valid get connect state flags */ 400 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_METHOD 1:0 401 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_METHOD_DEFAULT (0x00000000U) 402 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_METHOD_CACHED (0x00000001U) 403 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_METHOD_ECONODDC (0x00000002U) 404 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_DDC 4:4 405 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_DDC_DEFAULT (0x00000000U) 406 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_DDC_DISABLE (0x00000001U) 407 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_LOAD 5:5 408 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_LOAD_DEFAULT (0x00000000U) 409 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_LOAD_DISABLE (0x00000001U) 410 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_VBLANK 6:6 411 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_VBLANK_DEFAULT (0x00000000U) 412 #define NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_FLAGS_VBLANK_SAFE (0x00000001U) 413 414 415 /* 416 * NV0073_CTRL_CMD_SYSTEM_GET_HOTPLUG_CONFIG 417 * 418 * This command can be used to retrieve dynamic hotplug state information that 419 * are currently recorded by the RM. This information can be used by the client 420 * to determine which displays to detect after a hotplug event occurs. Or if 421 * the client knows that this device generates a hot plug/unplug signal on all 422 * connectors, then this can be used to cull displays from detection. 423 * 424 * subDeviceInstance 425 * This parameter specifies the subdevice instance within the 426 * NV04_DISPLAY_COMMON parent device to which the operation should be 427 * directed. This parameter must specify a value between zero and the 428 * total number of subdevices within the parent device. This parameter 429 * should be set to zero for default behavior. 430 * flags 431 * This parameter specifies optional flags to be used while retrieving 432 * or changing the hotplug configuration. 433 * No flags are currently defined. 434 * hotplugEventMask 435 * For _GET_HOTPLUG_CONFIG, this returns which connectors the client 436 * has asked for notifications for, when a hotplug event is detected. 437 * Events can only be provided for connectors whose displayID is set 438 * by the system in the hotplugInterruptible field. 439 * hotplugPollable 440 * For _GET_HOTPLUG_CONFIG, this returns which connectors are pollable 441 * in some non-destructive fashion. 442 * hotplugInterruptible 443 * For _GET_HOTPLUG_CONFIG, this returns which connectors are capable 444 * of generating interrupts. 445 * 446 * This display mask specifies an NV0073_DISPLAY_MASK value describing 447 * the set of displays that have seen a hotplug or hotunplug event 448 * sometime after the last valid EDID read. If the device never has 449 * a valid EDID read, then it will always be listed here. 450 * 451 * Possible status values returned are: 452 * NV_OK 453 * NV_ERR_INVALID_PARAM_STRUCT 454 * NV_ERR_INVALID_ARGUMENT 455 */ 456 457 458 #define NV0073_CTRL_CMD_SYSTEM_GET_HOTPLUG_CONFIG (0x730123U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_SET_HOTPLUG_CONFIG_PARAMS_MESSAGE_ID" */ 459 460 #define NV0073_CTRL_SYSTEM_GET_SET_HOTPLUG_CONFIG_PARAMS_MESSAGE_ID (0x23U) 461 462 typedef struct NV0073_CTRL_SYSTEM_GET_SET_HOTPLUG_CONFIG_PARAMS { 463 NvU32 subDeviceInstance; 464 NvU32 flags; 465 NvU32 hotplugEventMask; 466 NvU32 hotplugPollable; 467 NvU32 hotplugInterruptible; 468 NvU32 hotplugAlwaysAttached; 469 } NV0073_CTRL_SYSTEM_GET_SET_HOTPLUG_CONFIG_PARAMS; 470 471 /* 472 * NV0073_CTRL_CMD_SYSTEM_GET_HOTPLUG_STATE 473 * 474 * This command can be used to retrieve dynamic hotplug state information that 475 * are currently recorded by the RM. This information can be used by the client 476 * to determine which displays to detect after a hotplug event occurs. Or if 477 * the client knows that this device generates a hot plug/unplug signal on all 478 * connectors, then this can be used to cull displays from detection. 479 * 480 * subDeviceInstance 481 * This parameter specifies the subdevice instance within the 482 * NV04_DISPLAY_COMMON parent device to which the operation should be 483 * directed. This parameter must specify a value between zero and the 484 * total number of subdevices within the parent device. This parameter 485 * should be set to zero for default behavior. 486 * flags 487 * This parameter specifies optional flags to be used while retrieving 488 * the hotplug state information. 489 * Here are the current defined fields: 490 * NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_FLAGS_LID 491 * A client uses this field to determine the lid state. 492 * Possible values are: 493 * NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_FLAGS_LID_OPEN 494 * The lid is open. 495 * NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_FLAGS_LID_CLOSED 496 * The lid is closed. The client should remove devices as 497 * reported inside the 498 * NV0073_CTRL_SYSTEM_GET_CONNECT_POLICY_PARAMS.lidClosedMask. 499 * hotplugAfterEdidMask 500 * This display mask specifies an NV0073_DISPLAY_MASK value describing 501 * the set of displays that have seen a hotplug or hotunplug event 502 * sometime after the last valid EDID read. If the device never has 503 * a valid EDID read, then it will always be listed here. 504 * 505 * Possible status values returned are: 506 * NV_OK 507 * NV_ERR_INVALID_PARAM_STRUCT 508 * NV_ERR_INVALID_ARGUMENT 509 */ 510 511 512 #define NV0073_CTRL_CMD_SYSTEM_GET_HOTPLUG_STATE (0x730124U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_PARAMS_MESSAGE_ID" */ 513 514 #define NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_PARAMS_MESSAGE_ID (0x24U) 515 516 typedef struct NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_PARAMS { 517 NvU32 subDeviceInstance; 518 NvU32 flags; 519 NvU32 hotplugAfterEdidMask; 520 } NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_PARAMS; 521 522 /* valid get hoplug state flags */ 523 #define NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_FLAGS_LID 0:0 524 #define NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_FLAGS_LID_OPEN (0x00000000U) 525 #define NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_FLAGS_LID_CLOSED (0x00000001U) 526 527 /* 528 * NV0073_CTRL_CMD_SYSTEM_GET_HEAD_ROUTING_MAP 529 * 530 * This command can be used to retrieve the suggested head routing map 531 * for the specified display mask. A head routing map describes the 532 * suggested crtc (or head) assignments for each display in the specified 533 * mask. 534 * 535 * Up to MAX_DISPLAYS displays may be specified in the display mask. Displays 536 * are numbered from zero beginning with the lowest bit position set in the 537 * mask. The corresponding head assignment for each of specified displays can 538 * then be found in the respective per-device field in the routing map. 539 * 540 * If a particular display cannot be successfully assigned a position in the 541 * head routing map then it is removed from the display mask. 542 * 543 * subDeviceInstance 544 * This parameter specifies the subdevice instance within the 545 * NV04_DISPLAY_COMMON parent device to which the operation should be 546 * directed. This parameter must specify a value between zero and the 547 * total number of subdevices within the parent device. This parameter 548 * should be set to zero for default behavior. 549 * displayMask 550 * This parameter specifies the NV0073_DISPLAY_MASK value for which 551 * the head routing map is desired. Each enabled bit indicates 552 * a display device to include in the routing map. Enabled bits 553 * must represent supported displays as indicated by the 554 * NV0073_CTRL_CMD_SYSTEM_GET_SUPPORTED command. If a particular 555 * display cannot be included in the routing map then it's corresponding 556 * bit in the displayMask will be disabled. A return value of 0 in 557 * displayMask indicates that a head routing map could not be constructed 558 * with the given display devices. 559 * oldDisplayMask 560 * This optional parameter specifies a prior display mask to be 561 * used when generating the head routing map to be returned in 562 * headRoutingMap. Displays set in oldDisplayMask are retained 563 * if possible in the new routing map. 564 * oldHeadRoutingMap 565 * This optional parameter specifies a prior head routing map to be 566 * used when generating the new routing map to be returned in 567 * headRoutingMap. Head assignments in oldHeadRoutingMap are 568 * retained if possible in the new routing map. 569 * headRoutingMap 570 * This parameter returns the new head routing map. This parameter 571 * is organized into eight distinct fields, each containing the head 572 * assignment for the corresponding display in display mask. 573 * 574 * Possible status values returned are: 575 * NV_OK 576 * NV_ERR_INVALID_PARAM_STRUCT 577 * NV_ERR_INVALID_ARGUMENT 578 */ 579 #define NV0073_CTRL_CMD_SYSTEM_GET_HEAD_ROUTING_MAP (0x730125U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_HEAD_ROUTING_MAP_PARAMS_MESSAGE_ID" */ 580 581 #define NV0073_CTRL_SYSTEM_GET_HEAD_ROUTING_MAP_PARAMS_MESSAGE_ID (0x25U) 582 583 typedef struct NV0073_CTRL_SYSTEM_GET_HEAD_ROUTING_MAP_PARAMS { 584 NvU32 subDeviceInstance; 585 NvU32 displayMask; 586 NvU32 oldDisplayMask; 587 NvU32 oldHeadRoutingMap; 588 NvU32 headRoutingMap; 589 } NV0073_CTRL_SYSTEM_GET_HEAD_ROUTING_MAP_PARAMS; 590 591 /* maximum number of allowed displays in a routing map */ 592 #define NV0073_CTRL_SYSTEM_HEAD_ROUTING_MAP_MAX_DISPLAYS (8U) 593 594 /* per-display head assignments in a routing map */ 595 #define NV0073_CTRL_SYSTEM_HEAD_ROUTING_MAP_DISPLAY0 3:0 596 #define NV0073_CTRL_SYSTEM_HEAD_ROUTING_MAP_DISPLAY1 7:4 597 #define NV0073_CTRL_SYSTEM_HEAD_ROUTING_MAP_DISPLAY2 11:8 598 #define NV0073_CTRL_SYSTEM_HEAD_ROUTING_MAP_DISPLAY3 15:12 599 #define NV0073_CTRL_SYSTEM_HEAD_ROUTING_MAP_DISPLAY4 19:16 600 #define NV0073_CTRL_SYSTEM_HEAD_ROUTING_MAP_DISPLAY5 23:20 601 #define NV0073_CTRL_SYSTEM_HEAD_ROUTING_MAP_DISPLAY6 27:24 602 #define NV0073_CTRL_SYSTEM_HEAD_ROUTING_MAP_DISPLAY7 31:28 603 604 605 /* 606 * NV0073_CTRL_CMD_SYSTEM_GET_ACTIVE 607 * 608 * This command returns the active display ID for the specified head 609 * on the specified subdevice. The active display may be established 610 * at system boot by low-level software and can then be later modified 611 * by an NV client using a user display class instance (see 612 * NV15_VIDEO_LUT_CURSOR_DAC). 613 * 614 * subDeviceInstance 615 * This parameter specifies the subdevice instance within the 616 * NV04_DISPLAY_COMMON parent device to which the operation should be 617 * directed. This parameter must specify a value between zero and the 618 * total number of subdevices within the parent device. This parameter 619 * should be set to zero for default behavior. 620 * head 621 * This parameter specifies the head for which the active display 622 * should be retrieved. This value must be between zero and the 623 * maximum number of heads supported by the subdevice. 624 * flags 625 * This parameter specifies optional flags to be used to while retrieving 626 * the active display information. 627 * Possible valid flags are: 628 * NV0073_CTRL_SYSTEM_GET_ACTIVE_FLAGS_CLIENT 629 * This flag is used to limit the search for the active display to 630 * that established by an NV client. If this flag is not specified, 631 * then any active display is returned (setup at system boot by 632 * low-level software or later by an NV client). 633 * displayId 634 * This parameter returns the displayId of the active display. A value 635 * of zero indicates no display is active. 636 * 637 * Possible status values returned are: 638 * NV_OK 639 * NV_ERR_INVALID_PARAM_STRUCT 640 * NV_ERR_INVALID_ARGUMENT 641 */ 642 #define NV0073_CTRL_CMD_SYSTEM_GET_ACTIVE (0x730126U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_ACTIVE_PARAMS_MESSAGE_ID" */ 643 644 #define NV0073_CTRL_SYSTEM_GET_ACTIVE_PARAMS_MESSAGE_ID (0x26U) 645 646 typedef struct NV0073_CTRL_SYSTEM_GET_ACTIVE_PARAMS { 647 NvU32 subDeviceInstance; 648 NvU32 head; 649 NvU32 flags; 650 NvU32 displayId; 651 } NV0073_CTRL_SYSTEM_GET_ACTIVE_PARAMS; 652 653 /* valid get active flags */ 654 #define NV0073_CTRL_SYSTEM_GET_ACTIVE_FLAGS_CLIENT 0:0 655 #define NV0073_CTRL_SYSTEM_GET_ACTIVE_FLAGS_CLIENT_DISABLE (0x00000000U) 656 #define NV0073_CTRL_SYSTEM_GET_ACTIVE_FLAGS_CLIENT_ENABLE (0x00000001U) 657 658 659 660 /* 661 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP 662 * 663 * This structure defines the mapping between the RM's displayId and the 664 * defined ACPI IDs for each display. 665 * displayId 666 * This parameter is a handle to a single display output path from the 667 * GPU pins to the display connector. Each display ID is defined by one bit. 668 * A zero in this parameter indicates a skip entry. 669 * acpiId 670 * This parameter defines the corresponding ACPI ID of the displayId. 671 * flags 672 * This parameter specifies optional flags that describe the association 673 * between the display ID and the ACPI ID. 674 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_ORIGIN 675 * This field describes where the ACPI was found. 676 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_ORIGIN_RM 677 * The ACPI ID was generated by RM code. 678 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_ORIGIN_DOD 679 * The ACPI ID was found via the ACPI _DOD call. 680 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_ORIGIN_CLIENT 681 * The ACPI ID was generated by RM Client and sent to RM. Note this 682 * must be set on a NV0073_CTRL_CMD_SYSTEM_SET_ACPI_ID_MAP call. 683 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_SNAG_UNDOCKED 684 * This flag explains that the ACPI ID is only valid when the system 685 * is undocked. If this flag is not set, the ACPI ID is valid always. 686 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_SNAG_DOCKED 687 * This flag explains that the ACPI ID is only valid when the system 688 * is docked. If this flag is not set, the ACPI ID is valid always. 689 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_BIOS_DETECT 690 * This flag is set only if the _DOD returns that the device can be 691 * detected by the system BIOS. This flag is copied directly from 692 * the ACPI spec. 693 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_NON_VGA_OUTPUT 694 * This flag is set only if the _DOD returns that the device is 695 * a non-VGA device whose power is related to the VGA device. 696 * i.e. TV tuner, DVD decoder, Video capture. This flag is copied 697 * directly from the ACPI spec. 698 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_MULTIHEAD_ID 699 * This value is set only if the _DOD returns it. The number 700 * indicates the head output of a multi-head device. This has no 701 * relation to the term, Head, currently used in the RM today. 702 * This is strictly a copy of the value directly from the ACPI spec. 703 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_SCHEME 704 * This flag is set only if the _DOD returns that the acpiID follows 705 * the ACPI 3.0 spec. This flag is copied directly from 706 * the ACPI spec. 707 * 708 */ 709 710 typedef struct NV0073_CTRL_SYSTEM_ACPI_ID_MAP_PARAMS { 711 NvU32 displayId; 712 NvU32 acpiId; 713 NvU32 flags; 714 } NV0073_CTRL_SYSTEM_ACPI_ID_MAP_PARAMS; 715 716 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_ORIGIN 1:0 717 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_ORIGIN_RM 0x00000000U 718 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_ORIGIN_DOD 0x00000001U 719 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_ORIGIN_CLIENT 0x00000002U 720 721 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_SNAG_UNDOCKED 2:2 722 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_SNAG_UNDOCKED_FALSE 0x00000000U 723 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_SNAG_UNDOCKED_TRUE 0x00000001U 724 725 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_SNAG_DOCKED 3:3 726 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_SNAG_DOCKED_FALSE 0x00000000U 727 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_SNAG_DOCKED_TRUE 0x00000001U 728 729 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_BIOS_DETECT 16:16 730 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_BIOS_DETECT_FALSE 0x00000000U 731 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_BIOS_DETECT_TRUE 0x00000001U 732 733 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_NON_VGA_OUTPUT 17:17 734 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_NON_VGA_OUTPUT_FALSE 0x00000000U 735 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_NON_VGA_OUTPUT_TRUE 0x00000001U 736 737 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_MULTIHEAD_ID 20:18 738 739 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_SCHEME 31:31 740 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_SCHEME_VENDOR 0x00000000U 741 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_DOD_SCHEME_30 0x00000001U 742 743 #define NV0073_CTRL_SYSTEM_ACPI_ID_MAP_MAX_DISPLAYS (16U) 744 745 /* 746 * NV0073_CTRL_CMD_SYSTEM_GET_ACPI_ID_MAP 747 * 748 * This command retrieves the mapping between the RM's displayId and the 749 * defined ACPI IDs for each display. 750 * 751 * subDeviceInstance 752 * This parameter specifies the subdevice instance within the 753 * NV04_DISPLAY_COMMON parent device to which the operation should be 754 * directed. This parameter must specify a value between zero and 755 * the total number of subdevices within the parent device. It should 756 * be set to zero for default behavior. 757 * NV0073_CTRL_SYSTEM_ACPI_ID_MAP_PARAMS 758 * An array of display ID to ACPI ids with flags for each description. 759 * 760 * Possible status values returned are: 761 * NV_OK 762 * NV_ERR_INVALID_ARGUMENT 763 * Only returned if subdeviceInstance was not valid. 764 */ 765 766 #define NV0073_CTRL_CMD_SYSTEM_GET_ACPI_ID_MAP (0x73015aU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_ACPI_ID_MAP_PARAMS_MESSAGE_ID" */ 767 768 769 #define NV0073_CTRL_SYSTEM_GET_ACPI_ID_MAP_PARAMS_MESSAGE_ID (0x5AU) 770 771 typedef struct NV0073_CTRL_SYSTEM_GET_ACPI_ID_MAP_PARAMS { 772 NvU32 subDeviceInstance; 773 NV0073_CTRL_SYSTEM_ACPI_ID_MAP_PARAMS acpiIdMap[NV0073_CTRL_SYSTEM_ACPI_ID_MAP_MAX_DISPLAYS]; 774 } NV0073_CTRL_SYSTEM_GET_ACPI_ID_MAP_PARAMS; 775 776 /* 777 * NV0073_CTRL_CMD_SYSTEM_GET_INTERNAL_DISPLAYS 778 * 779 * This command returns the set of internal (safe) display IDs for the specified 780 * subdevice in the form of a 32bit display mask. Safe means the displays do 781 * not require copy protection as they are on the motherboard. 782 * 783 * subDeviceInstance 784 * This parameter specifies the subdevice instance within the 785 * NV04_DISPLAY_COMMON parent device to which the operation should be 786 * directed. This parameter must specify a value between zero and the 787 * total number of subdevices within the parent device. This parameter 788 * should be set to zero for default behavior. 789 * internalDisplaysMask 790 * This parameter returns a NV0073_DISPLAY_MASK value describing the set 791 * of displays that are internal (safe) and which do not require copy 792 * protection schemes. 793 * availableInternalDisplaysMask 794 * This parameter returns a NV0073_DISPLAY_MASK value describing the set 795 * of displays that are internal and available for use. 796 * 797 * Possible status values returned are: 798 * NV_OK 799 * NV_ERR_INVALID_PARAM_STRUCT 800 * NV_ERR_INVALID_ARGUMENT 801 */ 802 #define NV0073_CTRL_CMD_SYSTEM_GET_INTERNAL_DISPLAYS (0x73015bU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_INTERNAL_DISPLAYS_PARAMS_MESSAGE_ID" */ 803 804 #define NV0073_CTRL_SYSTEM_GET_INTERNAL_DISPLAYS_PARAMS_MESSAGE_ID (0x5BU) 805 806 typedef struct NV0073_CTRL_SYSTEM_GET_INTERNAL_DISPLAYS_PARAMS { 807 NvU32 subDeviceInstance; 808 NvU32 internalDisplaysMask; 809 NvU32 availableInternalDisplaysMask; 810 } NV0073_CTRL_SYSTEM_GET_INTERNAL_DISPLAYS_PARAMS; 811 812 /* 813 * NV0073_CTRL_CMD_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED 814 * 815 * This command is used to notify RM that all subdevices are ready for ACPI 816 * calls. The caller must make sure that the OS is ready to handle the ACPI 817 * calls for each ACPI ID. So, this call must be done after the OS has 818 * initialized all the display ACPI IDs to this subdevice. 819 * Besides, the ACPI spec provides a function for the display drivers to read 820 * the EDID directly from the SBIOS for each display's ACPI ID. This function 821 * is used to override the EDID found from a I2C or DPAux based transaction. 822 * This command will also attempt to call the ACPI _DDC function to read the 823 * EDID from the SBIOS for all displayIDs. If an EDID is found from this call, 824 * the RM will store that new EDID in the EDID buffer of that OD. 825 * 826 * subDeviceInstance 827 * This parameter specifies the subdevice instance within the 828 * NV04_DISPLAY_COMMON parent device to which the operation should be 829 * directed. This parameter must specify a value between zero and the 830 * total number of subdevices within the parent device. This parameter 831 * should be set to zero for default behavior. 832 * 833 * Possible status values returned are: 834 * NV_OK 835 * NV_ERR_INVALID_PARAM_STRUCT 836 * NV_ERR_NOT_SUPPORTED 837 * 838 */ 839 840 #define NV0073_CTRL_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED_PARAMS_MESSAGE_ID (0x5CU) 841 842 typedef struct NV0073_CTRL_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED_PARAMS { 843 NvU32 subDeviceInstance; 844 } NV0073_CTRL_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED_PARAMS; 845 846 #define NV0073_CTRL_CMD_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED (0x73015cU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_ACPI_SUBSYSTEM_ACTIVATED_PARAMS_MESSAGE_ID" */ 847 848 849 /* 850 * NV0073_CTRL_SYSTEM_CONNECTOR_INFO 851 * 852 * This structure describes a single connector table entry. 853 * 854 * type 855 * This field specifies the connector type. 856 * displayMask 857 * This field specifies the the displayMask to which the connector belongs. 858 * location 859 * This field specifies the placement of the connector on the platform. 860 * hotplug 861 * This field specifies hotplug capabilities (if any) for the connector. 862 */ 863 typedef struct NV0073_CTRL_SYSTEM_CONNECTOR_INFO { 864 NvU32 type; 865 NvU32 displayMask; 866 NvU32 location; 867 NvU32 hotplug; 868 } NV0073_CTRL_SYSTEM_CONNECTOR_INFO; 869 870 /* valid type values */ 871 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_VGA_15_PIN (0x00000000U) 872 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DVI_A (0x00000001U) 873 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_POD_VGA_15_PIN (0x00000002U) 874 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_TV_COMPOSITE (0x00000010U) 875 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_TV_SVIDEO (0x00000011U) 876 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_TV_SVIDEO_BO_COMPOSITE (0x00000012U) 877 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_TV_COMPONENT (0x00000013U) 878 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_TV_SCART (0x00000014U) 879 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_TV_SCART_EIAJ4120 (0x00000014U) 880 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_TV_EIAJ4120 (0x00000017U) 881 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_PC_POD_HDTV_YPRPB (0x00000018U) 882 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_PC_POD_SVIDEO (0x00000019U) 883 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_PC_POD_COMPOSITE (0x0000001AU) 884 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DVI_I_TV_SVIDEO (0x00000020U) 885 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DVI_I_TV_COMPOSITE (0x00000021U) 886 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DVI_I_TV_SV_BO_COMPOSITE (0x00000022U) 887 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DVI_I (0x00000030U) 888 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DVI_D (0x00000031U) 889 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_ADC (0x00000032U) 890 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_LFH_DVI_I_1 (0x00000038U) 891 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_LFH_DVI_I_2 (0x00000039U) 892 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_LFH_SVIDEO (0x0000003AU) 893 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_BNC (0x0000003CU) 894 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_LVDS_SPWG (0x00000040U) 895 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_LVDS_OEM (0x00000041U) 896 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_LVDS_SPWG_DET (0x00000042U) 897 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_LVDS_OEM_DET (0x00000043U) 898 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_TVDS_OEM_ATT (0x00000045U) 899 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_VGA_15_PIN_UNDOCKED (0x00000050U) 900 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_VGA_15_PIN_DOCKED (0x00000051U) 901 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DVI_I_UNDOCKED (0x00000052U) 902 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DVI_I_DOCKED (0x00000053U) 903 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DVI_D_UNDOCKED (0x00000052U) 904 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DVI_D_DOCKED (0x00000053U) 905 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DP_EXT (0x00000056U) 906 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DP_INT (0x00000057U) 907 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DP_EXT_UNDOCKED (0x00000058U) 908 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_DP_EXT_DOCKED (0x00000059U) 909 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_3PIN_DIN_STEREO (0x00000060U) 910 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_HDMI_A (0x00000061U) 911 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_AUDIO_SPDIF (0x00000062U) 912 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_HDMI_C_MINI (0x00000063U) 913 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_LFH_DP_1 (0x00000064U) 914 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_LFH_DP_2 (0x00000065U) 915 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_TYPE_VIRTUAL_WFD (0x00000070U) 916 917 /* valid hotplug values */ 918 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_HOTPLUG_A_SUPPORTED (0x00000001U) 919 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_HOTPLUG_B_SUPPORTED (0x00000002U) 920 921 /* 922 * Nv0073_CTRL_CMD_SYSTEM_GET_CONNECTOR_TABLE 923 * 924 * This command can be used to retrieve display connector information. 925 * 926 * subDeviceInstance 927 * This parameter specifies the subdevice instance within the 928 * NV04_DISPLAY_COMMON parent device to which the operation should be 929 * directed. This parameter must specify a value between zero and the 930 * total number of subdevices within the parent device. This parameter 931 * should be set to zero for default behavior. 932 * version 933 * This parameter returns the version of the connector table. 934 * platform 935 * This parameter returns the type of platform of the associated subdevice. 936 * connectorTableEntries 937 * This parameter returns the number of valid entries in the connector 938 * table. 939 * connectorTable 940 * This parameter returns the connector information in the form of an 941 * array of NV0073_CTRL_SYSTEM_CONNECTOR_INFO structures. 942 * 943 * Possible status values returned are: 944 * NV_OK 945 * NV_ERR_INVALID_ARGUMENT 946 * 947 */ 948 #define NV0073_CTRL_CMD_SYSTEM_GET_CONNECTOR_TABLE (0x730165U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_CONNECTOR_TABLE_PARAMS_MESSAGE_ID" */ 949 950 /* maximum number of connector table entries */ 951 #define NV0073_CTRL_SYSTEM_GET_CONNECTOR_TABLE_MAX_ENTRIES (16U) 952 953 #define NV0073_CTRL_SYSTEM_GET_CONNECTOR_TABLE_PARAMS_MESSAGE_ID (0x65U) 954 955 typedef struct NV0073_CTRL_SYSTEM_GET_CONNECTOR_TABLE_PARAMS { 956 NvU32 subDeviceInstance; 957 NvU32 version; 958 NvU32 platform; 959 NvU32 connectorTableEntries; 960 /* 961 * C form: 962 * NV0073_CTRL_SYSTEM_CONNECTOR_INFO connectorTable[NV0073_CTRL_SYSTEM_CONNECTOR_TABLE_MAX_ENTRIES]; 963 */ 964 NV0073_CTRL_SYSTEM_CONNECTOR_INFO connectorTable[NV0073_CTRL_SYSTEM_GET_CONNECTOR_TABLE_MAX_ENTRIES]; 965 } NV0073_CTRL_SYSTEM_GET_CONNECTOR_TABLE_PARAMS; 966 967 /* valid version values */ 968 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_VERSION_30 (0x00000030U) 969 970 /* valid platform values */ 971 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_PLATFORM_DEFAULT_ADD_IN_CARD (0x00000000U) 972 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_PLATFORM_TWO_PLATE_ADD_IN_CARD (0x00000001U) 973 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_PLATFORM_MOBILE_ADD_IN_CARD (0x00000008U) 974 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_PLATFORM_MXM_MODULE (0x00000009U) 975 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_PLATFORM_MOBILE_BACK (0x00000010U) 976 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_PLATFORM_MOBILE_BACK_LEFT (0x00000011U) 977 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_PLATFORM_MOBILE_BACK_DOCK (0x00000018U) 978 #define NV0073_CTRL_SYSTEM_CONNECTOR_INFO_PLATFORM_CRUSH_DEFAULT (0x00000020U) 979 980 /* 981 * NV0073_CTRL_CMD_SYSTEM_GET_BOOT_DISPLAYS 982 * 983 * This command returns a mask of boot display IDs. 984 * 985 * subDeviceInstance 986 * This parameter specifies the subdevice instance within the 987 * NV04_DISPLAY_COMMON parent device to which the operation should be 988 * directed. This parameter must specify a value between zero and the 989 * total number of subdevices within the parent device. This parameter 990 * should be set to zero for default behavior. 991 * bootDisplayMask 992 * This parameter returns the mask of boot display IDs. 993 * 994 * Possible status values returned are: 995 * NV_OK 996 * NV_ERR_INVALID_PARAM_STRUCT 997 */ 998 #define NV0073_CTRL_CMD_SYSTEM_GET_BOOT_DISPLAYS (0x730166U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_BOOT_DISPLAYS_PARAMS_MESSAGE_ID" */ 999 1000 #define NV0073_CTRL_SYSTEM_GET_BOOT_DISPLAYS_PARAMS_MESSAGE_ID (0x66U) 1001 1002 typedef struct NV0073_CTRL_SYSTEM_GET_BOOT_DISPLAYS_PARAMS { 1003 NvU32 subDeviceInstance; 1004 NvU32 bootDisplayMask; 1005 } NV0073_CTRL_SYSTEM_GET_BOOT_DISPLAYS_PARAMS; 1006 1007 1008 1009 /* 1010 * NV0073_CTRL_CMD_SYSTEM_EXECUTE_ACPI_METHOD 1011 * 1012 * This command is used to execute general MXM ACPI methods. 1013 * 1014 * method 1015 * This parameter identifies the MXM ACPI API to be invoked. 1016 * Valid values for this parameter are: 1017 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_MXMI 1018 * This value specifies that the MXMI API is to invoked. 1019 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_MXMS 1020 * This value specifies that the MXMS API is to invoked. 1021 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_MXMX 1022 * This value specifies that the MXMX API is to invoked. 1023 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_GPUON 1024 * This value specifies that the Hybrid GPU ON API is to be invoked. 1025 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_GPUOFF 1026 * This value specifies that the Hybrid GPU OFF API is to be invoked. 1027 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_GPUSTA 1028 * This value specifies that the Hybrid GPU STA API is to be invoked. 1029 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_MXDS 1030 * This value specifies that the Hybrid GPU MXDS API is to be invoked. 1031 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NVHG_MXMX 1032 * This value specifies that the Hybrid GPU MXMX API is to be invoked. 1033 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DOS 1034 * This value specifies that the Hybrid GPU DOS API is to be invoked. 1035 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_ROM 1036 * This value specifies that the Hybrid GPU ROM API is to be invoked. 1037 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DOD 1038 * This value specifies that the Hybrid GPU DOD API is to be invoked. 1039 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_SUPPORT 1040 * This value specifies that the Hybrid GPU DSM subfunction SUPPORT 1041 * API is to be invoked. 1042 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HYBRIDCAPS 1043 * This value specifies that the Hybrid GPU DSM subfunction SUPPORT 1044 * API is to be invoked. 1045 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_POLICYSELECT 1046 * This value specifies that the Hybrid GPU DSM subfunction POLICYSELECT 1047 * API is to be invoked. 1048 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_POWERCONTROL 1049 * This value specifies that the Hybrid GPU DSM subfunction POWERCONTROL 1050 * API is to be invoked. 1051 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_PLATPOLICY 1052 * This value specifies that the Hybrid GPU DSM subfunction PLATPOLICY 1053 * API is to be invoked. 1054 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_DISPLAYSTATUS 1055 * This value specifies that the Hybrid GPU DSM subfunction DISPLAYSTATUS 1056 * API is to be invoked. 1057 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MDTL 1058 * This value specifies that the Hybrid GPU DSM subfunction MDTL 1059 * API is to be invoked. 1060 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCSMBLIST 1061 * This value specifies that the Hybrid GPU DSM subfunction HCSMBLIST 1062 * API is to be invoked. 1063 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCSMBADDR 1064 * This value specifies that the Hybrid GPU DSM subfunction HCSMBADDR 1065 * API is to be invoked. 1066 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCREADBYTE 1067 * This value specifies that the Hybrid GPU DSM subfunction HCREADBYTE 1068 * API is to be invoked. 1069 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCSENDBYTE 1070 * This value specifies that the Hybrid GPU DSM subfunction HCSENDBYTES 1071 * API is to be invoked. 1072 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCGETSTATUS 1073 * This value specifies that the Hybrid GPU DSM subfunction HCGETSTATUS 1074 * API is to be invoked. 1075 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCTRIGDDC 1076 * This value specifies that the Hybrid GPU DSM subfunction HCTRIGDDC 1077 * API is to be invoked. 1078 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCGETDDC 1079 * This value specifies that the Hybrid GPU DSM subfunction HCGETDDC 1080 * API is to be invoked. 1081 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DCS 1082 * This value specifies that the Hybrid GPU DCS API is to be invoked. 1083 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXSS 1084 * This value specifies that the DSM MXM subfunction MXSS 1085 * API is to be invoked. 1086 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXMI 1087 * This value specifies that the DSM MXM subfunction MXMI 1088 * API is to be invoked. 1089 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXMS 1090 * This value specifies that the DSM MXM subfunction MXMS 1091 * API is to be invoked. 1092 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXPP 1093 * This value specifies that the DSM MXM subfunction MXPP 1094 * API is to be invoked. 1095 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXDP 1096 * This value specifies that the DSM MXM subfunction MXDP 1097 * API is to be invoked. 1098 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MDTL 1099 * This value specifies that the DSM MXM subfunction MDTL 1100 * API is to be invoked. 1101 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXCB 1102 * This value specifies that the DSM MXM subfunction MXCB 1103 * API is to be invoked. 1104 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_CTL_REMAPFUNC 1105 * This value specifies the DSM generic remapping should return function 1106 * and subfunction when this API is to be invoked. 1107 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_HYBRIDCAPS 1108 * This value specifies that the generic DSM subfunction HYBRIDCAPS 1109 * API is to be invoked. 1110 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_POLICYSELECT 1111 * This value specifies that the generic DSM subfunction POLICYSELECT 1112 * API is to be invoked. 1113 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_PLATPOLICY 1114 * This value specifies that the generic DSM subfunction PLATPOLICY 1115 * API is to be invoked. 1116 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_DISPLAYSTATUS 1117 * This value specifies that the generic DSM subfunction DISPLAYSTATUS 1118 * API is to be invoked. 1119 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_MDTL 1120 * This value specifies that the generic DSM subfunction MDTL 1121 * API is to be invoked. 1122 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_GETOBJBYTYPE 1123 * This value specifies that the generic DSM subfunction GETOBJBYTYPE 1124 * API is to be invoked. 1125 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_GETALLOBJS 1126 * This value specifies that the generic DSM subfunction GETALLOBJS 1127 * API is to be invoked. 1128 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_GETEVENTLIST 1129 * This value specifies that the generic DSM subfunction GETEVENTLIST 1130 * API is to be invoked. 1131 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_GETBACKLIGHT 1132 * This value specifies that the generic DSM subfunction GETBACKLIGHT 1133 * API is to be invoked. 1134 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_CTL_TESTSUBFUNCENABLED 1135 * This value specifies the testIfDsmSubFunctionEnabled test should 1136 * be done for the func/subfunction when this API is to be invoked. 1137 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_CTL_GETSUPPORTEDFUNC 1138 * This value specifies the list of supported generic dsm functions 1139 * should be returned. 1140 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_NVOP_OPTIMUSCAPS 1141 * This value specifies that the DSM NVOP subfunction OPTIMUSCAPS 1142 * API is to be invoked. 1143 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_NVOP_OPTIMUSFLAG 1144 * This value specifies that the DSM NVOP subfunction OPTIMUSFLAG 1145 * API is to be invoked. This API will set a Flag in sbios to Indicate 1146 * that HD Audio Controller is disable/Enabled from GPU Config space. 1147 * This flag will be used by sbios to restore Audio state after resuming 1148 * from s3/s4. 1149 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_WMMX_NVOP_GPUON 1150 * This value specifies that the WMMX (WMI-ACPI) GPON methods has to be invoked 1151 * this call should happen below DPC level from any client. 1152 * inData 1153 * This parameter specifies the method-specific input buffer. Data is 1154 * passed to the specified API using this buffer. For display related 1155 * APIs the associated display mask can be found at a byte offset within 1156 * the inData buffer using the following method-specific values: 1157 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_MXMX_DISP_MASK_OFFSET 1158 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_MXDS_DISP_MASK_OFFSET 1159 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NVHG_MXMX_DISP_MASK_OFFSET 1160 * NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DOS_DISP_MASK_OFFSET 1161 * inDataSize 1162 * This parameter specifies the size of the inData buffer in bytes. 1163 * outStatus 1164 * This parameter returns the status code from the associated ACPI call. 1165 * outData 1166 * This parameter specifies the method-specific output buffer. Data 1167 * is returned by the specified API using this buffer. 1168 * outDataSize 1169 * This parameter specifies the size of the outData buffer in bytes. 1170 * 1171 * Possible status values returned are: 1172 * NV_OK 1173 * NV_ERR_INVALID_PARAM_STRUCT 1174 * NV_ERR_INVALID_ARGUMENT 1175 */ 1176 1177 #define NV0073_CTRL_CMD_SYSTEM_EXECUTE_ACPI_METHOD (0x730168U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_PARAMS_MESSAGE_ID" */ 1178 1179 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_PARAMS_MESSAGE_ID (0x68U) 1180 1181 typedef struct NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_PARAMS { 1182 NvU32 method; 1183 NV_DECLARE_ALIGNED(NvP64 inData, 8); 1184 NvU16 inDataSize; 1185 NvU32 outStatus; 1186 NV_DECLARE_ALIGNED(NvP64 outData, 8); 1187 NvU16 outDataSize; 1188 } NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_PARAMS; 1189 1190 1191 /* valid method parameter values */ 1192 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_MXMX (0x00000002U) 1193 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_MXMX_DISP_MASK_OFFSET (0x00000001U) 1194 1195 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_GPUON (0x00000003U) 1196 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_GPUOFF (0x00000004U) 1197 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_GPUSTA (0x00000005U) 1198 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_MXDS (0x00000006U) 1199 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NVHG_MXMX (0x00000007U) 1200 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DOS (0x00000008U) 1201 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_ROM (0x00000009U) 1202 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DOD (0x0000000aU) 1203 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_SUPPORT (0x0000000bU) 1204 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HYBRIDCAPS (0x0000000cU) 1205 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_POLICYSELECT (0x0000000dU) 1206 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_POWERCONTROL (0x0000000eU) 1207 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_PLATPOLICY (0x0000000fU) 1208 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_DISPLAYSTATUS (0x00000010U) 1209 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MDTL (0x00000011U) 1210 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCSMBLIST (0x00000012U) 1211 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCSMBADDR (0x00000013U) 1212 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCREADBYTE (0x00000014U) 1213 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCSENDBYTE (0x00000015U) 1214 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCGETSTATUS (0x00000016U) 1215 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCTRIGDDC (0x00000017U) 1216 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_HCGETDDC (0x00000018U) 1217 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DCS (0x00000019U) 1218 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXSS (0x0000001aU) 1219 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXMI (0x0000001bU) 1220 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXMS (0x0000001cU) 1221 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXPP (0x0000001dU) 1222 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXDP (0x0000001eU) 1223 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MDTL (0x0000001fU) 1224 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_MXCB (0x00000020U) 1225 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_MXM_GETEVENTLIST (0x00000021U) 1226 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GETMEMTABLE (0x00000022U) 1227 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GETMEMCFG (0x00000023U) 1228 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GETOBJBYTYPE (0x00000024U) 1229 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GETALLOBJS (0x00000025U) 1230 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_CTL_REMAPFUNC (0x00000026U) 1231 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_DISPLAYSTATUS (0x0000002aU) 1232 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_MDTL (0x0000002bU) 1233 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_GETOBJBYTYPE (0x0000002cU) 1234 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_GETALLOBJS (0x0000002dU) 1235 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_GETEVENTLIST (0x0000002eU) 1236 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_GETBACKLIGHT (0x0000002fU) 1237 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_CTL_TESTSUBFUNCENABLED (0x00000030U) 1238 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_CTL_GETSUPPORTEDFUNC (0x00000031U) 1239 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_NVOP_OPTIMUSCAPS (0x00000032U) 1240 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_WMMX_NVOP_GPUON (0x00000033U) 1241 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_NVOP_OPTIMUSFLAG (0x00000034U) 1242 1243 1244 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_GETCALLBACKS (0x00000036U) 1245 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_NBCI_SUPPORTFUNCS (0x00000037U) 1246 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_NBCI_PLATCAPS (0x00000038U) 1247 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_NBCI_PLATPOLICY (0x00000039U) 1248 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_GENERIC_MSTL (0x0000003aU) 1249 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DSM_NVGPS_FUNC_SUPPORT (0x0000003bU) 1250 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NBCI_MXDS (0x0000003cU) 1251 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NBCI_MXDM (0x0000003dU) 1252 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NBCI_MXID (0x0000003eU) 1253 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NBCI_LRST (0x0000003fU) 1254 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DDC_EDID (0x00000040U) 1255 1256 /* valid input buffer offset values */ 1257 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_MXDS_DISP_MASK_OFFSET (0x00000004U) 1258 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NVHG_MXMX_DISP_MASK_OFFSET (0x00000004U) 1259 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DOS_DISP_MASK_OFFSET (0x00000004U) 1260 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NBCI_MXDS_DISP_MASK_OFFSET (0x00000004U) 1261 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NBCI_MXDM_DISP_MASK_OFFSET (0x00000004U) 1262 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NBCI_MXID_DISP_MASK_OFFSET (0x00000004U) 1263 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_NBCI_LRST_DISP_MASK_OFFSET (0x00000004U) 1264 #define NV0073_CTRL_SYSTEM_EXECUTE_ACPI_METHOD_DDC_EDID_DISP_MASK_OFFSET (0x00000004U) 1265 1266 1267 1268 /* 1269 * NV0073_CTRL_SYSTEM_VRR_DISPLAY_INFO_PARAMS 1270 * 1271 * This command is used to update information about VRR capable monitors 1272 * subDeviceInstance 1273 * This parameter specifies the subdevice instance within the 1274 * NV04_DISPLAY_COMMON parent device to which the operation should be 1275 * directed.This parameter must specify a value between zero and the 1276 * total number of subdevices within the parent device.This parameter 1277 * should be set to zero for default behavior. 1278 * 1279 * displayId 1280 * DisplayId of the panel for which client wants to add or remove from VRR 1281 * capable monitor list 1282 * 1283 * bAddition 1284 * When set to NV_TRUE, signifies that the vrr monitor is to be added. 1285 * When set to NV_FALSE, signifies that the vrr monitor is to be removed. 1286 * 1287 */ 1288 #define NV0073_CTRL_CMD_SYSTEM_VRR_DISPLAY_INFO (0x730185U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_VRR_DISPLAY_INFO_PARAMS_MESSAGE_ID" */ 1289 1290 #define NV0073_CTRL_SYSTEM_VRR_DISPLAY_INFO_PARAMS_MESSAGE_ID (0x85U) 1291 1292 typedef struct NV0073_CTRL_SYSTEM_VRR_DISPLAY_INFO_PARAMS { 1293 NvU32 subDeviceInstance; 1294 NvU32 displayId; 1295 NvBool bAddition; 1296 } NV0073_CTRL_SYSTEM_VRR_DISPLAY_INFO_PARAMS; 1297 1298 /* 1299 * NV0073_CTRL_CMD_SYSTEM_GET_HOTPLUG_UNPLUG_STATE 1300 * 1301 * This command can be used to retrieve hotplug and unplug state 1302 * information that are currently recorded by the RM. This information is 1303 * used by the client to determine which displays to detect after a 1304 * hotplug event occurs. Or if the client knows that this device generates 1305 * a hot plug/unplug signal on all connectors, then this can be used to call 1306 * displays from detection. The displayIds on which hotplug/unplug has 1307 * happened will be reported only ONCE to the client. That is if the call 1308 * is done multiple times for the same event update, then for consequent 1309 * calls the display mask will be reported as 0. 1310 * 1311 * subDeviceInstance 1312 * This parameter specifies the subdevice instance within the 1313 * NV04_DISPLAY_COMMON parent device to which the operation should be 1314 * directed. This parameter must specify a value between zero and the 1315 * total number of subdevices within the parent device. This parameter 1316 * should be set to zero for default behavior. 1317 * flags 1318 * This parameter specifies optional flags to be used while retrieving 1319 * the hotplug state information. 1320 * Here are the current defined fields: 1321 * NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_FLAGS_LID 1322 * A client uses this field to determine the lid state. 1323 * Possible values are: 1324 * NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_FLAGS_LID_OPEN 1325 * The lid is open. 1326 * NV0073_CTRL_SYSTEM_GET_HOTPLUG_STATE_FLAGS_LID_CLOSED 1327 * The lid is closed. The client should remove devices a 1328 * reported inside the 1329 * NV0073_CTRL_SYSTEM_GET_CONNECT_POLICY_PARAMS.lidClosedMask. 1330 * hotPlugMask 1331 * This display mask specifies an NV0073_DISPLAY_MASK value describing 1332 * the set of displays that have seen a hotplug. 1333 * hotUnplugMask 1334 * This display mask specifies an NV0073_DISPLAY_MASK value describing 1335 * the set of displays that have seen a hot unplug 1336 * 1337 * Possible status values returned are: 1338 * NV_OK 1339 * NV_ERR_INVALID_PARAM_STRUCT 1340 * NV_ERR_INVALID_ARGUMENT 1341 */ 1342 1343 #define NV0073_CTRL_CMD_SYSTEM_GET_HOTPLUG_UNPLUG_STATE (0x73017bU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_HOTPLUG_UNPLUG_STATE_PARAMS_MESSAGE_ID" */ 1344 1345 #define NV0073_CTRL_SYSTEM_GET_HOTPLUG_UNPLUG_STATE_PARAMS_MESSAGE_ID (0x7BU) 1346 1347 typedef struct NV0073_CTRL_SYSTEM_GET_HOTPLUG_UNPLUG_STATE_PARAMS { 1348 NvU32 subDeviceInstance; 1349 NvU32 flags; 1350 NvU32 hotPlugMask; 1351 NvU32 hotUnplugMask; 1352 } NV0073_CTRL_SYSTEM_GET_HOTPLUG_UNPLUG_STATE_PARAMS; 1353 1354 /* valid get hoplug state flags */ 1355 #define NV0073_CTRL_SYSTEM_GET_HOTPLUG_UNPLUG_STATE_FLAGS_LID 0:0 1356 #define NV0073_CTRL_SYSTEM_GET_HOTPLUG_UNPLUG_STATE_FLAGS_LID_OPEN (0x00000000U) 1357 #define NV0073_CTRL_SYSTEM_GET_HOTPLUG_UNPLUG_STATE_FLAGS_LID_CLOSED (0x00000001U) 1358 1359 /* 1360 * NV0073_CTRL_CMD_SYSTEM_CLEAR_ELV_BLOCK 1361 * 1362 * This command instructs the RM to explicitly clear any 1363 * ELV block. Clients should call this before attempting core-channel 1364 * updates when in VRR one-shot mode. ELV block mode will be 1365 * properly restored to its appropriate setting based on the stall-lock 1366 * in Supervisor3 after the core channel update 1367 * 1368 * subDeviceInstance 1369 * This parameter specifies the subdevice instance within the 1370 * NV04_DISPLAY_COMMON parent device to which the operation should be 1371 * directed. This parameter must specify a value between zero and the 1372 * total number of subdevices within the parent device. This parameter 1373 * should be set to zero for default behavior. 1374 * 1375 * displayId 1376 * The public ID of the Output Display which is to be used for VRR. 1377 * 1378 * Possible status values returned are: 1379 * NV_OK 1380 * NV_ERR_INVALID_ARGUMENT 1381 * NV_ERR_INVALID_STATE 1382 */ 1383 1384 #define NV0073_CTRL_CMD_SYSTEM_CLEAR_ELV_BLOCK (0x73017dU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_CLEAR_ELV_BLOCK_PARAMS_MESSAGE_ID" */ 1385 1386 #define NV0073_CTRL_SYSTEM_CLEAR_ELV_BLOCK_PARAMS_MESSAGE_ID (0x7DU) 1387 1388 typedef struct NV0073_CTRL_SYSTEM_CLEAR_ELV_BLOCK_PARAMS { 1389 NvU32 subDeviceInstance; 1390 NvU32 displayId; 1391 } NV0073_CTRL_SYSTEM_CLEAR_ELV_BLOCK_PARAMS; 1392 1393 /* 1394 * NV0073_CTRL_CMD_SYSTEM_ARM_LIGHTWEIGHT_SUPERVISOR 1395 * 1396 * This command arms the display modeset supervisor to operate in 1397 * a lightweight mode. By calling this, the client is implicitly 1398 * promising not to make any changes in the next modeset that require 1399 * the full supervisor. After SV3, the LWSV will disarm and any subsequent 1400 * modesets will revert to full supervisors. This must be called separately 1401 * for every display that will be part of the modeset. 1402 * It is recommended that the client explicitly disarm the lightweight 1403 * supervisor after every modeset as null modesets will not trigger the 1404 * supervisor interrupts and the RM will not be able to disarm automatically 1405 * 1406 * subDeviceInstance 1407 * This parameter specifies the subdevice instance within the 1408 * NV04_DISPLAY_COMMON parent device to which the operation should be 1409 * directed. This parameter must specify a value between zero and the 1410 * total number of subdevices within the parent device. This parameter 1411 * should be set to zero for default behavior. 1412 * 1413 * displayId 1414 * The public ID of the Output Display which is to be used for VRR. 1415 * 1416 * bArmLWSV 1417 * If this is set to NV_TRUE, the RM will arm the lightweight supervisor 1418 * for the next modeset. 1419 * If this is set to NV_FALSE, the RM will disarm the lightweight supervisor 1420 * 1421 * bVrrState 1422 * VRR state to be changed. 1423 * 1424 * vActive 1425 * GPU-SRC vertical active value 1426 * 1427 * vfp 1428 * GPU-SRC vertical front porch 1429 * 1430 * Possible status values returned are: 1431 * NV_OK 1432 * NV_ERR_INVALID_ARGUMENT 1433 * NV_ERR_INVALID_STATE 1434 */ 1435 1436 #define NV0073_CTRL_CMD_SYSTEM_ARM_LIGHTWEIGHT_SUPERVISOR (0x73017eU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_ARM_LIGHTWEIGHT_SUPERVISOR_PARAMS_MESSAGE_ID" */ 1437 1438 #define NV0073_CTRL_SYSTEM_ARM_LIGHTWEIGHT_SUPERVISOR_PARAMS_MESSAGE_ID (0x7EU) 1439 1440 typedef struct NV0073_CTRL_SYSTEM_ARM_LIGHTWEIGHT_SUPERVISOR_PARAMS { 1441 NvU32 subDeviceInstance; 1442 NvU32 displayId; 1443 NvBool bArmLWSV; 1444 NvBool bVrrState; 1445 NvU32 vActive; 1446 NvU32 vfp; 1447 } NV0073_CTRL_SYSTEM_ARM_LIGHTWEIGHT_SUPERVISOR_PARAMS; 1448 1449 1450 1451 /* 1452 * NV0073_CTRL_SYSTEM_CONFIG_VRR_PSTATE_SWITCH_PARAMS 1453 * 1454 * This command is used to configure pstate switch parameters on VRR monitors 1455 * subDeviceInstance 1456 * This parameter specifies the subdevice instance within the 1457 * NV04_DISPLAY_COMMON parent device to which the operation should be 1458 * directed.This parameter must specify a value between zero and the 1459 * total number of subdevices within the parent device.This parameter 1460 * should be set to zero for default behavior. 1461 * 1462 * displayId 1463 * DisplayId of the monitor being vrr configured 1464 * 1465 * bVrrState 1466 * When set to NV_TRUE, signifies that the vrr is about to become active. 1467 * When set to NV_FALSE, signifies that the vrr is about to become suspended. 1468 * 1469 * bVrrDirty 1470 * When set to NV_TRUE, indicates that vrr configuration has been changed 1471 * When set to NV_FALSE, this will indicate transitions from One shot mode to 1472 * Continuous mode and vice versa 1473 * 1474 * bVrrEnabled 1475 * When set to NV_TRUE, indicates that vrr has been enabled, i.e. vBp extended by 2 lines 1476 * 1477 * maxVblankExtension 1478 * When VRR is enabled, this is the maximum amount of lines that the vblank can be extended. 1479 * Only updated when bVrrDirty = true 1480 * 1481 * internalVRRHeadVblankStretch 1482 * When VRR is enabled, this is the maximum amount of lines that the vblank can be extended. 1483 * On NVSR and DD panels . Only updated when bVrrDirty = true 1484 * 1485 * minVblankExtension 1486 * When VRR is enabled, this is the minimum amount of lines that should be present in the Vblank. The purpose is to cap the maximum refresh (currently only for HDMI 2.1 VRR compliance) 1487 */ 1488 #define NV0073_CTRL_CMD_SYSTEM_CONFIG_VRR_PSTATE_SWITCH (0x730184U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_CONFIG_VRR_PSTATE_SWITCH_PARAMS_MESSAGE_ID" */ 1489 1490 #define NV0073_CTRL_SYSTEM_CONFIG_VRR_PSTATE_SWITCH_PARAMS_MESSAGE_ID (0x84U) 1491 1492 typedef struct NV0073_CTRL_SYSTEM_CONFIG_VRR_PSTATE_SWITCH_PARAMS { 1493 NvU32 subDeviceInstance; 1494 NvU32 displayId; 1495 NvBool bVrrState; 1496 NvBool bVrrDirty; 1497 NvBool bVrrEnabled; 1498 NvU32 maxVblankExtension; 1499 NvU32 internalVRRHeadVblankStretch; 1500 NvU32 minVblankExtension; 1501 } NV0073_CTRL_SYSTEM_CONFIG_VRR_PSTATE_SWITCH_PARAMS; 1502 1503 1504 1505 /* 1506 * NV0073_CTRL_CMD_SYSTEM_QUERY_DISPLAY_IDS_WITH_MUX 1507 * 1508 * This command is used to query the display mask of all displays 1509 * that support dynamic display MUX. 1510 * 1511 * subDeviceInstance 1512 * This parameter specifies the subdevice instance within the 1513 * NV04_DISPLAY_COMMON parent device to which the operation should be 1514 * directed. 1515 * displayMask (out) 1516 * Mask of all displays that support dynamic display MUX 1517 * 1518 * Possible status values returned are: 1519 * NV_OK 1520 * NV_ERR_INVALID_PARAM_STRUCT 1521 * NV_ERR_INVALID_ARGUMENT 1522 * NV_ERR_NOT_SUPPORTED 1523 */ 1524 1525 #define NV0073_CTRL_CMD_SYSTEM_QUERY_DISPLAY_IDS_WITH_MUX (0x730190U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SYSTEM_QUERY_DISPLAY_IDS_WITH_MUX_PARAMS_MESSAGE_ID" */ 1526 1527 #define NV0073_CTRL_CMD_SYSTEM_QUERY_DISPLAY_IDS_WITH_MUX_PARAMS_MESSAGE_ID (0x90U) 1528 1529 typedef struct NV0073_CTRL_CMD_SYSTEM_QUERY_DISPLAY_IDS_WITH_MUX_PARAMS { 1530 NvU32 subDeviceInstance; 1531 NvU32 muxDisplayMask; 1532 } NV0073_CTRL_CMD_SYSTEM_QUERY_DISPLAY_IDS_WITH_MUX_PARAMS; 1533 1534 1535 1536 /* 1537 * NV0073_CTRL_CMD_SYSTEM_ALLOCATE_DISPLAY_BANDWIDTH 1538 * 1539 * This command allocates a specified amount of ISO memory bandwidth for 1540 * display. If the requested amount of bandwidth cannot be allocated (either 1541 * because it exceeds the total bandwidth available to the system, or because 1542 * too much bandwidth is already allocated to other clients), the call will 1543 * fail and NV_ERR_INSUFFICIENT_RESOURCES will be returned. 1544 * 1545 * If bandwidth has already been allocated via a prior call, and a new 1546 * allocation is requested, the new allocation will replace the old one. (If 1547 * the new allocation fails, the old allocation remains in effect.) 1548 * 1549 * subDeviceInstance 1550 * This parameter specifies the subdevice instance within the 1551 * NV04_DISPLAY_COMMON parent device to which the operation should be 1552 * directed. 1553 * averageBandwidthKBPS 1554 * This parameter specifies the amount of ISO memory bandwidth requested. 1555 * floorBandwidthKBPS 1556 * This parameter specifies the minimum required (i.e., floor) dramclk 1557 * frequency, multiplied by the width of the pipe over which the display 1558 * data will travel. (It is understood that the bandwidth calculated by 1559 * multiplying the clock frequency by the pipe width will not be 1560 * realistically achievable, due to overhead in the memory subsystem. The 1561 * API will not actually use the bandwidth value, except to reverse the 1562 * calculation to get the required dramclk frequency.) 1563 * 1564 * Possible status values returned are: 1565 * NV_OK 1566 * NV_ERR_INSUFFICIENT_RESOURCES 1567 * NV_ERR_NOT_SUPPORTED 1568 * NV_ERR_GENERIC 1569 */ 1570 1571 #define NV0073_CTRL_CMD_SYSTEM_ALLOCATE_DISPLAY_BANDWIDTH (0x730196U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_ALLOCATE_DISPLAY_BANDWIDTH_PARAMS_MESSAGE_ID" */ 1572 1573 #define NV0073_CTRL_SYSTEM_ALLOCATE_DISPLAY_BANDWIDTH_PARAMS_MESSAGE_ID (0x96U) 1574 1575 typedef struct NV0073_CTRL_SYSTEM_ALLOCATE_DISPLAY_BANDWIDTH_PARAMS { 1576 NvU32 subDeviceInstance; 1577 NvU32 averageBandwidthKBPS; 1578 NvU32 floorBandwidthKBPS; 1579 } NV0073_CTRL_SYSTEM_ALLOCATE_DISPLAY_BANDWIDTH_PARAMS; 1580 1581 /* 1582 * NV0073_CTRL_SYSTEM_HOTPLUG_EVENT_CONFIG_PARAMS 1583 * 1584 * This structure represents the hotplug event config control parameters. 1585 * 1586 * subDeviceInstance 1587 * This parameter should specify the subdevice instance within the 1588 * NV04_DISPLAY_COMMON parent device to which the operation should be 1589 * directed. 1590 * 1591 * deviceMapFilter 1592 * This parameter returns (in GET) or should specify (in SET) a device map 1593 * indicating device(s) to sense. 1594 * 1595 * hotPluginSense 1596 * This parameter returns (in GET) or should specify (in SET) a device map 1597 * indicating device(s) plugged in that caused the most recent hotplug 1598 * event. 1599 * 1600 * hotUnplugSense 1601 * This parameter returns (in GET) or should specify (in SET) a device map 1602 * indicating device(s) un plugged that caused the most recent hotplug 1603 * event. 1604 */ 1605 1606 typedef struct NV0073_CTRL_SYSTEM_HOTPLUG_EVENT_CONFIG_PARAMS { 1607 NvU32 subDeviceInstance; 1608 NvU32 deviceMapFilter; 1609 NvU32 hotPluginSense; 1610 NvU32 hotUnplugSense; 1611 } NV0073_CTRL_SYSTEM_HOTPLUG_EVENT_CONFIG_PARAMS; 1612 1613 /* 1614 * NV0073_CTRL_CMD_SYSTEM_GET_HOTPLUG_EVENT_CONFIG 1615 * 1616 * This command fetches the hotplug event configuration. 1617 * 1618 * See @ref NV0073_CTRL_SYSTEM_HOTPLUG_EVENT_CONFIG_PARAMS for documentation on 1619 * the parameters. 1620 */ 1621 1622 #define NV0073_CTRL_CMD_SYSTEM_GET_HOTPLUG_EVENT_CONFIG (0x730197U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_HOTPLUG_EVENT_CONFIG_PARAMS_MESSAGE_ID" */ 1623 1624 #define NV0073_CTRL_SYSTEM_GET_HOTPLUG_EVENT_CONFIG_PARAMS_MESSAGE_ID (0x97U) 1625 1626 typedef NV0073_CTRL_SYSTEM_HOTPLUG_EVENT_CONFIG_PARAMS NV0073_CTRL_SYSTEM_GET_HOTPLUG_EVENT_CONFIG_PARAMS; 1627 1628 /* 1629 * NV0073_CTRL_CMD_SYSTEM_SET_HOTPLUG_EVENT_CONFIG 1630 * 1631 * This command sets the hotplug event configuration. 1632 * 1633 * See @ref NV0073_CTRL_SYSTEM_HOTPLUG_EVENT_CONFIG_PARAMS for documentation on 1634 * the parameters. 1635 */ 1636 1637 #define NV0073_CTRL_CMD_SYSTEM_SET_HOTPLUG_EVENT_CONFIG (0x730198U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_SET_HOTPLUG_EVENT_CONFIG_PARAMS_MESSAGE_ID" */ 1638 1639 #define NV0073_CTRL_SYSTEM_SET_HOTPLUG_EVENT_CONFIG_PARAMS_MESSAGE_ID (0x98U) 1640 1641 typedef NV0073_CTRL_SYSTEM_HOTPLUG_EVENT_CONFIG_PARAMS NV0073_CTRL_SYSTEM_SET_HOTPLUG_EVENT_CONFIG_PARAMS; 1642 1643 1644 1645 /* 1646 * NV0073_CTRL_CMD_SYSTEM_RECORD_CHANNEL_REGS 1647 * 1648 * This command is used to read Core channel, Cursor channel, Window channel, and Head register values and encode these values with ProtoDmp. 1649 * 1650 * subDeviceInstance (in) 1651 * This parameter specifies the subdevice instance within the 1652 * NV04_DISPLAY_COMMON parent device to which the operation should be 1653 * directed. 1654 * headMask (in) 1655 * Head mask representing which register values should be encoded 1656 * windowMask (in) 1657 * Window channel mask whose register values should be encoded 1658 * bRecordCoreChannel (in) 1659 * Indicates whether or not to encode core channel register values 1660 * bRecordCursorChannel (in) 1661 * Indicates whether or not to encode cursor channel register values 1662 * 1663 * Possible status values returned are: 1664 * NV_OK 1665 * NV_ERR_INVALID_ARGUMENT 1666 * NV_ERR_NOT_SUPPORTED 1667 */ 1668 #define NV0073_CTRL_CMD_SYSTEM_RECORD_CHANNEL_REGS (0x73019bU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SYSTEM_RECORD_CHANNEL_REGS_PARAMS_MESSAGE_ID" */ 1669 1670 #define NV0073_CTRL_CMD_SYSTEM_RECORD_CHANNEL_REGS_PARAMS_MESSAGE_ID (0x9BU) 1671 1672 typedef struct NV0073_CTRL_CMD_SYSTEM_RECORD_CHANNEL_REGS_PARAMS { 1673 NvU32 subDeviceInstance; 1674 NvU32 headMask; 1675 NvU32 windowMask; 1676 NvBool bRecordCoreChannel; 1677 NvBool bRecordCursorChannel; 1678 } NV0073_CTRL_CMD_SYSTEM_RECORD_CHANNEL_REGS_PARAMS; 1679 1680 /* 1681 * NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_I2C_SUPPORT 1682 * 1683 * This command is used to query the display mux status for the given 1684 * display device 1685 * 1686 * subDeviceInstance (in) 1687 * This parameter specifies the subdevice instance within the 1688 * NV04_DISPLAY_COMMON parent device to which the operation should be 1689 * directed. 1690 * 1691 * Possible status values returned are: 1692 * NV_OK 1693 * NV_ERR_INVALID_PARAM_STRUCT 1694 * NV_ERR_INVALID_ARGUMENT 1695 * NV_ERR_NOT_SUPPORTED 1696 */ 1697 #define NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_I2C_SUPPORT (0x73019cU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_I2C_SUPPORT_PARAMS_MESSAGE_ID" */ 1698 1699 #define NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_I2C_SUPPORT_PARAMS_MESSAGE_ID (0x9CU) 1700 1701 typedef struct NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_I2C_SUPPORT_PARAMS { 1702 NvU32 subDeviceInstance; 1703 NvBool bIsSidebandI2cSupported; 1704 } NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_I2C_SUPPORT_PARAMS; 1705 1706 /* 1707 * NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_SR_SUPPORT 1708 * 1709 * This command is used to query if SIDEBAND SR can be used with the 1710 * given display device. If PSR API is supported on the system, 1711 * then sideband SR support is set to false. 1712 * 1713 * subDeviceInstance (in) 1714 * This parameter specifies the subdevice instance within the 1715 * NV04_DISPLAY_COMMON parent device to which the operation 1716 * should be directed. 1717 * displayId (in) 1718 * This parameter inputs the displayId of the active display. A value 1719 * of zero indicates no display is active. 1720 * bIsSidebandSrSupported 1721 * If it is true, it means that sideband is supported and not PSR API. 1722 * 1723 * Possible status values returned are: 1724 * NV_OK 1725 * NV_ERR_INVALID_PARAM_STRUCT 1726 * NV_ERR_INVALID_ARGUMENT 1727 * NV_ERR_NOT_SUPPORTED 1728 */ 1729 #define NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_SR_SUPPORT (0x73019dU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_SR_SUPPORT_PARAMS_MESSAGE_ID" */ 1730 1731 #define NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_SR_SUPPORT_PARAMS_MESSAGE_ID (0x9DU) 1732 1733 typedef struct NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_SR_SUPPORT_PARAMS { 1734 NvU32 subDeviceInstance; 1735 NvU32 displayId; 1736 NvBool bIsSidebandSrSupported; 1737 } NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_SR_SUPPORT_PARAMS; 1738 1739 /* 1740 * NV0073_CTRL_CMD_SYSTEM_VRR_SET_RGLINE_ACTIVE 1741 * 1742 * This command is used by client like nvkms to set up the VRR specific 1743 * memory operation in RM such as mapping the client created shared memory 1744 * into RM and reserving a RGline for processing of self-refresh timeout 1745 * related calculations. 1746 * 1747 * Also the expectation is that the client which calls this command with parameter 1748 * bEnable = TRUE, should also call this command with bEnable = FALSE on the 1749 * same head when VRR needs to be disabled. 1750 * 1751 * Possible status values returned are: 1752 * NV_OK 1753 * NV_ERR_INVALID_ARGUMENT 1754 * NV_ERR_OBJECT_NOT_FOUND 1755 * NV_ERR_GENERIC 1756 */ 1757 1758 /* 1759 * This is the shared structure that will be used to communicate between 1760 * Physical RM and clients. As of now the access relies on single source of 1761 * truth operation, i.e. only Physical RM writes into the shared location 1762 * and client (nvkms) reads from the same location. 1763 * 1764 * "dataTimeStamp" field is added to capture the timestamp before and after 1765 * updating the flip delay related data fields(all fields except "timeout"). 1766 * This timestamp will be used by clients to determine if the data got updated 1767 * in between by RM while clients were reading it. 1768 * As of now "timeout" field does not have such protection, as access to 1769 * this field is only in response to notification from RM. 1770 */ 1771 typedef struct NV0073_CTRL_RM_VRR_SHARED_DATA { 1772 NvU32 expectedFrameNum; 1773 NvU32 timeout; 1774 NV_DECLARE_ALIGNED(NvU64 flipTimeStamp, 8); 1775 NvBool bCheckFlipTime; 1776 NvBool bFlipTimeAdjustment; 1777 NV_DECLARE_ALIGNED(NvU64 dataTimeStamp, 8); 1778 } NV0073_CTRL_RM_VRR_SHARED_DATA; 1779 1780 #define NV0073_CTRL_CMD_SYSTEM_VRR_SET_RGLINE_ACTIVE (0x73019eU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SYSTEM_VRR_SET_RGLINE_ACTIVE_PARAMS_MESSAGE_ID" */ 1781 1782 #define NV0073_CTRL_CMD_SYSTEM_VRR_SET_RGLINE_ACTIVE_PARAMS_MESSAGE_ID (0x9EU) 1783 1784 typedef struct NV0073_CTRL_CMD_SYSTEM_VRR_SET_RGLINE_ACTIVE_PARAMS { 1785 NvU32 subDeviceInstance; 1786 NvBool bEnable; 1787 NvU32 head; 1788 NvU32 height; 1789 NvU32 maxFrameTime; 1790 NvU32 minFrameTime; 1791 NvHandle hMemory; 1792 } NV0073_CTRL_CMD_SYSTEM_VRR_SET_RGLINE_ACTIVE_PARAMS; 1793 1794 /* 1795 * NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL 1796 * 1797 * The VBlank Semaphore Control API ("VBlank Sem Control") allows clients to 1798 * register for a semaphore release to be performed on the specified memory. 1799 * 1800 * One or more clients may register a memory allocation + offset by specifying 1801 * _PARAMS::bEnabled = NV_TRUE and describing a video memory object with 1802 * _PARAMS::hMemory and an offset within that memory object 1803 * (_PARAMS::memoryOffset). Until the hMemory + memoryOffset combination is 1804 * disabled by a subsequent call with bEnabled = NV_FALSE, during each vblank on 1805 * the specified head, RM will interpret the specified memory location as an 1806 * NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_DATA data structure. 1807 * 1808 * _PARAMS::memoryOffset must be a multiple of 8, so that GPU semaphore releases 1809 * and GSP can write to 8-byte fields within 1810 * NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_DATA with natural alignment. 1811 * 1812 * During vblank, the _CONTROL_DATA::control field will be read, and the 1813 * following pseudocode will be performed: 1814 * 1815 * swapInterval = DRF_VAL(data->flags) 1816 * useMinimumGpuTime = DRV_VAL(data->flags) 1817 * 1818 * if (data->requestCounter == prevRequestCounter) 1819 * return 1820 * 1821 * if (currentVblankCount < (prevVBlankCount + swapInterval)) 1822 * return 1823 * 1824 * if (useMinimumGpuTime && (data->minimumGpuTime < currentGpuTime)) 1825 * return 1826 * 1827 * data->vblankCount = currentVblankCount 1828 * data->releaseGpuTime = currentGpuTime 1829 * data->semaphore = data->requestCounter 1830 * 1831 * prevRequestCounter = data->requestCounter 1832 * previousVblankCount = currentVblankCount 1833 * 1834 * I.e., if the client-described conditions are met, the RM will write 1835 * _CONTROL_DATA::semaphore to the client-requested 'requestCounter' along with 1836 * several informational fields (vblankCount, releaseGpuTime). 1837 * 1838 * The intent is for clients to use semaphore releases to write: 1839 * 1840 * _CONTROL_DATA::minimumGpuTime (if desired) 1841 * _CONTROL_DATA::swapInterval 1842 * _CONTROL_DATA::requestCounter 1843 * 1844 * and then perform a semaphore acquire on _CONTROL_DATA::semaphore >= 1845 * requestCounter (using the ACQ_GEQ semaphore operation). This will block any 1846 * following methods in the client's channel (e.g., a blit) until the requested 1847 * conditions are met. Note the ::requestCounter should be written last, 1848 * because the change in value of ::requestCounter is what causes RM, during a 1849 * vblank callback, to inspect the other fields. 1850 * 1851 * Additionally, clients should use the CPU (not semaphore releases in their 1852 * channel) to write the field _CONTROL_DATA::requestCounterAccel at the same 1853 * time that they enqueue the semaphore release to write to 1854 * _CONTROL_DATA::requestCounter. ::requestCounterAccel will be used by resman 1855 * to "accelerate" the vblank sem control by copying the value from 1856 * ::requestCounterAccel to ::semaphore. This will be done when the vblank sem 1857 * control is disabled, and when a client calls 1858 * NV0073_CTRL_CMD_SYSTEM_ACCEL_VBLANK_SEM_CONTROLS. It is important for resman 1859 * to have access to the value in ::requestCounterAccel, and not just 1860 * ::requestCounter. The latter is only the last value released so far by the 1861 * client's channel (further releases to ::requestCounter may still be inflight, 1862 * perhaps blocked on pending semaphore acquires). The former should be the 1863 * most recent value enqueued in the channel. This is also why it is important 1864 * for clients to acquire with ACQ_GEQ (greater-than-or-equal-to), rather than 1865 * just ACQUIRE. 1866 * 1867 * The same hMemory (with difference memoryOffsets) may be used by multiple 1868 * VBlank Sem Controls. 1869 */ 1870 1871 /* Fields within NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_DATA::flags */ 1872 #define NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_SWAP_INTERVAL 15:0 1873 #define NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_USE_MINIMUM_GPU_TIME 16:16 1874 1875 typedef struct NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_DATA { 1876 NvU32 requestCounterAccel; 1877 NvU32 requestCounter; 1878 NvU32 flags; 1879 NV_DECLARE_ALIGNED(NvU64 minimumGpuTime, 8); 1880 1881 NvU32 semaphore; 1882 NV_DECLARE_ALIGNED(NvU64 vblankCount, 8); 1883 NV_DECLARE_ALIGNED(NvU64 releaseGpuTime, 8); 1884 } NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_DATA; 1885 1886 #define NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL (0x73019fU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_PARAMS_MESSAGE_ID" */ 1887 1888 #define NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_PARAMS_MESSAGE_ID (0x9FU) 1889 1890 typedef struct NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_PARAMS { 1891 NvU32 subDeviceInstance; 1892 NvBool bEnable; 1893 NvU32 head; 1894 NvHandle hMemory; 1895 NV_DECLARE_ALIGNED(NvU64 memoryOffset, 8); 1896 } NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_PARAMS; 1897 1898 /* 1899 * Accelerate all VBlank Sem Controls on the specified heads. 1900 * 1901 * For all enabled vblank sem controls on the specified heads, immediate set 1902 * their pending ::semaphore fields to the value in their ::requestCounterAccel 1903 * field. 1904 */ 1905 #define NV0073_CTRL_CMD_SYSTEM_ACCEL_VBLANK_SEM_CONTROLS (0x7301a2U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SYSTEM_ACCEL_VBLANK_SEM_CONTROLS_PARAMS_MESSAGE_ID" */ 1906 1907 #define NV0073_CTRL_CMD_SYSTEM_ACCEL_VBLANK_SEM_CONTROLS_PARAMS_MESSAGE_ID (0xA2U) 1908 1909 typedef struct NV0073_CTRL_CMD_SYSTEM_ACCEL_VBLANK_SEM_CONTROLS_PARAMS { 1910 NvU32 subDeviceInstance; 1911 NvU32 headMask; 1912 } NV0073_CTRL_CMD_SYSTEM_ACCEL_VBLANK_SEM_CONTROLS_PARAMS; 1913 1914 /* 1915 * Maps the memory allocated in Kernel RM into Physical RM using the 1916 * memory descriptor information provided. 1917 * 1918 * Possible status values returned are: 1919 * NV_OK 1920 * NV_ERR_INVALID_ARGUMENT 1921 * NV_ERR_NOT_SUPPORTED 1922 */ 1923 1924 typedef struct NV0073_CTRL_SHARED_MEMDESC_INFO { 1925 NV_DECLARE_ALIGNED(NvU64 base, 8); 1926 NV_DECLARE_ALIGNED(NvU64 size, 8); 1927 NV_DECLARE_ALIGNED(NvU64 alignment, 8); 1928 NvU32 addressSpace; 1929 NvU32 cpuCacheAttrib; 1930 } NV0073_CTRL_SHARED_MEMDESC_INFO; 1931 1932 #define NV0073_CTRL_CMD_SYSTEM_MAP_SHARED_DATA (0x7301a3U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SYSTEM_MAP_SHARED_DATA_PARAMS_MESSAGE_ID" */ 1933 1934 #define NV0073_CTRL_CMD_SYSTEM_MAP_SHARED_DATA_PARAMS_MESSAGE_ID (0xA3U) 1935 1936 typedef struct NV0073_CTRL_CMD_SYSTEM_MAP_SHARED_DATA_PARAMS { 1937 NV_DECLARE_ALIGNED(NV0073_CTRL_SHARED_MEMDESC_INFO memDescInfo, 8); 1938 NvU32 subDeviceInstance; 1939 NvBool bMap; 1940 } NV0073_CTRL_CMD_SYSTEM_MAP_SHARED_DATA_PARAMS; 1941 1942 /* _ctrl0073system_h_ */ 1943 1944