Files
open-gpu-kernel-modules/src/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073specific.h
Andy Ritger 1739a20efc 515.43.04
2022-05-09 13:18:59 -07:00

1794 lines
88 KiB
C

/*
* SPDX-FileCopyrightText: Copyright (c) 1993-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#pragma once
#include <nvtypes.h>
//
// This file was generated with FINN, an NVIDIA coding tool.
// Source file: ctrl/ctrl0073/ctrl0073specific.finn
//
#include "ctrl/ctrl0073/ctrl0073base.h"
#include "ctrl/ctrlxxxx.h"
/* NV04_DISPLAY_COMMON display-specific control commands and parameters */
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_TYPE
*
* This command can be used to determine the associated display type for
* the specified displayId.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the
* total number of subdevices within the parent device. This parameter
* should be set to zero for default behavior.
* displayId
* This parameter specifies the ID of the display for which the display
* type is to be returned. Only one display may be indicated in this
* parameter.
* displayType
* This parameter returns the display type associated with the specified
* displayId parameter. Valid displayType values are:
* NV0073_CTRL_SPECIFIC_DISPLAY_TYPE_CRT
* NV0073_CTRL_SPECIFIC_DISPLAY_TYPE_DFP
* NV0073_CTRL_SPECIFIC_DISPLAY_TYPE_TV
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_TYPE (0x730240U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_TYPE_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_GET_TYPE_PARAMS_MESSAGE_ID (0x40U)
typedef struct NV0073_CTRL_SPECIFIC_GET_TYPE_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 displayType;
} NV0073_CTRL_SPECIFIC_GET_TYPE_PARAMS;
/* valid display types */
#define NV0073_CTRL_SPECIFIC_DISPLAY_TYPE_UNKNOWN (0x00000000U)
#define NV0073_CTRL_SPECIFIC_DISPLAY_TYPE_CRT (0x00000001U)
#define NV0073_CTRL_SPECIFIC_DISPLAY_TYPE_DFP (0x00000002U)
#define NV0073_CTRL_SPECIFIC_DISPLAY_TYPE_TV (0x00000003U)
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_EDID_V2
*
* This command can be used to request the EDID for the specified displayId.
*
* [in] subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the total
* number of subdevices within the parent device. This parameter should
* be set to zero for default behavior.
* [in] displayId
* This parameter specifies the display to read the EDID. The display ID
* must specify a display with a positive connect state as determined
* with the NV0073_CTRL_CMD_SYSTEM_GET_CONNECT_STATE command. Only one
* display may be indicated in this parameter. If a more than one
* display Id is used, the RM will return NV_ERR_INVALID_ARGUMENT.
* [out] bufferSize
* This parameter returns the number of bytes copied into edidBuffer after
* performing the requested EDID operations.
* [out] edidBuffer
* The array of EDIDs that RM will fill after the requested operations. If
* the size of the array is not large enough to hold the number of bytes to
* be copied, NV_ERR_INVALID_ARGUMENT will be returned.
* [in] flags
* This parameter defines the specific operations that will be performed
* in reading the EDID.
* Here are the current defined fields:
* NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_COPY_CACHE
* A client uses this field to indicate whether to return the cached
* copy of the EDID or to use DDC to read the EDID from the display.
* Possible values are:
* NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_COPY_CACHE_NO
* The RM will use DDC to grab the EDID.
* NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_COPY_CACHE_YES
* The RM will copy the last EDID found into the clients
* buffer. No DDC will be performed.
* NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_READ_MODE
* A client uses this field to indicate whether to read from
* the HW and return the EDID w/o any patching
* Possible values are:
* NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_READ_MODE_COOKED
* Use the _COPY_CACHE policy
* NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_READ_MODE_RAW
* Perform the read and return an unadulterated EDID.
* NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_DISPMUX_READ_MODE
* A client uses this field to indicate whether to read EDID
* from SBIOS using ACPI sub function for display dynamic switching
* feature. This flag should only be set on internal display with
* dynamic switching feature enabled.
* Possible values are:
* NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_DISPMUX_READ_MODE_ACPI
* RM reads the EDID from SBIOS and returns the raw EDID provided
* by SBIOS.
* NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_DISPMUX_READ_MODE_DEFAULT
* EDID is read based on rest of the 'flags' that are passed to
* this function.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_EDID_V2 (0x730245U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_EDID_V2_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_GET_EDID_MAX_EDID_BYTES 2048U
#define NV0073_CTRL_SPECIFIC_GET_EDID_V2_PARAMS_MESSAGE_ID (0x45U)
typedef struct NV0073_CTRL_SPECIFIC_GET_EDID_V2_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 bufferSize;
NvU32 flags;
NvU8 edidBuffer[NV0073_CTRL_SPECIFIC_GET_EDID_MAX_EDID_BYTES];
} NV0073_CTRL_SPECIFIC_GET_EDID_V2_PARAMS;
#define NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_COPY_CACHE 0:0
#define NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_COPY_CACHE_NO 0x00000000U
#define NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_COPY_CACHE_YES 0x00000001U
#define NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_READ_MODE 1:1
#define NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_READ_MODE_COOKED 0x00000000U
#define NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_READ_MODE_RAW 0x00000001U
#define NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_DISPMUX_READ_MODE 3:2
#define NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_DISPMUX_READ_MODE_DEFAULT 0x00000000U
#define NV0073_CTRL_SPECIFIC_GET_EDID_FLAGS_DISPMUX_READ_MODE_ACPI 0x00000001U
/*
* NV0073_CTRL_CMD_SPECIFIC_SET_EDID_V2
*
* This command can be used to set or remove a complete EDID for the
* specified displayId. Once the EDID is set, any requests
* to read the EDID or use DDC detection will always use a cached copy of
* the EDID. That is, the EDID becomes static until disabled by calling
* this same function with edidBuffer. Note, that DDC based
* detection will always pass for any displayId that has set an EDID. Also,
* this path will not store any value across reboots. If an EDID needs to
* remain set after a reboot, RM clients must call this function again.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the total
* number of subdevices within the parent device. This parameter should
* be set to zero for default behavior.
* displayId
* This parameter specifies the display to store or the EDID. Only one
* display may be indicated in this parameter. If more than one displayId
* is used, the RM will return NV_ERR_INVALID_ARGUMENT.
* If the displayId does not use DDC and hence would not have an EDID,
* then the RM could also return NV_ERR_INVALID_ARGUMENT.
* bufferSize
* This parameter specifies the size of the EDID buffer pointed to by
* pEdidBuffer. If the EDID write contains more bytes than bufferSize,
* the RM will extend the bufferSize of the EDID inside the RM to match.
* Note a bufferSize of 0 would mean no bytes will be copied, but set the
* current cached EDID as static.
* edidBuffer
* This parameter specifies the EDID buffer that the RM will copy into
* the RM buffer. If the EDID buffer is empty, the RM will remove any
* previous set EDID and allow further detection and EDID reads to use DDC.
* The RM will not check to see if the EDID is valid here or not.
* The client should validate the EDID if needed before calling this function.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*
*/
#define NV0073_CTRL_CMD_SPECIFIC_SET_EDID_V2 (0x730246U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_EDID_V2_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_SET_EDID_V2_PARAMS_MESSAGE_ID (0x46U)
typedef struct NV0073_CTRL_SPECIFIC_SET_EDID_V2_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 bufferSize;
NvU8 edidBuffer[NV0073_CTRL_SPECIFIC_GET_EDID_MAX_EDID_BYTES];
} NV0073_CTRL_SPECIFIC_SET_EDID_V2_PARAMS;
/*
* NV0073_CTRL_CMD_SPECIFIC_FAKE_DEVICE
*
* This Control Cmd is for providing the Faking device(s) support from RM.
* This command serves as the entry point for all interaction of RM with
* user mode component of the any internal [test] tool. The Faking framework
* in RM will be activated only after the usermode app sends in a proper ENABLE
* cmd first. Any attempt to issue other cmds while the faking code has not
* been enabled will result in RM err _INVALID_DATA.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the total
* number of subdevices within the parent device. This parameter should
* be set to zero for default behavior.
* cmd
* This field will carry the command to be executed by the framework.
* This includes Enabling/Disabling the test framework and faking devices
* like CRT/DVI/TV.
* data
* This field is to carry the data required for executing the cmd.
* Except for Enable and Disable, the other faking device commands will
* require the device mask of the device to be faked/removed.
* tvType
* This field specifies a specific TV type while faking a TV.
* Possible values are:
* NV0073_FAKE_DEVICE_TV_NONE
* NV0073_FAKE_DEVICE_TV_SVIDEO
* NV0073_FAKE_DEVICE_TV_COMPOSITE
* NV0073_FAKE_DEVICE_TV_COMPONENT
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_DATA
*
*/
#define NV0073_CTRL_CMD_SPECIFIC_FAKE_DEVICE (0x730243U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SPECIFIC_FAKE_DEVICE_PARAMS_MESSAGE_ID" */
/* valid fake device TV connector types */
#define NV0073_FAKE_DEVICE_TV_NONE (0U)
#define NV0073_FAKE_DEVICE_TV_SVIDEO (1U)
#define NV0073_FAKE_DEVICE_TV_COMPOSITE (2U)
#define NV0073_FAKE_DEVICE_TV_COMPONENT (3U)
#define NV0073_CTRL_CMD_SPECIFIC_FAKE_DEVICE_PARAMS_MESSAGE_ID (0x43U)
typedef struct NV0073_CTRL_CMD_SPECIFIC_FAKE_DEVICE_PARAMS {
NvU32 subDeviceInstance;
NvU32 cmd;
NvU32 data;
NvU32 tvType;
} NV0073_CTRL_CMD_SPECIFIC_FAKE_DEVICE_PARAMS;
/* Faking Support commands */
/* some random value to enable/disable test code */
#define NV0073_FAKE_DEVICE_SUPPORT_ENABLE 0x11faU
#define NV0073_FAKE_DEVICE_SUPPORT_DISABLE 0x99ceU
#define NV0073_FAKE_DEVICE_SUPPORT_ATTACH_DEVICES 0x100U
#define NV0073_FAKE_DEVICE_SUPPORT_REMOVE_DEVICES 0x101U
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_I2C_PORTID
*
* This command returns the I2C portID for the specified display device.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the
* total number of subdevices within the parent device. This parameter
* should be set to zero for default behavior.
* displayId
* This parameter specifies the display for which information is to be
* returned. Only one display may be indicated in this parameter.
* If more than one displayId is used a failing status of
* NV_ERR_INVALID_ARGUMENT will be returned.
* commPortId
* This parameter returns the I2C communication port ID of the
* display device indicated by the displayId parameter.
* ddcPortId
* This parameter returns the I2C DDC port ID of the display device
* indicated by the displayId parameter.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_I2C_PORTID (0x730211U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_I2C_PORTID_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_GET_I2C_PORTID_PARAMS_MESSAGE_ID (0x11U)
typedef struct NV0073_CTRL_SPECIFIC_GET_I2C_PORTID_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 commPortId;
NvU32 ddcPortId;
} NV0073_CTRL_SPECIFIC_GET_I2C_PORTID_PARAMS;
#define NV0073_CTRL_SPECIFIC_I2C_PORT_NONE (0x0U)
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_CONNECTOR_DATA
*
* This command can be used to get display connector data.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the
* total number of subdevices within the parent device. This parameter
* should be set to zero for default behavior.
* displayId
* This parameter specifies the display for which information is to be
* returned. Only one display may be indicated in this parameter.
* If more than one displayId is used a failing status of
* NV_ERR_INVALID_ARGUMENT will be returned.
* DDCPartners
* This parameter specifies an NV0073_DISPLAY_MASK value describing
* the set of displays that share the same DDC line as displayId. This
* parameter will always be returned even if we also return the
* NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_FLAGS_PRESENT_NO flag.
* flags
* This parameter specifies optional flags to be used while retrieving
* the connector data for a given displayId.
* Legal values for this parameter include:
* NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_FLAGS_PRESENT
* This flag describes whether the connector data is present
* inside the firmware.
* count
* This parameter returns the number of connectors associated with
* the displayId argument. This value indicates the number of
* valid entries returned in the data parameter.
* data
* This parameter returns an array of structures containing the connector
* data associated with each connector for the given displayId argument.
* The count field specifies how many entries in this array are returned.
* Each entry in the array contains the following members:
* index
* This value is the index associated with the given connector. If
* two displayIds share the same index, then they share the same
* connector.
* type
* This value defines the type of connector associated with the
* displayId argument.
* location
* This value provides a possible means to determine the relative
* location of the connector in association to other connectors.
* For desktop boards, a value of zero defines the south most
* connector (the connector closest to the bus slot into which
* the board is inserted).
* platform
* This value defines the type of system with which to associate the
* location of each connector.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_CONNECTOR_DATA (0x730250U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_CONNECTOR_DATA_PARAMS_MESSAGE_ID" */
/* maximum number of connectors */
#define NV0073_CTRL_MAX_CONNECTORS 4U
#define NV0073_CTRL_SPECIFIC_GET_CONNECTOR_DATA_PARAMS_MESSAGE_ID (0x50U)
typedef struct NV0073_CTRL_SPECIFIC_GET_CONNECTOR_DATA_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 flags;
NvU32 DDCPartners;
NvU32 count;
struct {
NvU32 index;
NvU32 type;
NvU32 location;
} data[NV0073_CTRL_MAX_CONNECTORS];
NvU32 platform;
} NV0073_CTRL_SPECIFIC_GET_CONNECTOR_DATA_PARAMS;
/* defines for the flags field */
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_FLAGS_PRESENT 0:0
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_FLAGS_PRESENT_NO 0x00000000U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_FLAGS_PRESENT_YES 0x00000001U
/* defines for the data[].type field */
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_VGA_15_PIN 0x00000000U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_TV_COMPOSITE 0x00000010U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_TV_SVIDEO 0x00000011U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_TV_HDTV_COMPONENT 0x00000013U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_TV_SCART 0x00000014U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_TV_COMPOSITE_SCART_OVER_EIAJ4120_BLUE 0x00000016U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_TV_HDTV_EIAJ4120 0x00000017U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_PC_POD_HDTV_YPRPB 0x00000018U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_PC_POD_SVIDEO 0x00000019U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_PC_POD_COMPOSITE 0x0000001AU
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_DVI_I_TV_SVIDEO 0x00000020U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_DVI_I_TV_COMPOSITE 0x00000021U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_DVI_I 0x00000030U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_DVI_D 0x00000031U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_ADC 0x00000032U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_LFH_DVI_I_1 0x00000038U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_LFH_DVI_I_2 0x00000039U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_SPWG 0x00000040U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_OEM 0x00000041U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_DP_EXT 0x00000046U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_DP_INT 0x00000047U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_DP_MINI_EXT 0x00000048U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_DP_SERIALIZER 0x00000049U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_HDMI_A 0x00000061U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_HDMI_C_MINI 0x00000063U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_LFH_DP_1 0x00000064U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_LFH_DP_2 0x00000065U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_VIRTUAL_WFD 0x00000070U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_USB_C 0x00000071U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_DSI 0x00000072U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_STEREO_3PIN_DIN 0x00000073U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_DATA_TYPE_UNKNOWN 0xFFFFFFFFU
/* defines for the platform field */
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_DEFAULT_ADD_IN_CARD 0x00000000U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_TWO_PLATE_ADD_IN_CARD 0x00000001U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_CONFIGURABLE 0x00000002U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_DESKTOP_FULL_DP 0x00000007U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_MOBILE_ADD_IN_CARD 0x00000008U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_MXM 0x00000009U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_MOBILE_BACK 0x00000010U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_MOBILE_BACK_LEFT 0x00000011U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_MOBILE_BACK_DOCK 0x00000018U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_CRUSH_DEFAULT 0x00000020U
#define NV0073_CTRL_SPECIFIC_CONNECTOR_PLATFORM_UNKNOWN 0xFFFFFFFFU
/*
* NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_ENABLE
*
* This command is used to signal the resource manager that the upcoming mode
* shall be hdmi vs dvi. This is required since the resource manager
* does not read the display edid. The resource manager shall enable hdmi
* components such as turning on the audio engine for instance. This should
* be called prior to every modeset in which the displayId is capable of hdmi.
* displayId
* This parameter specifies the displayId of HDMI resource to configure.
* This comes as input to this command.
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which operation should be directed.
* This parameter must specify a value between zero and the total number
* of subdevices within the parent device. This parameter should be set
* to zero for default behavior.
* enable
* This field specifies the legal values:
* NV0073_CTRL_SPECIFIC_SET_HDMI_ENABLE_TRUE
* NV0073_CTRL_SPECIFIC_SET_HDMI_ENABLE_FALSE
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_ENABLE (0x730273U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_HDMI_ENABLE_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_SET_HDMI_ENABLE_PARAMS_MESSAGE_ID (0x73U)
typedef struct NV0073_CTRL_SPECIFIC_SET_HDMI_ENABLE_PARAMS {
NvU8 subDeviceInstance;
NvU32 displayId;
NvU8 enable;
} NV0073_CTRL_SPECIFIC_SET_HDMI_ENABLE_PARAMS;
#define NV0073_CTRL_SPECIFIC_SET_HDMI_ENABLE_FALSE (0x00000000U)
#define NV0073_CTRL_SPECIFIC_SET_HDMI_ENABLE_TRUE (0x00000001U)
/*
* NV0073_CTRL_CMD_SPECIFIC_CTRL_HDMI
*
* This command can be used to enable HDMI communication on the associated GPU.
* This should be called prior to every modeset in which the displayId is capable of HDMI.
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which operation should be directed.
* This parameter must specify a value between zero and the total number
* of subdevices within the parent device. This parameter should be set
* to zero for default behavior.
* displayId
* This parameter specifies the displayId of HDMI resource to configure.
* This comes as input to this command.
* enable
* This field specifies the legal values:
* NV0073_CTRL_SPECIFIC_CTRL_HDMI_DISABLE
* NV0073_CTRL_SPECIFIC_CTRL_HDMI_ENABLE
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_CTRL_HDMI (0x730274U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_CTRL_HDMI_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_CTRL_HDMI_PARAMS_MESSAGE_ID (0x74U)
typedef struct NV0073_CTRL_SPECIFIC_CTRL_HDMI_PARAMS {
NvU8 subDeviceInstance;
NvU32 displayId;
NvBool bEnable;
} NV0073_CTRL_SPECIFIC_CTRL_HDMI_PARAMS;
#define NV0073_CTRL_SPECIFIC_CTRL_HDMI_DISABLE (0x00000000U)
#define NV0073_CTRL_SPECIFIC_CTRL_HDMI_ENABLE (0x00000001U)
/*
* NV0073_CTRL_SPECIFIC_ACPI_ID_MAPPING
*
* This structure defines the mapping between the ACPI ID and the corresponding
* display ID of a display device
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the
* total number of subdevices within the parent device. This parameter
* should be set to zero for default behavior.
* acpiId
* The ACPI ID of the display device
* displayId
* The corresponding display ID
* dodIndex
* The corresponding DOD index
*/
typedef struct NV0073_CTRL_SPECIFIC_ACPI_ID_MAPPING {
NvU32 subDeviceInstance;
NvU32 acpiId;
NvU32 displayId;
NvU32 dodIndex;
} NV0073_CTRL_SPECIFIC_ACPI_ID_MAPPING;
/*
* NV0073_CTRL_CMD_SPECIFIC_SET_ACPI_ID_MAPPING
*
* This call will update the RM data structure which holds the
* ACPI ID to display ID mapping of the display devices
*
* The input parameter is an array of structures of type
* NV0073_CTRL_SPECIFIC_ACPI_ID_MAPPING
*
* If some of the array elements remain unused, the acpiId field of the
* structure must be set to 0x0000
*
* The size of the array is given by
* NV0073_CTRL_SPECIFIC_MAX_ACPI_DEVICES (defined below)
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
*
*/
#define NV0073_CTRL_CMD_SPECIFIC_SET_ACPI_ID_MAPPING (0x730284U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_ACPI_ID_MAPPING_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_MAX_ACPI_DEVICES 16U
#define NV0073_CTRL_SPECIFIC_SET_ACPI_ID_MAPPING_PARAMS_MESSAGE_ID (0x84U)
typedef struct NV0073_CTRL_SPECIFIC_SET_ACPI_ID_MAPPING_PARAMS {
NV0073_CTRL_SPECIFIC_ACPI_ID_MAPPING mapTable[NV0073_CTRL_SPECIFIC_MAX_ACPI_DEVICES];
} NV0073_CTRL_SPECIFIC_SET_ACPI_ID_MAPPING_PARAMS;
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_ALL_HEAD_MASK
*
* This call will return all head mask.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the
* total number of subdevices within the parent device. This parameter
* should be set to zero for default behavior.
* headMask
* headMask is the mask of all heads that are usable. For example, if
* head 0 and head 2 are present, headMask would be NVBIT(0)|NVBIT(2). This
* parameter returns to the client.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_ARGUMENT
*
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_ALL_HEAD_MASK (0x730287U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_ALL_HEAD_MASK_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_GET_ALL_HEAD_MASK_PARAMS_MESSAGE_ID (0x87U)
typedef struct NV0073_CTRL_SPECIFIC_GET_ALL_HEAD_MASK_PARAMS {
NvU32 subDeviceInstance;
NvU32 headMask;
} NV0073_CTRL_SPECIFIC_GET_ALL_HEAD_MASK_PARAMS;
/*
* NV0073_CTRL_CMD_SPECIFIC_SET_OD_PACKET
*
* This command is used to program the display output packets.
* Currently it supports DP and HDMI.
* Common supported packets are AVI infoframes, Audio Infoframes, Gamma
* Metadata, Vendor Specific infoframes and General Control Packets (GCP).
* + GCP AVMute Enable should be performed before the start of the modeset.
* + GCP AVMute Disable should be performed after the end of the modeset.
* GCP AVMute should contain HDR + 7 bytes.
* + AVI infoframes should occur after the modeset but before a GCP AVMute
* Disable. AVI infoframe should contain HDR + 14 bytes
* + Audio infoframes should occur after the modeset but before a GCP AVMute
* Enable.
* Audio infoframe should contain HDR + 11 bytes.
* + Gamma Metadata packets should contain HDR + 28 bytes.
* + Vendor Specific packets are variable length.
* By HDMI 1.4 June 5 2009 spec, payload can be 5 bytes, 6 bytes, 7 bytes or
* 16 bytes, depending on the packets spec.
* Unused data bytes should be zero-ed out.
*
* displayID
* This parameter specifies the displayID for the display resource to
* configure.
* This comes as input to this command.
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed.
* This parameter must specify a value between zero and the total number
* of subdevices within the parent device. This parameter should be set
* to zero for default behavior.
* transmitControl
* This parameter controls how the packet is to be sent by setting the
* control bits.
* Possible flags are as follows:
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ENABLE
* Set to _ENABLE to start sending the packet at next frame, set to
* _DISABLE to stop sending.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_OTHER_FRAME
* Set to _ENABLE to send the packet at other frame, set to _DISABLE to
* send at every frame.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SINGLE_FRAME
* Set to _ENABLE to send once next frame, set to _DISABLE to send at
* every frame.
* Note: A setting to set both _OTHER_FRAME and _SINGLE_FRAME is invalid
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ON_HBLANK
* Set to _ENABLE to send the packet once on next HBLANK, set to
* _DISABLE to send on VBLANK.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_IMMEDIATE
* Set to _ENABLE to send the info frame packet as soon as possible.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_VIDEO_FMT
* Set to _SW_CONTROLLED to set HDMI_Video_Format field and 3D_Structure field
* from NV_PDISP_SF_HDMI_VSI_SUBPACK0_HIGH_PB4 and PB5, if it is set to _HW_CONTROLLED
* then HW will get them based on the state of the setHdmiCtrl method.
* Btw this applies only for stereo ovverides.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_STEREO_POLARITY
* Set to TRUE to send Vendor specific info frame used for 3D stereo LR sync.
* Set PACKET_TYPE=pktType_VendorSpecInfoFrame along with this flag.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING
* Set to TRUE to send Vendor specific info frame used for Self Refresh panels
* Set PACKET_TYPE=pktType_VendorSpecInfoFrame along with this flag.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_GEN_INFOFRAME_MODE
* HW provides support to program 2 generic infoframes per frame for DP with GP10X+.
* This flag indicates the INFOFRAME that needs to be programmed.
* Set to _INFOFRAME0 if RM should program GENERIC_INFOFRAME
* Set to _INFOFRAME1 if RM should program GENERIC_INFOFRAME1
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE
* This option is reserved for backward compatibility with
* NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_PACKET and
* NV0073_CTRL_CMD_DP_SET_PACKET.
* It is temporal and will be deprecated soon.
* packetSize
* packet size of packets in pPacket to send, including header and payload.
* targetHead
* Specifies the target head number for which SDP needs to be updated.
* bUsePsrHeadforSdp
* Indicates use targetHead field for setting SDP or infoframe packet instead
* of deriving the active head from displayID.
* pPacket
* pPacket points to the packets to send.
* For HDMI 1.1, the maximum allowed bytes is 31.
* The packet array includes the 3 bytes of header + data depending on
* the type of packet. For an infoframe, the header bytes refer to type,
* version and length respectively. This comes as input to this command.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_SET_OD_PACKET (0x730288U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_OD_PACKET_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SET_OD_MAX_PACKET_SIZE 36U
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_PARAMS_MESSAGE_ID (0x88U)
typedef struct NV0073_CTRL_SPECIFIC_SET_OD_PACKET_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 transmitControl;
NvU32 packetSize;
NvU32 targetHead;
NvBool bUsePsrHeadforSdp;
NvU8 aPacket[NV0073_CTRL_SET_OD_MAX_PACKET_SIZE];
} NV0073_CTRL_SPECIFIC_SET_OD_PACKET_PARAMS;
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ENABLE 0:0
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ENABLE_NO (0x0000000U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ENABLE_YES (0x0000001U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_OTHER_FRAME 1:1
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_OTHER_FRAME_DISABLE (0x0000000U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_OTHER_FRAME_ENABLE (0x0000001U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SINGLE_FRAME 2:2
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SINGLE_FRAME_DISABLE (0x0000000U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SINGLE_FRAME_ENABLE (0x0000001U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ON_HBLANK 3:3
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ON_HBLANK_DISABLE (0x0000000U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ON_HBLANK_ENABLE (0x0000001U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_IMMEDIATE 4:4
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_IMMEDIATE_DISABLE (0x0000000U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_IMMEDIATE_ENABLE (0x0000001U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_VIDEO_FMT 5:5
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_VIDEO_FMT_SW_CONTROLLED (0x0000000U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_VIDEO_FMT_HW_CONTROLLED (0x0000001U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_STEREO_POLARITY 6:6
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_STEREO_POLARITY_FALSE (0x0000000U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_STEREO_POLARITY_TRUE (0x0000001U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING 7:7
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING_FALSE (0x0000000U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING_TRUE (0x0000001U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_GEN_INFOFRAME_MODE 9:8
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_GEN_INFOFRAME_MODE_INFOFRAME0 (0x0000000U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_GEN_INFOFRAME_MODE_INFOFRAME1 (0x0000001U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE 31:31
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE_NO (0x0000000U)
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE_YES (0x0000001U)
/*
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_PARAMS
*
* This command is used to enable/disable sending of display output packets.
* Currently it supports HDMI only.
* Unused data bytes should be zero-ed out.
*
* displayID
* This parameter specifies the displayID for the display output resource to
* configure.
* This comes as input to this command.
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be directed.
* This parameter must specify a value between zero and the total number
* of subdevices within the parent device. This parameter should be set
* to zero for default behavior.
* type
* The client shall specify the type of display output packet. For HDMI, set
* this according to HDMI specification 1.4.
* This comes as input to this command.
* transmitControl
* This parameter controls how the packet is to be sent by setting the control
* bits.
* Possible flags are as follows:
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_ENABLE
* Set to _ENABLE to start sending the packet at next frame, set to
* _DISABLE to stop sending.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_OTHER_FRAME
* Set to _ENABLE to send the packet at other frame, set to _DISABLE to
* send at every frame.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SINGLE_FRAME
* Set to _ENABLE to send once next frame, set to _DISABLE to send at
* every frame.
* Note: A setting to set both _OTHER_FRAME and _SINGLE_FRAME is invalid
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_ON_HBLANK
* Set to _ENABLE to send the packet once on next HBLANK, set to _DISABLE
* to send on VBLANK.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_VIDEO_FMT
* Set to _SW_CONTROLLED to set HDMI_Video_Format field and 3D_Structure field
* from NV_PDISP_SF_HDMI_VSI_SUBPACK0_HIGH_PB4 and PB5, if it is set to _HW_CONTROLLED
* then HW will get them based on the state of the setHdmiCtrl method.
* Btw this applies only for stereo ovverides.
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SET_STEREO_POLARITY
* Set to TRUE to enable Vendor specific info frame used for 3D stereo LR sync
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING
* Set to TRUE to enable Vendor specific info frame used for Self Refresh panels
* NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE
* This option is reserved for backward compatibility with
* NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_PACKET and
* NV0073_CTRL_CMD_DP_SET_PACKET.
* It is temporal and will be deprecated soon.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_SET_OD_PACKET_CTRL (0x730289U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_PARAMS_MESSAGE_ID (0x89U)
typedef struct NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 type;
NvU32 transmitControl;
} NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_PARAMS;
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_ENABLE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ENABLE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_ENABLE_NO NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ENABLE_NO
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_ENABLE_YES NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ENABLE_YES
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_OTHER_FRAME NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_OTHER_FRAME
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_OTHER_FRAME_DISABLE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_OTHER_FRAME_DISABLE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_OTHER_FRAME_ENABLE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_OTHER_FRAME_ENABLE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SINGLE_FRAME NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SINGLE_FRAME
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SINGLE_FRAME_DISABLE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SINGLE_FRAME_DISABLE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SINGLE_FRAME_ENABLE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SINGLE_FRAME_ENABLE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_ON_HBLANK NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ON_HBLANK
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_ON_HBLANK_DISABLE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ON_HBLANK_DISABLE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_ON_HBLANK_ENABLE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ON_HBLANK_ENABLE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_VIDEO_FMT NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_VIDEO_FMT
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_VIDEO_FMT_SW_CONTROLLED NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_VIDEO_FMT_SW_CONTROLLED
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_VIDEO_FMT_HW_CONTROLLED NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_VIDEO_FMT_HW_CONTROLLED
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SET_STEREO_POLARITY NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_STEREO_POLARITY
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SET_STEREO_POLARITY_FALSE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_STEREO_POLARITY_FALSE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SET_STEREO_POLARITY_TRUE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_STEREO_POLARITY_TRUE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING_TRUE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING_FALSE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING_FALSE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING_TRUE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE_NO NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE_NO
#define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_CTRL_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE_YES NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE_YES
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_PCLK_LIMIT
*
* This command returns the maximum supported pixel clock rate that is
* supported by the specified display device.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the
* total number of subdevices within the parent device. This parameter
* should be set to zero for default behavior.
* displayId
* This parameter specifies the display for which information is to be
* returned. Only one display may be indicated in this parameter.
* If more than one displayId is used a failing status of
* NV_ERR_INVALID_ARGUMENT will be returned.
* pclkLimit
* This parameter returns the min of orPclkLimit and vbPclkLimit in KHz.
* It may be used for SLI configs that use a video bridge. For non-SLI
* configs and bridgeless SLI configs, the client should use orPclkLimit instead.
* orPclkLimit
* This parameter returns the maximum pixel clock frequency of OR in KHz.
* vbPclkLimit
* This parameter returns the maximum pixel clock frequency of the
* video bridge (SLI) in KHz (or zero if there is no video bridge).
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_PCLK_LIMIT (0x73028aU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_PCLK_LIMIT_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_GET_PCLK_LIMIT_PARAMS_MESSAGE_ID (0x8AU)
typedef struct NV0073_CTRL_SPECIFIC_GET_PCLK_LIMIT_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 pclkLimit;
NvU32 orPclkLimit;
NvU32 vbPclkLimit;
} NV0073_CTRL_SPECIFIC_GET_PCLK_LIMIT_PARAMS;
/*
* NV0073_CTRL_CMD_SPECIFIC_OR_GET_INFO
*
* This command returns output resource information for the specified display
* device.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the
* total number of subdevices within the parent device. This parameter
* should be set to zero for default behavior.
* displayId
* This parameter specifies the display for which information is to be
* returned. Only one display may be indicated in this parameter.
* If more than one displayId is used a failing status of
* NV_ERR_INVALID_ARGUMENT will be returned.
* type
* This parameter returns the output resource type. Legal values for
* this parameter include:
* NV0073_CTRL_SPECIFIC_OR_TYPE_DAC
* The output resource is a DAC.
* NV0073_CTRL_SPECIFIC_OR_TYPE_SOR
* The output resource is a serial output resource.
* NV0073_CTRL_SPECIFIC_OR_TYPE_DSI
* The output resource is a Display Serial Interface output resource.
* NV0073_CTRL_SPECIFIC_OR_TYPE_PIOR
* The output resource is a parallel input output resource.
* index
* This parameter returns the type-specific index of the output
* resource associated with the specified displayId.
* protocol
* This parameter returns the type-specific protocol used by the
* output resource. Legal values for this parameter include:
* NV0073_CTRL_SPECIFIC_OR_PROTOCOL_DAC_RGB_CRT
* NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_LVDS_CUSTOM
* NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_A
* NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_B
* NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DUAL_TMDS
* NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DP_A
* NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DP_B
* NV0073_CTRL_SPECIFIC_OR_PROTOCOL_PIOR_EXT_TMDS_ENC
* NV0073_CTRL_SPECIFIC_OR_PROTOCOL_DSI
* NV0073_CTRL_SPECIFIC_OR_PROTOCOL_UNKNOWN
* ditherType
* This parameter returns the dither type for the output resource.
* Legal values for this parameter include:
* NV0073_CTRL_SPECIFIC_OR_DITHER_TYPE_6_BITS
* NV0073_CTRL_SPECIFIC_OR_DITHER_TYPE_8_BITS
* NV0073_CTRL_SPECIFIC_OR_DITHER_TYPE_10_BITS
* NV0073_CTRL_SPECIFIC_OR_DITHER_TYPE_OFF
* ditherAlgo
* This parameter returns the dithering algorithm used by the output
* resource. Legal values for this parameter include:
* NV0073_CTRL_SPECIFIC_OR_DITHER_ALOGO_DYNAMIC_ERR_ACC
* NV0073_CTRL_SPECIFIC_OR_DITHER_ALOGO_STATIC_ERR_ACC
* NV0073_CTRL_SPECIFIC_OR_DITHER_ALOGO_DYNAMIC_2X2
* NV0073_CTRL_SPECIFIC_OR_DITHER_ALOGO_STATIC_2X2
* NV0073_CTRL_SPECIFIC_OR_DITHER_ALOGO_TEMPORAL
* NV0073_CTRL_SPECIFIC_OR_DITHER_ALOGO_UNKNOWN
* location
* This parameter returns the physical location of the output resource.
* Legal values for this parameter include:
* NV0073_CTRL_SPECIFIC_OR_LOCATION_CHIP
* NV0073_CTRL_SPECIFIC_OR_LOCATION_BOARD
* rootPortId
* This parameter specifies the Root-Port ID for the given display.
* dcbIndex
* This parameter returns the DCB index of the display device.
* vbiosAddress
* This parameter is the VBIOS IP address which will have valid value
* only if displayId is allocated by VBIOS.
* bIsLitByVbios
* This parameter specifies that whether displayID allocation was
* requested by VBIOS or not.
* bIsDispDynamic
* Returns NV_TRUE if DisplayID is allocated Dynamically else NV_FALSE
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_OR_GET_INFO (0x73028bU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_OR_GET_INFO_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_OR_GET_INFO_PARAMS_MESSAGE_ID (0x8BU)
typedef struct NV0073_CTRL_SPECIFIC_OR_GET_INFO_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 index;
NvU32 type;
NvU32 protocol;
NvU32 ditherType;
NvU32 ditherAlgo;
NvU32 location;
NvU32 rootPortId;
NvU32 dcbIndex;
NV_DECLARE_ALIGNED(NvU64 vbiosAddress, 8);
NvBool bIsLitByVbios;
NvBool bIsDispDynamic;
} NV0073_CTRL_SPECIFIC_OR_GET_INFO_PARAMS;
/* valid type values */
#define NV0073_CTRL_SPECIFIC_OR_TYPE_NONE (0x00000000U)
#define NV0073_CTRL_SPECIFIC_OR_TYPE_DAC (0x00000001U)
#define NV0073_CTRL_SPECIFIC_OR_TYPE_SOR (0x00000002U)
#define NV0073_CTRL_SPECIFIC_OR_TYPE_PIOR (0x00000003U)
#define NV0073_CTRL_SPECIFIC_OR_TYPE_DSI (0x00000005U)
/* valid DAC protocol values */
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_DAC_RGB_CRT (0x00000000U)
/* valid SOR protocol values */
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_LVDS_CUSTOM (0x00000000U)
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_A (0x00000001U)
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_B (0x00000002U)
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DUAL_TMDS (0x00000005U)
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DP_A (0x00000008U)
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DP_B (0x00000009U)
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DSI (0x00000010U)
/* valid DSI protocol values */
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_DSI (0x00000011U)
/* valid PIOR protocol values */
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_PIOR_EXT_TMDS_ENC (0x00000000U)
/* valid UNKNOWN protocol value */
#define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_UNKNOWN (0xFFFFFFFFU)
/* valid ditherType values */
#define NV0073_CTRL_SPECIFIC_OR_DITHER_TYPE_6_BITS (0x00000000U)
#define NV0073_CTRL_SPECIFIC_OR_DITHER_TYPE_8_BITS (0x00000001U)
#define NV0073_CTRL_SPECIFIC_OR_DITHER_TYPE_10_BITS (0x00000002U)
#define NV0073_CTRL_SPECIFIC_OR_DITHER_TYPE_OFF (0x00000003U)
/* valid ditherAlgo values */
#define NV0073_CTRL_SPECIFIC_OR_DITHER_ALGO_DYNAMIC_ERR_ACC (0x00000000U)
#define NV0073_CTRL_SPECIFIC_OR_DITHER_ALGO_STATIC_ERR_ACC (0x00000001U)
#define NV0073_CTRL_SPECIFIC_OR_DITHER_ALGO_DYNAMIC_2X2 (0x00000002U)
#define NV0073_CTRL_SPECIFIC_OR_DITHER_ALGO_STATIC_2X2 (0x00000003U)
#define NV0073_CTRL_SPECIFIC_OR_DITHER_ALGO_TEMPORAL (0x00000004U)
#define NV0073_CTRL_SPECIFIC_OR_DITHER_ALGO_UNKNOWN (0xFFFFFFFFU)
/* valid location values */
#define NV0073_CTRL_SPECIFIC_OR_LOCATION_CHIP (0x00000000U)
#define NV0073_CTRL_SPECIFIC_OR_LOCATION_BOARD (0x00000001U)
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_BACKLIGHT_BRIGHTNESS
* NV0073_CTRL_CMD_SPECIFIC_SET_BACKLIGHT_BRIGHTNESS
*
* These commands retrieve and set the user backlight brightness for
* the specified display.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed.
* displayId
* Display for which brightness is to be retrieved or set.
* brightness
* The backlight brightness in the range [0,100], inclusive. This
* is an input for SET_BACKLIGHT_BRIGHTNESS, and an output for
* GET_BACKLIGHT_BRIGHTNESS.
*
*
* Possible status values returned include:
* NV_OK
* NV_ERR_NOT_SUPPORTED
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_BACKLIGHT_BRIGHTNESS (0x730291U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | 0x91" */
#define NV0073_CTRL_CMD_SPECIFIC_SET_BACKLIGHT_BRIGHTNESS (0x730292U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | 0x92" */
#define NV0073_CTRL_BACKLIGHT_BRIGHTNESS_MIN_VALUE 0U
#define NV0073_CTRL_BACKLIGHT_BRIGHTNESS_MAX_VALUE 100U
typedef struct NV0073_CTRL_SPECIFIC_BACKLIGHT_BRIGHTNESS_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 brightness;
} NV0073_CTRL_SPECIFIC_BACKLIGHT_BRIGHTNESS_PARAMS;
/*
* NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS
*
* This command is used to inform RM about the scrambling, clock mode, FRL and
* DSC caps of the HDMI sink device.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed..
* displayID
* This parameter specifies the displayID for the display output resource to
* configure.
* caps
* This parameter specifies the sink caps.
* GT_340MHZ_CLOCK_SUPPORTED refers to whether sink supports TMDS clock (sorClk) rate greater than 340 MHz
* LTE_340MHZ_SCRAMBLING_SUPPORTED refers to whether scrambling is supported for clock rate at or below 340 MHz
* SCDC_SUPPORTED refers to whether SCDC access is supported on sink
* MAX_FRL_RATE_SUPPORTED refers to the maximum HDMI 2.1 FRL rate supported
* DSC_12_SUPPORTED refers to whether VESA DSC v1.2a is supported
* DSC_12_MAX_FRL_RATE_SUPPORTED refers to the maximum HDMI 2.1 FRL rate supported when VESA DSC v1.2a is supported
*
*
* Possible status values returned include:
* NV_OK
* NV_ERR_NOT_SUPPORTED
*/
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS (0x730293U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_HDMI_SINK_CAPS_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_SET_HDMI_SINK_CAPS_PARAMS_MESSAGE_ID (0x93U)
typedef struct NV0073_CTRL_SPECIFIC_SET_HDMI_SINK_CAPS_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 caps;
} NV0073_CTRL_SPECIFIC_SET_HDMI_SINK_CAPS_PARAMS;
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_GT_340MHZ_CLOCK_SUPPORTED 0:0
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_GT_340MHZ_CLOCK_SUPPORTED_FALSE (0x00000000U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_GT_340MHZ_CLOCK_SUPPORTED_TRUE (0x00000001U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_LTE_340MHZ_SCRAMBLING_SUPPORTED 1:1
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_LTE_340MHZ_SCRAMBLING_SUPPORTED_FALSE (0x00000000U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_LTE_340MHZ_SCRAMBLING_SUPPORTED_TRUE (0x00000001U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_SCDC_SUPPORTED 2:2
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_SCDC_SUPPORTED_FALSE (0x00000000U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_SCDC_SUPPORTED_TRUE (0x00000001U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED 5:3
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_NONE (0x00000000U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_3LANES_3G (0x00000001U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_3LANES_6G (0x00000002U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_4LANES_6G (0x00000003U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_4LANES_8G (0x00000004U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_4LANES_10G (0x00000005U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_4LANES_12G (0x00000006U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_12_SUPPORTED 6:6
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_12_SUPPORTED_FALSE (0x00000000U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_12_SUPPORTED_TRUE (0x00000001U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED 9:7
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_NONE (0x00000000U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_3LANES_3G (0x00000001U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_3LANES_6G (0x00000002U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_4LANES_6G (0x00000003U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_4LANES_8G (0x00000004U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_4LANES_10G (0x00000005U)
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_4LANES_12G (0x00000006U)
/*
* NV0073_CTRL_CMD_SPECIFIC_SET_MONITOR_POWER
*
* This command sets monitor power on/off.
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed.
* displayId
* This parameter specifies the displayID for the display output resource to
* configure.
* powerState
* This parameter should be one of the valid
* NV0073_CTRL_SPECIFIC_SET_MONITOR_POWER_* values.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_SET_MONITOR_POWER (0x730295U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_MONITOR_POWER_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_SET_MONITOR_POWER_PARAMS_MESSAGE_ID (0x95U)
typedef struct NV0073_CTRL_SPECIFIC_SET_MONITOR_POWER_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 powerState;
} NV0073_CTRL_SPECIFIC_SET_MONITOR_POWER_PARAMS;
#define NV0073_CTRL_SPECIFIC_SET_MONITOR_POWER_OFF (0x00000000U)
#define NV0073_CTRL_SPECIFIC_SET_MONITOR_POWER_ON (0x00000001U)
/*
* NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_FRL_CONFIG
*
* This command is used to perform HDMI FRL link training and enable FRL mode for
* the specified displayId. The link configuration will be returned after link
* training success.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed.
* displayID
* This parameter specifies the displayID for the display output resource to
* configure.
* data
* This parameter is an input and output to this command.
* Here are the current defined fields:
* NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE
* This field specifies the desired setting for lane count. A client may
* choose any lane count as long as it does not exceed the capability of
* HDMI FRL sink as indicated in the sink capability field.
* The valid values for this field are:
* NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_NONE
* For 0 lane configuration, link training is shut down (disable FRL).
* NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_3LANES_3G
* For FRL 3-lane configuration and 3 Gbps bandwidth per lane.
* NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_3LANES_6G
* For FRL 3-lane configuration and 6 Gbps bandwidth per lane.
* NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_4LANES_6G
* For FRL 4-lane configuration and 6 Gbps bandwidth per lane.
* NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_4LANES_8G
* For FRL 4-lane configuration and 8 Gbps bandwidth per lane.
* NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_4LANES_10G
* For FRL 4-lane configuration and 10 Gbps bandwidth per lane.
* NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_4LANES_12G
* For FRL 4-lane configuration and 12 Gbps bandwidth per lane.
* On return, the link bandwidth setting is returned which may be
* different from the requested input setting.
* bFakeLt
* This flag as input to this command.
* It indicates the FRL link training is a fake link training or not.
* TRUE if the FRL link training is fake and no real sink device attached.
* bLtSkipped
* The flag returned indicating whether link training is skipped or not.
* TRUE if link training is skipped due to the link config is not changed.
*
* Possible status values returned include:
* NV_OK -
* Affter finishing link tranning, NV_OK status will be returned along with
* the updated link congiration. In case of link training failure, FRL_RATE_NONE
* will be returned with NV_OK.
* NV_ERR_NOT_SUPPORTED -
* If the GPU/sink is not capable for HDMI FRL, NV_ERR_NOT_SUPPORTED status
* will be returned.
* NV_ERR_INVALID_ARGUMENT
* If any argument is valid for this control call, NV_ERR_INVALID_ARGUMENT
* status will be returned.
*/
#define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_FRL_CONFIG (0x73029aU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_HDMI_FRL_LINK_CONFIG_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_SET_HDMI_FRL_LINK_CONFIG_PARAMS_MESSAGE_ID (0x9AU)
typedef struct NV0073_CTRL_SPECIFIC_SET_HDMI_FRL_LINK_CONFIG_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 data;
NvBool bFakeLt;
NvBool bLtSkipped;
} NV0073_CTRL_SPECIFIC_SET_HDMI_FRL_LINK_CONFIG_PARAMS;
#define NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE 2:0
#define NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_NONE (0x00000000U)
#define NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_3LANES_3G (0x00000001U)
#define NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_3LANES_6G (0x00000002U)
#define NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_4LANES_6G (0x00000003U)
#define NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_4LANES_8G (0x00000004U)
#define NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_4LANES_10G (0x00000005U)
#define NV0073_CTRL_HDMI_FRL_DATA_SET_FRL_RATE_4LANES_12G (0x00000006U)
#define NV0073_CTRL_SPECIFIC_MAX_CRC_REGIONS 9U
#define NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS_PARAMS_MESSAGE_ID (0xA0U)
typedef struct NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 regionCrcs[NV0073_CTRL_SPECIFIC_MAX_CRC_REGIONS];
NvU16 reqRegionCrcMask;
} NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS_PARAMS;
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS
*
* This command is used to capture the active viewport region CRCs
*
* [in]subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed. This parameter must specify a value between zero and the
* total number of subdevices within the parent device. This parameter
* should be set to zero for default behavior.
*
* [in]displayId
* This parameter specifies the displayId of panel, for which region CRC to be captured
.*
* [out]regionCrcs
* This field holds the region CRC values to be returned after successful completion of the control command.
*
* [in]reqRegionCrcMask
* This parameter specifies BIT mask value of requested CRC regions.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_GENERIC
* NV_ERR_INVALID_ARGUMENT
*
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS (0x7302a0U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SPECIFIC_GET_REGIONAL_CRCS_PARAMS_MESSAGE_ID" */
/*
* NV0073_CTRL_CMD_SPECIFIC_APPLY_EDID_OVERRIDE_V2
*
* Apply EDID override on specific OD.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed.
* displayId (in)
* ID of panel on which the operation is to be performed.
* bufferSize (in)
* Size of the EDID buffer.
* edidBuffer (in/out)
* The buffer which stores the EDID before and after override.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAMETER
*/
#define NV0073_CTRL_CMD_SPECIFIC_APPLY_EDID_OVERRIDE_V2 (0x7302a1U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_APPLY_EDID_OVERRIDE_V2_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_APPLY_EDID_OVERRIDE_V2_PARAMS_MESSAGE_ID (0xA1U)
typedef struct NV0073_CTRL_SPECIFIC_APPLY_EDID_OVERRIDE_V2_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU32 bufferSize;
NvU8 edidBuffer[NV0073_CTRL_SPECIFIC_GET_EDID_MAX_EDID_BYTES];
} NV0073_CTRL_SPECIFIC_APPLY_EDID_OVERRIDE_V2_PARAMS;
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_GPU_CAPS
*
* This command is used to get the HDMI FRL caps of GPU side.
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed.
* caps
* This parameter specifies the GPU caps.
* MAX_FRL_RATE_SUPPORTED refers to the maximum HDMI 2.1 FRL link rate supported
*
*
* Possible status values returned include:
* NV_OK
* NV_ERR_NOT_SUPPORTED
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_GPU_CAPS (0x7302a2U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_HDMI_GPU_CAPS_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_GET_HDMI_GPU_CAPS_PARAMS_MESSAGE_ID (0xA2U)
typedef struct NV0073_CTRL_SPECIFIC_GET_HDMI_GPU_CAPS_PARAMS {
NvU32 subDeviceInstance;
NvU32 caps;
} NV0073_CTRL_SPECIFIC_GET_HDMI_GPU_CAPS_PARAMS;
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_GPU_CAPS_MAX_FRL_LINK_RATE_SUPPORTED 2:0
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_GPU_CAPS_MAX_FRL_LINK_RATE_SUPPORTED_NONE (0x00000000U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_GPU_CAPS_MAX_FRL_LINK_RATE_SUPPORTED_3LANES_3G (0x00000001U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_GPU_CAPS_MAX_FRL_LINK_RATE_SUPPORTED_3LANES_6G (0x00000002U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_GPU_CAPS_MAX_FRL_LINK_RATE_SUPPORTED_4LANES_6G (0x00000003U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_GPU_CAPS_MAX_FRL_LINK_RATE_SUPPORTED_4LANES_8G (0x00000004U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_GPU_CAPS_MAX_FRL_LINK_RATE_SUPPORTED_4LANES_10G (0x00000005U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_GPU_CAPS_MAX_FRL_LINK_RATE_SUPPORTED_4LANES_12G (0x00000006U)
/*
* NV0073_CTRL_CMD_SPECIFIC_DISPLAY_CHANGE
*
* Notifies the system that a display change is about to begin/end.
* Also performs the necessary synchronizations for the same.
*
* The command takes a NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_PARAMS structure as an
* argument with appropriate subDeviceInstance.
*
* [in]subDeviceInstance
* The sub-device instance
* [in]newDevices
* Bitmask of devices that are planned on being enabled with the
* pending device change. See NV_CFGEX_GET_DEVICES_CONFIGURATION for bit defs.
* [in]properties
* Bitmask of display attributes for new configuration (none used at the moment).
* [in]enable
* Parameter to decide between display change start and end. Can take values
* NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_START or NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_END.
* Possible return values:
* NV_OK
* NV_ERR_INVALID_ARGUMENT
*
*/
#define NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_PARAMS_MESSAGE_ID (0xA4U)
typedef struct NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_PARAMS {
NvU32 subDeviceInstance;
NvU32 newDevices;
NvU32 properties;
NvU32 enable;
} NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_PARAMS;
#define NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_END (0x00000000U)
#define NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_START (0x00000001U)
#define NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_PROPERTIES_SPANNING (0x00000001U)
#define NV0073_CTRL_CMD_SPECIFIC_DISPLAY_CHANGE (0x7302a4U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_PARAMS_MESSAGE_ID" */
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA
*
* This command is used to get the HDMI sink status/caps via Status and Control
* Data Channel (SCDC).
*
* subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed.
* displayId
* This parameter specifies the displayId of HDMI sink.
* offset
* This parameter specifies the SCDC offset which the read operation
* should be used.
* data
* This field specifies the return data from sink for reading the specified
* SCDC offset.
*
*
* Possible status values returned include:
* NV_OK
* NV_ERR_NOT_SUPPORTED
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA (0x7302a6U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_HDMI_SCDC_DATA_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_GET_HDMI_SCDC_DATA_PARAMS_MESSAGE_ID (0xA6U)
typedef struct NV0073_CTRL_SPECIFIC_GET_HDMI_SCDC_DATA_PARAMS {
NvU32 subDeviceInstance;
NvU32 displayId;
NvU8 offset;
NvU8 data;
} NV0073_CTRL_SPECIFIC_GET_HDMI_SCDC_DATA_PARAMS;
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET 7:0
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_NONE (0x00000000U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_SINK_VERSION (0x00000001U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_SOURCE_VERSION (0x00000002U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_UPDATE_FLAGS_0 (0x00000010U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_TMDS_CONFIGURATION (0x00000020U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_SCRAMBLER_STATUS (0x00000021U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CONFIGURATION_0 (0x00000030U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CONFIGURATION_1 (0x00000031U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_SOURCE_TEST_CONFIGURATION (0x00000035U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_STATUS_FLAGS_0 (0x00000040U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_STATUS_FLAGS_1 (0x00000041U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_STATUS_FLAGS_2 (0x00000042U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CED_0 (0x00000050U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CED_1 (0x00000051U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CED_2 (0x00000052U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CED_3 (0x00000053U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CED_4 (0x00000054U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CED_5 (0x00000055U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CED_6 (0x00000056U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CED_7 (0x00000057U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_CED_8 (0x00000058U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_RSED_0 (0x00000059U)
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_SCDC_DATA_OFFSET_RSED_1 (0x0000005AU)
/*
* NV0073_CTRL_CMD_SPECIFIC_IS_DIRECTMODE_DISPLAY
*
* This command is used to query whether the specified monitor should be used
* with directmode.
*
* [in]manufacturerID
* This parameter specifies the 16-bit EDID Manufacturer ID.
* [in]productID
* This parameter specifies the 16-bit EDID Product ID.
* [out]bIsDirectmode;
* This indicates whether the monitor should be used with directmode.
* Possible return values:
* NV_OK
*/
#define NV0073_CTRL_CMD_SPECIFIC_IS_DIRECTMODE_DISPLAY (0x7302a7U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_IS_DIRECTMODE_DISPLAY_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_IS_DIRECTMODE_DISPLAY_PARAMS_MESSAGE_ID (0xA7U)
typedef struct NV0073_CTRL_SPECIFIC_IS_DIRECTMODE_DISPLAY_PARAMS {
NvU16 manufacturerID;
NvU16 productID;
NvBool bIsDirectmode;
} NV0073_CTRL_SPECIFIC_IS_DIRECTMODE_DISPLAY_PARAMS;
/*
* NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION
*
* This command is used to get the HDMI FRL capacity computation result.
*
* [in] cmd
* This parameter specifies the command for the HDMI FRL capacity computation.
* [in] input
* This parameter specifies the input data for the HDMI FRL capacity
* computation.
* [out] result
* This indicates the computation result of HDMI FRL capacity computation.
* [in/out] preCalc
* This indicates the pre-caculation result of HDMI FRL capacity computation.
* [in/out] dsc
* This indicates the DSC parameters of HDMI FRL capacity computation.
* Possible return values:
* NV_OK
*/
#define NV0073_CTRL_CMD_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION (0x7302a8U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_PARAMS_MESSAGE_ID" */
typedef struct NV0073_CTRL_FRL_CAPACITY_COMPUTATION_PARAMS {
NvU32 numLanes;
NvU32 frlBitRateGbps;
NvU32 pclk10KHz;
NvU32 hTotal;
NvU32 hActive;
NvU32 bpc;
NvU32 pixelPacking;
NvU32 audioType;
NvU32 numAudioChannels;
NvU32 audioFreqKHz;
struct {
NvU32 bppTargetx16;
NvU32 hSlices;
NvU32 sliceWidth;
NvU32 dscTotalChunkKBytes;
} compressionInfo;
} NV0073_CTRL_FRL_CAPACITY_COMPUTATION_PARAMS;
typedef struct NV0073_CTRL_FRL_CAPACITY_COMPUTATION_RESULT {
NvU32 frlRate;
NvU32 bppTargetx16;
NvBool engageCompression;
NvBool isAudioSupported;
NvBool dataFlowDisparityReqMet;
NvBool dataFlowMeteringReqMet;
NvBool isVideoTransportSupported;
NvU32 triBytesBorrowed;
NvU32 hcActiveBytes;
NvU32 hcActiveTriBytes;
NvU32 hcBlankTriBytes;
NvU32 tBlankToTTotalX1k;
} NV0073_CTRL_FRL_CAPACITY_COMPUTATION_RESULT;
typedef struct NV0073_CTRL_FRL_PRE_CALC_CONFIG {
NvU32 vic;
NvU32 packing;
NvU32 bpc;
NvU32 frlRate;
NvU32 bppX16;
NvBool bHasPreCalcFRLData;
} NV0073_CTRL_FRL_PRE_CALC_CONFIG;
typedef struct NV0073_CTRL_IS_FRL_DSC_POSSIBLE_PARAMS {
NvU32 maxSliceCount;
NvU32 maxSliceWidth;
NvBool bIsDSCPossible;
} NV0073_CTRL_IS_FRL_DSC_POSSIBLE_PARAMS;
#define NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_PARAMS_MESSAGE_ID (0xA8U)
typedef struct NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_PARAMS {
NvU8 cmd;
NV0073_CTRL_FRL_CAPACITY_COMPUTATION_PARAMS input;
NV0073_CTRL_FRL_CAPACITY_COMPUTATION_RESULT result;
NV0073_CTRL_FRL_PRE_CALC_CONFIG preCalc;
NV0073_CTRL_IS_FRL_DSC_POSSIBLE_PARAMS dsc;
} NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_PARAMS;
#define NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_CMD_NULL (0x00000000U)
#define NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_CMD_UNCOMPRESSED_VIDEO (0x00000001U)
#define NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_CMD_COMPRESSED_VIDEO (0x00000002U)
#define NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_CMD_HAS_PRECAL_FRL_DATA (0x00000003U)
#define NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_CMD_GET_PRECAL_UNCOMPRESSED_FRL_CONFIG (0x00000004U)
#define NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_CMD_GET_PRECAL_COMPRESSED_FRL_CONFIG (0x00000005U)
#define NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_CMD_IS_FRL_DSC_POSSIBLE (0x00000006U)
/*
* NV0073_CTRL_CMD_SPECIFIC_SET_SHARED_GENERIC_PACKET
*
* This command is used to program the display output packets.
* This generic packets can be used for both HDMI and DP.
* HW has added 6 new generic packets for each head because some usecases have
* requirement to send infoframe in particular location (vsync, vblank, loadV).
*
* Note: 1. Client first needs to reserve or acquire a free infoframe index
* using NV0073_CTRL_CMD_SPECIFIC_ACQUIRE_SHARED_GENERIC_PACKET.
* 2. Client needs to update the SDP index for head through control call
* NV0073_CTRL_CMD_SPECIFIC_SET_SHARED_GENERIC_PACKET
* 3. Client needs to Release the infoframe index using control call
* NV0073_CTRL_CMD_SPECIFIC_RELEASE_SHARED_GENERIC_PACKET
*
* [in]subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed.
* This parameter must specify a value between zero and the total number
* of subdevices within the parent device. This parameter should be set
* to zero for default behavior.
* [in]transmitControl
* This parameter controls how the packet is to be sent by setting the
* control bits.
* Possible flags are as follows:
* NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_ENABLE
* Setting this field to _YES will enable this generic infoframe,
* Setting this field to _NO will disable this generic infoframe.
* NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_SINGLE
* Set to _YES will cause new infoframe to be transmitted exactly once.
* Set to _NO will cause new infoframe to be transmitted every frame.
* NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_LOC
* SDP can be sent in 3 different locations:
* VBLANK - new infoframe will be sent at Vblank.
* VSYNC - new infoframe will be sent at Vsync.
* LOADV - new infoframe will be triggered by LOADV, and sent at Vsync
* NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_UPDATE_RFB_OVERRIDE
* _ENABLE: override DB1 bit1 with existence of loadv (for Panel Self Refresh)
* _DISABLE: do not override shared generic infoframe subpacker DB1 bit1.
* NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_SU_COORDINATES_VALID_OVERRIDE
* _ENABLE: override DB1 bit3 with existence of loadv (for Panel Replay)
* _DISABLE: do not override shared generic infoframe subpacker DB1 bit3.
* [in]packetSize
* size of packets in Packet array to send, including header and payload.
* [in]infoframeIndex
* Specifies the target head number for which SDP needs to be updated.
* [in]infoframeIndex
* Specifies the index of infoframe.
* [in]packet
* pPacket points to the packets to send.
* For HDMI 1.1, the maximum allowed bytes is 31.
* The packet array includes the 3 bytes of header + data depending on
* the type of packet. For an infoframe, the header bytes refer to type,
* version and length respectively. This comes as input to this command.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_SET_SHARED_GENERIC_PACKET (0x7302a9) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_SHARED_GENERIC_PACKET_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_SET_SHARED_GENERIC_PACKET_PARAMS_MESSAGE_ID (0xA9U)
typedef struct NV0073_CTRL_SPECIFIC_SET_SHARED_GENERIC_PACKET_PARAMS {
NvU32 subDeviceInstance;
NvU32 transmitControl;
NvU32 packetSize;
NvU32 targetHeadIndex;
NvU32 infoframeIndex;
NvU8 packet[NV0073_CTRL_SET_OD_MAX_PACKET_SIZE];
} NV0073_CTRL_SPECIFIC_SET_SHARED_GENERIC_PACKET_PARAMS;
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_ENABLE 0:0
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_ENABLE_NO (0x0000000)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_ENABLE_YES (0x0000001)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_SINGLE 1:1
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_SINGLE_NO (0x0000000)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_SINGLE_YES (0x0000001)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_LOC 5:2
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_LOC_VBLANK (0x0000000)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_LOC_VSYNC (0x0000001)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_LOC_LOADV (0x0000002)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_STATE_OVERRIDE 6:6
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_STATE_OVERRIDE_DISABLE (0x0000000)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_STATE_OVERRIDE_ENABLE (0x0000001)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_UPDATE_RFB_OVERRIDE 7:7
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_UPDATE_RFB_OVERRIDE_DISABLE (0x0000000)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_UPDATE_RFB_OVERRIDE_ENABLE (0x0000001)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_SU_COORDINATES_VALID_OVERRIDE 8:8
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_SU_COORDINATES_VALID_OVERRIDE_DISABLE (0x0000000)
#define NV0073_CTRL_SPECIFIC_SHARED_GENERIC_CTRL_VSC_SDP_SU_COORDINATES_VALID_OVERRIDE_ENABLE (0x0000001)
/*
* NV0073_CTRL_CMD_SPECIFIC_ACQUIRE_SHARED_GENERIC_PACKET
*
* This command is used to reserve the infoframe for head and RM would assign
* free infoframe index and return the index of infoframe. Later client needs
* to call control call NV0073_CTRL_CMD_SPECIFIC_RELEASE_SHARED_GENERIC_PACKET
* to release the index.
*
* [in]subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed.
* This parameter must specify a value between zero and the total number
* of subdevices within the parent device. This parameter should be set
* to zero for default behavior.
* [in]targetHeadIndex
* target Head for which SDP needs to be sent
* [out]infoframeIndex
* return Infoframe Index for head.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
* NV_ERR_INSUFFIENT_RESOURCES
*/
#define NV0073_CTRL_CMD_SPECIFIC_ACQUIRE_SHARED_GENERIC_PACKET (0x7302aa) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_ACQUIRE_SHARED_GENERIC_PACKET_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_ACQUIRE_SHARED_GENERIC_PACKET_PARAMS_MESSAGE_ID (0xAAU)
typedef struct NV0073_CTRL_SPECIFIC_ACQUIRE_SHARED_GENERIC_PACKET_PARAMS {
NvU32 subDeviceInstance;
NvU32 targetHeadIndex;
NvU32 infoframeIndex;
} NV0073_CTRL_SPECIFIC_ACQUIRE_SHARED_GENERIC_PACKET_PARAMS;
/*
* NV0073_CTRL_CMD_SPECIFIC_RELEASE_SHARED_GENERIC_PACKET
*
* This command is used to release the infoframe index which was acquired by
* client.
*
* [in]subDeviceInstance
* This parameter specifies the subdevice instance within the
* NV04_DISPLAY_COMMON parent device to which the operation should be
* directed.
* This parameter must specify a value between zero and the total number
* of subdevices within the parent device. This parameter should be set
* to zero for default behavior.
* [in]targetHeadIndex
* Specifies the target head number for which SDP needs to be updated.
* [in]infoframeIndex
* Infoframe index for the target head
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_PARAM_STRUCT
* NV_ERR_INVALID_ARGUMENT
*/
#define NV0073_CTRL_CMD_SPECIFIC_RELEASE_SHARED_GENERIC_PACKET (0x7302ab) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_RELEASE_SHARED_GENERIC_PACKET_PARAMS_MESSAGE_ID" */
#define NV0073_CTRL_SPECIFIC_RELEASE_SHARED_GENERIC_PACKET_PARAMS_MESSAGE_ID (0xABU)
typedef struct NV0073_CTRL_SPECIFIC_RELEASE_SHARED_GENERIC_PACKET_PARAMS {
NvU32 subDeviceInstance;
NvU32 targetHeadIndex;
NvU32 infoframeIndex;
} NV0073_CTRL_SPECIFIC_RELEASE_SHARED_GENERIC_PACKET_PARAMS;
/* _ctrl0073specific_h_ */