mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-02-09 17:50:00 +00:00
550.40.07
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -68,4 +68,52 @@ typedef struct NV0073_CTRL_CMD_DSC_CAP_PARAMS {
|
||||
NvU32 maxNumHztSlices;
|
||||
NvU32 lineBufferBitDepth;
|
||||
} NV0073_CTRL_CMD_DSC_CAP_PARAMS;
|
||||
|
||||
/*
|
||||
* NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD
|
||||
*
|
||||
* 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 parameter is an input to this command.
|
||||
* Here are the current defined fields:
|
||||
* NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD_CMD_POWER
|
||||
* Set to specify what operation to run.
|
||||
* NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD_CMD_POWER_UP
|
||||
* Request to power up pad.
|
||||
* NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD_CMD_POWER_DOWN
|
||||
* Request to power down the pad.
|
||||
* linkBw
|
||||
* This parameter is used to pass in the link bandwidth required to run the
|
||||
* power up sequence. Refer enum DM_FRL_LINK_RATE_GBPS for valid values.
|
||||
* laneCount
|
||||
* This parameter is used to pass the lanecount.
|
||||
* sorIndex
|
||||
* This parameter is used to pass the SOR index.
|
||||
* padlinkIndex
|
||||
* This parameter is used to pass the padlink index for primary link.
|
||||
* Please refer enum DFPPADLINK for valid index values for Link A~F.
|
||||
*/
|
||||
|
||||
#define NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD (0x730502U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_COMMON_INTERFACE_ID << 8) | NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD_PARAMS_MESSAGE_ID" */
|
||||
|
||||
#define NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD_PARAMS_MESSAGE_ID (0x2U)
|
||||
|
||||
typedef struct NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD_PARAMS {
|
||||
NvU32 subDeviceInstance;
|
||||
NvU32 cmd;
|
||||
NvU32 linkBw;
|
||||
NvU32 laneCount;
|
||||
NvU32 sorIndex;
|
||||
NvU32 padlinkIndex;
|
||||
} NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD_PARAMS;
|
||||
|
||||
#define NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD_CMD_POWER 0:0
|
||||
#define NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD_CMD_POWER_UP (0x00000000U)
|
||||
#define NV0073_CTRL_CMD_FRL_CONFIG_MACRO_PAD_CMD_POWER_DOWN (0x00000001U)
|
||||
|
||||
/* _ctrl0073common_h_ */
|
||||
|
||||
@@ -946,7 +946,6 @@ typedef struct NV0073_CTRL_CMD_DFP_RUN_PRE_DISP_MUX_OPERATIONS_PARAMS {
|
||||
#define NV0073_CTRL_DFP_DISP_MUX_FLAGS_SKIP_BACKLIGHT_ENABLE_NO 0x00000000U
|
||||
#define NV0073_CTRL_DFP_DISP_MUX_FLAGS_SKIP_BACKLIGHT_ENABLE_YES 0x00000001U
|
||||
|
||||
|
||||
#define NV0073_CTRL_DISP_MUX_BACKLIGHT_BRIGHTNESS_MIN 0U
|
||||
#define NV0073_CTRL_DISP_MUX_BACKLIGHT_BRIGHTNESS_MAX 100U
|
||||
|
||||
@@ -1288,4 +1287,33 @@ typedef struct NV0073_CTRL_DFP_GET_FIXED_MODE_TIMING_PARAMS {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* NV0073_CTRL_CMD_DFP_EDP_DRIVER_UNLOAD
|
||||
*
|
||||
* This command is called when we want to inform RM of driver
|
||||
* unload.
|
||||
*
|
||||
* subDeviceInstance (in)
|
||||
* This parameter specifies the subdevice instance within the
|
||||
* NV04_DISPLAY_COMMON parent device to which the operation
|
||||
* should be directed.
|
||||
* displayId (in)
|
||||
* This parameter inputs the displayId of the active display. A value
|
||||
* of zero indicates no display is active.
|
||||
*
|
||||
* Possible status values returned are:
|
||||
* NV_OK
|
||||
* NV_ERR_INVALID_PARAM_STRUCT
|
||||
* NV_ERR_INVALID_ARGUMENT
|
||||
* NV_ERR_NOT_SUPPORTED
|
||||
*/
|
||||
#define NV0073_CTRL_CMD_DFP_EDP_DRIVER_UNLOAD (0x731174U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DFP_INTERFACE_ID << 8) | NV0073_CTRL_DFP_EDP_DRIVER_UNLOAD_PARAMS_MESSAGE_ID" */
|
||||
|
||||
#define NV0073_CTRL_DFP_EDP_DRIVER_UNLOAD_PARAMS_MESSAGE_ID (0x74U)
|
||||
|
||||
typedef struct NV0073_CTRL_DFP_EDP_DRIVER_UNLOAD_PARAMS {
|
||||
NvU32 subDeviceInstance;
|
||||
NvU32 displayId;
|
||||
} NV0073_CTRL_DFP_EDP_DRIVER_UNLOAD_PARAMS;
|
||||
|
||||
/* _ctrl0073dfp_h_ */
|
||||
|
||||
@@ -771,41 +771,51 @@ typedef NV0073_CTRL_DP_LANE_DATA_PARAMS NV0073_CTRL_DP_SET_LANE_DATA_PARAMS;
|
||||
/*
|
||||
* NV0073_CTRL_DP_CSTM
|
||||
*
|
||||
* This structure specifies the 80 bit DP CSTM Test Pattern data
|
||||
* The fields of this structure are to be specified as follows:
|
||||
* lower takes bits 31:0
|
||||
* middle takes bits 63:32
|
||||
* upper takes bits 79:64
|
||||
*
|
||||
* This structure specifies -
|
||||
* A) 80 bit DP CSTM Test Pattern data for DP1.x (HBR2 + 8b/10b channel coding)
|
||||
* The fields of this structure are to be specified as follows:
|
||||
* field_31_0 takes bits 31:0
|
||||
* field_63_32 takes bits 63:32
|
||||
* field_95_64 takes bits 79:64
|
||||
* B) 264 bit DP CSTM Test Pattern data for DP2.x (128b/132b channel coding)
|
||||
* The fields of this structure are to be specified as follows:
|
||||
* field_31_0 contains bits 31:0
|
||||
* field_63_32 contains bits 63:32
|
||||
* field_95_64 contains bits 95:64
|
||||
* field_127_95 contains bits 127:95
|
||||
* field_159_128 contains bits 159:128
|
||||
* field_191_160 contains bits 191:160
|
||||
* field_223_192 contains bits 223:192
|
||||
* field_255_224 contains bits 255:224
|
||||
* field_263_256 contains bits 263:256
|
||||
*/
|
||||
typedef struct NV0073_CTRL_DP_CSTM {
|
||||
NvU32 lower;
|
||||
NvU32 middle;
|
||||
NvU32 upper;
|
||||
NvU32 field_31_0;
|
||||
NvU32 field_63_32;
|
||||
NvU32 field_95_64;
|
||||
NvU32 field_127_95;
|
||||
NvU32 field_159_128;
|
||||
NvU32 field_191_160;
|
||||
NvU32 field_223_192;
|
||||
NvU32 field_255_224;
|
||||
NvU32 field_263_256;
|
||||
} NV0073_CTRL_DP_CSTM;
|
||||
|
||||
#define NV0073_CTRL_DP_SET_TESTPATTERN_PARAMS_CSTM2 15:0
|
||||
#define NV0073_CTRL_DP_SET_TESTPATTERN_PARAMS_CSTM8 7:0
|
||||
|
||||
|
||||
/*
|
||||
* NV0073_CTRL_DP_TESTPATTERN
|
||||
*
|
||||
* This structure specifies the possible test patterns available in
|
||||
* display port. The field testPattern can be one of the following
|
||||
* values.
|
||||
* NV0073_CTRL_DP_SET_TESTPATTERN_DATA_NONE
|
||||
* No test pattern on the main link
|
||||
* NV0073_CTRL_DP_SET_TESTPATTERN_DATA_D10_2
|
||||
* D10.2 pattern on the main link
|
||||
* NV0073_CTRL_DP_SET_TESTPATTERN_DATA_SERMP
|
||||
* SERMP pattern on main link
|
||||
* NV0073_CTRL_DP_SET_TESTPATTERN_DATA_PRBS_7
|
||||
* PRBS7 pattern on the main link
|
||||
*
|
||||
* This structure specifies the possible test patterns available in display port.
|
||||
*/
|
||||
|
||||
typedef struct NV0073_CTRL_DP_TESTPATTERN {
|
||||
NvU32 testPattern;
|
||||
} NV0073_CTRL_DP_TESTPATTERN;
|
||||
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA 2:0
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA 4:0
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_NONE (0x00000000U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_D10_2 (0x00000001U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_SERMP (0x00000002U)
|
||||
@@ -813,6 +823,20 @@ typedef struct NV0073_CTRL_DP_TESTPATTERN {
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_CSTM (0x00000004U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_HBR2COMPLIANCE (0x00000005U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_CP2520PAT3 (0x00000006U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_TRAINING1 (0x00000007U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_TRAINING2 (0x00000008U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_TRAINING3 (0x00000009U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_TRAINING4 (0x0000000AU)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_CP2520PAT1 (0x0000000BU)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_128B132B_TPS1 (0x0000000CU)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_128B132B_TPS2 (0x0000000DU)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_PRBS_9 (0x0000000EU)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_PRBS_11 (0x0000000FU)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_PRBS_15 (0x00000010U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_PRBS_23 (0x00000011U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_PRBS_31 (0x00000012U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_SQNUM (0x00000013U)
|
||||
#define NV0073_CTRL_DP_TESTPATTERN_DATA_CSTM_264 (0x00000014U)
|
||||
|
||||
/*
|
||||
* NV0073_CTRL_CMD_DP_SET_TESTPATTERN
|
||||
@@ -880,10 +904,6 @@ typedef struct NV0073_CTRL_DP_SET_TESTPATTERN_PARAMS {
|
||||
|
||||
#define NV0073_CTRL_CMD_DP_SET_TESTPATTERN (0x731347U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_DP_SET_TESTPATTERN_PARAMS_MESSAGE_ID" */
|
||||
|
||||
#define NV0073_CTRL_DP_SET_TESTPATTERN_PARAMS_CSTM0 31:0
|
||||
#define NV0073_CTRL_DP_SET_TESTPATTERN_PARAMS_CSTM1 63:32
|
||||
#define NV0073_CTRL_DP_SET_TESTPATTERN_PARAMS_CSTM2 15:0
|
||||
|
||||
/*
|
||||
* NV0073_CTRL_CMD_GET_DP_TESTPATTERN
|
||||
*
|
||||
@@ -2816,244 +2836,5 @@ typedef struct NV0073_CTRL_DP_EXECUTE_OVERDRIVE_POLICY_PARAMS {
|
||||
NvU16 prodId;
|
||||
} NV0073_CTRL_DP_EXECUTE_OVERDRIVE_POLICY_PARAMS;
|
||||
|
||||
/*
|
||||
* NV0073_CTRL_CMD_DP2X_LINK_TRAINING_CTRL
|
||||
*
|
||||
* This command is used to trigger link training on DP2.x device with 128b132b channel encoding.
|
||||
*
|
||||
* 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 dfp
|
||||
* caps should be returned. The display ID must a dfp display.
|
||||
* If more than one displayId bit is set or the displayId is not a dfp,
|
||||
* this call will return NV_ERR_INVALID_ARGUMENT.
|
||||
*
|
||||
* cmd
|
||||
* This parameter is an input to this command.
|
||||
* Here are the current defined fields:
|
||||
* 1.Ask RM to enter specific stage
|
||||
* NV0073_CTRL_DP2X_CMD_LINK_TRAINING_SETTING
|
||||
* NV0073_CTRL_DP2X_CMD_LINK_TRAINING_SET_CHNL_EQ
|
||||
* _CDS
|
||||
* _SET_* only valid if _SETTING_TRUE
|
||||
*
|
||||
* 2.Ask RM to check the completion of specific stage
|
||||
* NV0073_CTRL_DP2X_CMD_LINK_TRAINING_POLLING
|
||||
* NV0073_CTRL_DP2X_CMD_LINK_TRAINING_POLL_CHNL_EQ_DONE
|
||||
* _CHNL_EQ_INTERLANE_ALIGN
|
||||
* _CDS
|
||||
* _POLL_* only valid if _POLLING_TRUE
|
||||
*
|
||||
* _SETTING_TRUE and _POLLING_TRUE are mutual exclusive.
|
||||
* RM will return NV_ERR_INVALID_ARGUMENT if both bit are set.
|
||||
*
|
||||
* 3.Downspread configuration
|
||||
* NV0073_CTRL_DP2X_CMD_FORCED_DOWNSPREAD
|
||||
* Specifies whether RM should be forced to enable or disable the DP
|
||||
* Downspread setting. This can be used along with the Fake link
|
||||
* training option so that we can configure the GPU to enable/disable
|
||||
* spread when a real display is not connected.
|
||||
*
|
||||
* NV0073_CTRL_DP2X_CMD_FORCED_DOWNSPREAD_NO (default behavior)
|
||||
* RM will enable Downspread when the display supports it.
|
||||
* NV0073_CTRL_DP2X_CMD_FORCED_DOWNSPREAD_YES
|
||||
* RM will enable/disable Downspread according to _SET_DOWNSPREAD field.
|
||||
*
|
||||
* NV0073_CTRL_DP2X_CMD_SET_DOWNSPREAD
|
||||
* Specifies if RM should enable or disable downspread.
|
||||
* Only valid when _FORCED_DOWNSPREAD is set to _YES
|
||||
*
|
||||
* NV0073_CTRL_DP2X_CMD_SET_DOWNSPREAD_ENABLE
|
||||
* RM will enable Downspread even if the display does not support it.
|
||||
* NV0073_CTRL_DP2X_CMD_SET_DOWNSPREAD_DISABLE
|
||||
* RM will not enable Downspread even if the display does support it.
|
||||
*
|
||||
* 4.NV0073_CTRL_DP2X_CMD_FAKE_LINK_TRAINING
|
||||
* This field specifies if fake link training is to be done. This will
|
||||
* program enough of the hardware to avoid any hardware hangs and
|
||||
* depending upon option chosen by the client, OR will be enabled for
|
||||
* transmisssion.
|
||||
*
|
||||
* NV0073_CTRL_DP2X_CMD_FAKE_LINK_TRAINING_NO
|
||||
* No Fake LT will be performed
|
||||
* NV0073_CTRL_DP2X_CMD_FAKE_LINK_TRAINING_DONOT_TOGGLE_TRANSMISSION
|
||||
* SOR will be not powered up during Fake LT
|
||||
* NV0073_CTRL_DP2X_CMD_FAKE_LINK_TRAINING_TOGGLE_TRANSMISSION_ON
|
||||
* SOR will be powered up during Fake LT
|
||||
*
|
||||
* 5.NV0073_CTRL_DP2X_CMD_FALLBACK_CONFIG
|
||||
*
|
||||
* 6.NV0073_CTRL_DP2X_CMD_SKIP_HW_PROGRAMMING
|
||||
* Specifies whether RM should skip HW training of the link.
|
||||
* If this is the case then RM only updates its SW state without actually
|
||||
* touching any HW registers. Clients should use this ONLY if it has determined -
|
||||
* a. link is trained and not lost
|
||||
* b. desired link config is same as current trained link config
|
||||
* c. link is not in D3 (should be in D0)
|
||||
*
|
||||
* NV0073_CTRL_DP2X_CMD_SKIP_HW_PROGRAMMING_NO
|
||||
* RM doesn't skip HW LT as the current Link Config is not the same as the
|
||||
* requested Link Config.
|
||||
* NV0073_CTRL_DP2X_CMD_SKIP_HW_PROGRAMMING_YES
|
||||
* RM skips HW LT and only updates its SW state as client has determined that
|
||||
* the current state of the link and the requested Link Config is the same.
|
||||
* data
|
||||
* This parameter is an input and output to this command.
|
||||
* Here are the current defined fields:
|
||||
* NV0073_CTRL_DP2X_DATA_LANE_COUNT
|
||||
* Valid values: 0, 1, 2, 4
|
||||
* NV0073_CTRL_DP2X_DATA_LINK_BW
|
||||
* Valid values: all standard link rates defined in DP2.x and ILRs defined in eDP spec.
|
||||
*
|
||||
* pollingInfo
|
||||
* This parameter is an output to this command.
|
||||
* Here are the current defined fields:
|
||||
*
|
||||
* NV0073_CTRL_DP2X_POLLING_INFO_CHNL_EQ_INTERVAL
|
||||
* For Channel equalization, the polling interval is defined in DPCD 0x2216.
|
||||
* RM report to DPLib when _SET_STAGE is set to _CHNL_EQ.
|
||||
* (For CDS stage, the polling interval is fixed at 3ms.)
|
||||
*
|
||||
* NV0073_CTRL_DP2X_POLLING_INFO_RESULT
|
||||
* _DONE: if the specified stage is done.
|
||||
* _PENDING: if the specified stage is still pending.
|
||||
*
|
||||
* err
|
||||
* This parameter specifies provides info regarding the outcome
|
||||
* of this calling control call. If zero, no errors were found.
|
||||
* Otherwise, this parameter will specify the error detected.
|
||||
* The valid parameter is broken down as follows:
|
||||
* NV0073_CTRL_DP2X_ERR_CHANNEL_EQ_DONE
|
||||
* If set to _ERR, link training failed at channel equalization phase.
|
||||
* NV0073_CTRL_DP2X_ERR_CDS_DONE
|
||||
* If set to _ERR, link training failed at CDS phase.
|
||||
* NV0073_CTRL_DP2X_ERR_TIMEOUT
|
||||
* If set to _ERR, link training failed because of timeout.
|
||||
* NV0073_CTRL_DP2X_ERR_LT_FAILED
|
||||
* If set to _ERR, link training failed.
|
||||
* NV0073_CTRL_DP2X_ERR_INVALID_PARAMETER
|
||||
* If set to _ERR, link configuration or displayID is invalid.
|
||||
* NV0073_CTRL_DP2X_ERR_SET_LANE_COUNT
|
||||
* If set to _ERR, link training failed when setting lane count.
|
||||
* NV0073_CTRL_DP2X_ERR_SET_LINK_BW
|
||||
* If set to _ERR, link training failed when setting link rate.
|
||||
* NV0073_CTRL_DP2X_ERR_ENABLE_FEC
|
||||
* If set to _ERR, link training failed when enabling FEC.
|
||||
* NV0073_CTRL_DP2X_ERR_CONFIG_LTTPR
|
||||
* If set to _ERR, link training failed when setting LTTPR.
|
||||
* NV0073_CTRL_DP2X_ERR_PRE_LT
|
||||
* If set to _ERR, link training failed before link training start.
|
||||
*
|
||||
* Possible status values returned are:
|
||||
* NV_OK
|
||||
* NV_ERR_INVALID_ARGUMENT
|
||||
* NVOS_STATUS_ERROR
|
||||
*/
|
||||
|
||||
#define NV0073_CTRL_CMD_DP2X_LINK_TRAINING_CTRL (0x731383U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_CMD_DP2X_LINK_TRAINING_CTRL_PARAMS_MESSAGE_ID" */
|
||||
|
||||
#define NV0073_CTRL_CMD_DP2X_LINK_TRAINING_CTRL_PARAMS_MESSAGE_ID (0x83U)
|
||||
|
||||
typedef struct NV0073_CTRL_CMD_DP2X_LINK_TRAINING_CTRL_PARAMS {
|
||||
NvU32 subDeviceInstance;
|
||||
NvU32 displayId;
|
||||
NvU32 cmd;
|
||||
NvU32 data;
|
||||
NvU32 pollingInfo;
|
||||
NvU32 err;
|
||||
} NV0073_CTRL_CMD_DP2X_LINK_TRAINING_CTRL_PARAMS;
|
||||
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_SETTING 0:0
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_SETTING_FALSE (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_SETTING_TRUE (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_SET 1:1
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_SET_CHNL_EQ (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_SET_CDS (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_POLLING 8:8
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_POLLING_FALSE (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_POLLING_TRUE (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_POLL 10:9
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_POLL_CHNL_EQ_DONE (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_POLL_CHNL_EQ_INTERLANE_ALIGN (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_CMD_LINK_TRAINING_POLL_CDS (0x00000002U)
|
||||
|
||||
// Flags for link training.
|
||||
#define NV0073_CTRL_DP2X_CMD_FORCED_DOWNSPREAD 16:16
|
||||
#define NV0073_CTRL_DP2X_CMD_FORCED_DOWNSPREAD_NO (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_CMD_FORCED_DOWNSPREAD_YES (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_CMD_SET_DOWNSPREAD 17:17
|
||||
#define NV0073_CTRL_DP2X_CMD_SET_DOWNSPREAD_DISABLE (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_CMD_SET_DOWNSPREAD_ENABLE (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_CMD_SKIP_HW_PROGRAMMING 18:18
|
||||
#define NV0073_CTRL_DP2X_CMD_SKIP_HW_PROGRAMMING_NO (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_CMD_SKIP_HW_PROGRAMMING_YES (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_CMD_FAKE_LINK_TRAINING 20:19
|
||||
#define NV0073_CTRL_DP2X_CMD_FAKE_LINK_TRAINING_NO (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_CMD_FAKE_LINK_TRAINING_DONOT_TOGGLE_TRANSMISSION (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_CMD_FAKE_LINK_TRAINING_TOGGLE_TRANSMISSION_ON (0x00000002U)
|
||||
#define NV0073_CTRL_DP2X_CMD_FALLBACK_CONFIG 21:21
|
||||
#define NV0073_CTRL_DP2X_CMD_FALLBACK_CONFIG_FALSE (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_CMD_FALLBACK_CONFIG_TRUE (0x00000001U)
|
||||
|
||||
// Basic Data for Link training: Lane count and bandwidth.
|
||||
#define NV0073_CTRL_DP2X_DATA_LANE_COUNT 3:0
|
||||
#define NV0073_CTRL_DP2X_DATA_LANE_COUNT_0 (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LANE_COUNT_1 (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LANE_COUNT_2 (0x00000002U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LANE_COUNT_4 (0x00000004U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW 7:4
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_1_62GBPS (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_2_16GBPS (0x00000002U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_2_43GBPS (0x00000003U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_2_70GBPS (0x00000004U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_3_24GBPS (0x00000005U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_4_32GBPS (0x00000006U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_5_40GBPS (0x00000007U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_6_75GBPS (0x00000008U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_8_10GBPS (0x00000009U)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_UHBR10_0 (0x0000000AU)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_UHBR13_5 (0x0000000BU)
|
||||
#define NV0073_CTRL_DP2X_DATA_LINK_BW_UHBR20_0 (0x0000000CU)
|
||||
|
||||
#define NV0073_CTRL_DP2X_ERR_CHANNEL_EQ 0:0
|
||||
#define NV0073_CTRL_DP2X_ERR_CHANNEL_EQ_DONE (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_ERR_CHANNEL_EQ_FAILED (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_ERR_CDS 1:1
|
||||
#define NV0073_CTRL_DP2X_ERR_CDS_DONE (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_ERR_CDS_FAILED (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_ERR_TIMEOUT 2:2
|
||||
#define NV0073_CTRL_DP2X_ERR_TIMEOUT_NO (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_ERR_TIMEOUT_YES (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_ERR_LT_FAILED 3:3
|
||||
#define NV0073_CTRL_DP2X_ERR_LT_FAILED_NO (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_ERR_LT_FAILED_YES (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_ERR_INVALID_PARAMETER 4:4
|
||||
#define NV0073_CTRL_DP2X_ERR_INVALID_PARAMETER_NOERR (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_ERR_INVALID_PARAMETER_ERR (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_ERR_SET_LANE_COUNT 5:5
|
||||
#define NV0073_CTRL_DP2X_ERR_SET_LANE_COUNT_NOERR (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_ERR_SET_LANE_COUNT_ERR (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_ERR_SET_LINK_BW 6:6
|
||||
#define NV0073_CTRL_DP2X_ERR_SET_LINK_BW_NOERR (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_ERR_SET_LINK_BW_ERR (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_ERR_ENABLE_FEC 7:7
|
||||
#define NV0073_CTRL_DP2X_ERR_ENABLE_FEC_NOERR (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_ERR_ENABLE_FEC_ERR (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_ERR_CONFIG_LTTPR 8:8
|
||||
#define NV0073_CTRL_DP2X_ERR_CONFIG_LTTPR_NOERR (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_ERR_CONFIG_LTTPR_ERR (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_ERR_PRE_LT 9:9
|
||||
#define NV0073_CTRL_DP2X_ERR_PRE_LT_NOERR (0x00000000U)
|
||||
#define NV0073_CTRL_DP2X_ERR_PRE_LT_ERR (0x00000001U)
|
||||
|
||||
#define NV0073_CTRL_DP2X_POLLING_INFO_CHNL_EQ_INTERVAL 7:0
|
||||
#define NV0073_CTRL_DP2X_POLLING_INFO_RESULT 31:31
|
||||
#define NV0073_CTRL_DP2X_POLLING_INFO_RESULT_PENDING (0x00000001U)
|
||||
#define NV0073_CTRL_DP2X_POLLING_INFO_RESULT_DONE (0x00000000U)
|
||||
/* _ctrl0073dp_h_ */
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
#include "ctrl/ctrl0073/ctrl0073base.h"
|
||||
#include "ctrl/ctrl0073/ctrl0073system.h"
|
||||
#include "ctrl/ctrl0073/ctrl0073dfp.h"
|
||||
|
||||
#define NV0073_CTRL_CMD_INTERNAL_GET_HOTPLUG_UNPLUG_STATE (0x730401U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_INTERNAL_INTERFACE_ID << 8) | NV0073_CTRL_INTERNAL_GET_HOTPLUG_UNPLUG_STATE_PARAMS_MESSAGE_ID" */
|
||||
|
||||
@@ -43,4 +44,22 @@ typedef NV0073_CTRL_SYSTEM_GET_HOTPLUG_UNPLUG_STATE_PARAMS NV0073_CTRL_INTERNAL_
|
||||
|
||||
typedef NV0073_CTRL_CMD_SYSTEM_VRR_SET_RGLINE_ACTIVE_PARAMS NV0073_CTRL_CMD_INTERNAL_VRR_SET_RGLINE_ACTIVE_PARAMS;
|
||||
|
||||
#define NV0073_CTRL_CMD_INTERNAL_DFP_SWITCH_DISP_MUX (0x730460U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_INTERNAL_INTERFACE_ID << 8) | NV0073_CTRL_CMD_DFP_SWITCH_DISP_MUX_PARAMS_MESSAGE_ID" */
|
||||
|
||||
#define NV0073_CTRL_CMD_INTERNAL_DFP_SWITCH_DISP_MUX_PARAMS_MESSAGE_ID (0x3U)
|
||||
|
||||
typedef NV0073_CTRL_CMD_DFP_SWITCH_DISP_MUX_PARAMS NV0073_CTRL_CMD_INTERNAL_DFP_SWITCH_DISP_MUX_PARAMS;
|
||||
|
||||
#define NV0073_CTRL_CMD_INTERNAL_DFP_GET_DISP_MUX_STATUS (0x730404U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_INTERNAL_INTERFACE_ID << 8) | NV0073_CTRL_CMD_INTERNAL_DFP_GET_DISP_MUX_STATUS_PARAMS_MESSAGE_ID" */
|
||||
|
||||
#define NV0073_CTRL_CMD_INTERNAL_DFP_GET_DISP_MUX_STATUS_PARAMS_MESSAGE_ID (0x4U)
|
||||
|
||||
typedef NV0073_CTRL_CMD_DFP_GET_DISP_MUX_STATUS_PARAMS NV0073_CTRL_CMD_INTERNAL_DFP_GET_DISP_MUX_STATUS_PARAMS;
|
||||
|
||||
#define NV0073_CTRL_CMD_INTERNAL_VBLANK_SEM_CONTROL (0x730405U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_INTERNAL_INTERFACE_ID << 8) | NV0073_CTRL_CMD_INTERNAL_VBLANK_SEM_CONTROL_PARAMS_MESSAGE_ID" */
|
||||
|
||||
#define NV0073_CTRL_CMD_INTERNAL_VBLANK_SEM_CONTROL_PARAMS_MESSAGE_ID (0x5U)
|
||||
|
||||
typedef NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_PARAMS NV0073_CTRL_CMD_INTERNAL_VBLANK_SEM_CONTROL_PARAMS;
|
||||
|
||||
/* ctrl0073internal_h */
|
||||
|
||||
@@ -126,8 +126,8 @@ typedef struct NV0073_CTRL_SPECIFIC_GET_TYPE_PARAMS {
|
||||
* 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
|
||||
* 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
|
||||
@@ -789,10 +789,10 @@ typedef struct NV0073_CTRL_SPECIFIC_GET_ALL_HEAD_MASK_PARAMS {
|
||||
* 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.
|
||||
* 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
|
||||
* 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.
|
||||
@@ -1346,7 +1346,7 @@ typedef struct NV0073_CTRL_SPECIFIC_SET_MONITOR_POWER_PARAMS {
|
||||
* 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
|
||||
* 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.
|
||||
@@ -1406,7 +1406,7 @@ typedef struct 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
|
||||
@@ -1502,13 +1502,13 @@ typedef struct NV0073_CTRL_SPECIFIC_GET_HDMI_GPU_CAPS_PARAMS {
|
||||
|
||||
/*
|
||||
* 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
|
||||
@@ -1555,7 +1555,7 @@ typedef struct NV0073_CTRL_SPECIFIC_DISPLAY_CHANGE_PARAMS {
|
||||
* NV04_DISPLAY_COMMON parent device to which the operation should be
|
||||
* directed.
|
||||
* displayId
|
||||
* This parameter specifies the displayId of HDMI sink.
|
||||
* This parameter specifies the displayId of HDMI sink.
|
||||
* offset
|
||||
* This parameter specifies the SCDC offset which the read operation
|
||||
* should be used.
|
||||
@@ -1639,7 +1639,7 @@ typedef struct NV0073_CTRL_SPECIFIC_IS_DIRECTMODE_DISPLAY_PARAMS {
|
||||
* 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.
|
||||
* computation.
|
||||
* [out] result
|
||||
* This indicates the computation result of HDMI FRL capacity computation.
|
||||
* [in/out] preCalc
|
||||
@@ -1727,7 +1727,7 @@ typedef struct NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_PARAMS {
|
||||
* 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
|
||||
@@ -1753,7 +1753,7 @@ typedef struct NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_PARAMS {
|
||||
* 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:
|
||||
* 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
|
||||
@@ -1765,9 +1765,9 @@ typedef struct NV0073_CTRL_SPECIFIC_GET_HDMI_FRL_CAPACITY_COMPUTATION_PARAMS {
|
||||
* _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
|
||||
* [in]infoframeIndex
|
||||
* Specifies the target head number for which SDP needs to be updated.
|
||||
* [in]infoframeIndex
|
||||
* [in]infoframeIndex
|
||||
* Specifies the index of infoframe.
|
||||
* [in]packet
|
||||
* pPacket points to the packets to send.
|
||||
@@ -1823,9 +1823,9 @@ typedef struct NV0073_CTRL_SPECIFIC_SET_SHARED_GENERIC_PACKET_PARAMS {
|
||||
/*
|
||||
* NV0073_CTRL_CMD_SPECIFIC_ACQUIRE_SHARED_GENERIC_PACKET
|
||||
*
|
||||
* This command is used to reserve the infoframe for head and RM would assign
|
||||
* 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 call control call NV0073_CTRL_CMD_SPECIFIC_RELEASE_SHARED_GENERIC_PACKET
|
||||
* to release the index.
|
||||
*
|
||||
* [in]subDeviceInstance
|
||||
@@ -1871,7 +1871,7 @@ typedef struct NV0073_CTRL_SPECIFIC_ACQUIRE_SHARED_GENERIC_PACKET_PARAMS {
|
||||
* 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.
|
||||
* 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:
|
||||
@@ -1994,4 +1994,96 @@ typedef struct NV0073_CTRL_SPECIFIC_DEFAULT_ADAPTIVESYNC_DISPLAY_PARAMS {
|
||||
NvBool bDefaultAdaptivesync;
|
||||
} NV0073_CTRL_SPECIFIC_DEFAULT_ADAPTIVESYNC_DISPLAY_PARAMS;
|
||||
|
||||
/*
|
||||
* NV0073_CTRL_CMD_SPECIFIC_GET_DISPLAY_BRIGHTNESS_LTM
|
||||
* NV0073_CTRL_CMD_SPECIFIC_SET_DISPLAY_BRIGHTNESS_LTM
|
||||
* These commands retrieve and set the brightness level and Local Tone Mapping (LTM) settings 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/LTM settings is to be retrieved or set.
|
||||
*
|
||||
* brightnessMilliNits
|
||||
* the display brightness in the millinits units in the [0,10000000] range, inclusive.
|
||||
*
|
||||
* transitionTimeMs
|
||||
* the transition time for display brightness to transition from current brightness level to the brightnessMilliNits
|
||||
*
|
||||
* bUncalibrated
|
||||
* if true the parameter indicates brightnessMilliNits has to be interpreted as brightness % value, in 0.001% units
|
||||
*
|
||||
* bAdaptiveBrightness
|
||||
* if true the brightnessMilliNits is set by the OS in the response to the ambient light sensor (ALS) input (if present on the system)
|
||||
*
|
||||
* bBoostRange
|
||||
* if true the brightnessMilliNits value is set by the OS in the response to the ambient light sensor (ALS) input (if present on the system)
|
||||
* Indicating very bright ambient light environment
|
||||
*
|
||||
* ambientIlluminance
|
||||
* if bAdaptiveBrightness = true, ambientIlluminance represents an ambient illuminance value reported by the ALS sensor, in 0.001 Lux units
|
||||
*
|
||||
* ambientChromaticityX
|
||||
* if bAdaptiveBrightness = true, ambientChromaticityX represents X chromaticity value reported by ALS sensor, in 0.001 units of [0,1] range
|
||||
*
|
||||
* ambientChromaticityY
|
||||
* if bAdaptiveBrightness = true, ambientChromaticityY represents Y chromaticity value reported by ALS sensor, in 0.001 units of [0,1] range
|
||||
*
|
||||
* bLtmEnable
|
||||
* if set to true, enable LTM functionality in GPU display HW. Set to true by default.
|
||||
*
|
||||
* bEnhanceContrast
|
||||
* if bLtmEnable = true, and if set to true, enhance local contrast via LTM regardless of any other contrast enhancement driver policies. Set to false by default.
|
||||
*
|
||||
* contrastGain
|
||||
* if bLtmEnable = true, this is used to how gain we need to apply on the contrast.
|
||||
*
|
||||
* detailGain
|
||||
* if bLtmEnable = true, how much details needs to be boosted is indicated by this parameter.
|
||||
*
|
||||
* bContentAdaptiveBrightness
|
||||
* if bLtmEnable = true, and if set to true, modify display backlight level and adjust pixel values dynamically on per-frame basis to perform content adaptive brightness control to reduce display power. Set to false by default.
|
||||
*
|
||||
* bDynamicHdrTonemapping
|
||||
* if bLtmEnable = true, and if set to true, and output is HDR, enable dynamic per frame HDR tonemapping. Set to false by default.
|
||||
*
|
||||
* Possible status values returned include:
|
||||
* NV_OK
|
||||
* NV_ERR_NOT_SUPPORTED
|
||||
*/
|
||||
|
||||
typedef struct NV0073_CTRL_SPECIFIC_DISPLAY_BRIGHTNESS_LTM_PARAMS {
|
||||
NvU32 subDeviceInstance;
|
||||
NvU32 displayId;
|
||||
NvU32 brightnessMilliNits;
|
||||
NvU32 transitionTimeMs;
|
||||
NvBool bUncalibrated;
|
||||
NvBool bAdaptiveBrightness;
|
||||
NvBool bBoostRange;
|
||||
NvU32 ambientIlluminance;
|
||||
NvU32 ambientChromaticityX;
|
||||
NvU32 ambientChromaticityY;
|
||||
NvBool bEnhanceContrast;
|
||||
NvU16 contrastGain;
|
||||
NvU16 detailGain;
|
||||
NvBool bContentAdaptiveBrightness;
|
||||
NvBool bDynamicHdrTonemapping;
|
||||
} NV0073_CTRL_SPECIFIC_DISPLAY_BRIGHTNESS_LTM_PARAMS;
|
||||
|
||||
#define NV0073_CTRL_SPECIFIC_GET_DISPLAY_BRIGHTNESS_LTM_PARAMS_MESSAGE_ID (0xAFU)
|
||||
|
||||
typedef NV0073_CTRL_SPECIFIC_DISPLAY_BRIGHTNESS_LTM_PARAMS NV0073_CTRL_SPECIFIC_GET_DISPLAY_BRIGHTNESS_LTM_PARAMS;
|
||||
|
||||
#define NV0073_CTRL_CMD_SPECIFIC_GET_DISPLAY_BRIGHTNESS_LTM (0x7302afU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_DISPLAY_BRIGHTNESS_LTM_PARAMS_MESSAGE_ID" */
|
||||
|
||||
#define NV0073_CTRL_SPECIFIC_SET_DISPLAY_BRIGHTNESS_LTM_PARAMS_MESSAGE_ID (0xB0U)
|
||||
|
||||
typedef NV0073_CTRL_SPECIFIC_DISPLAY_BRIGHTNESS_LTM_PARAMS NV0073_CTRL_SPECIFIC_SET_DISPLAY_BRIGHTNESS_LTM_PARAMS;
|
||||
|
||||
#define NV0073_CTRL_CMD_SPECIFIC_SET_DISPLAY_BRIGHTNESS_LTM (0x7302b0U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_DISPLAY_BRIGHTNESS_LTM_PARAMS_MESSAGE_ID" */
|
||||
|
||||
/* _ctrl0073specific_h_ */
|
||||
|
||||
@@ -1468,8 +1468,8 @@ typedef struct NV0073_CTRL_SYSTEM_ARM_LIGHTWEIGHT_SUPERVISOR_PARAMS {
|
||||
*
|
||||
* bVrrDirty
|
||||
* When set to NV_TRUE, indicates that vrr configuration has been changed
|
||||
* When set to NV_FALSE, this will indicate transitions from One shot mode to
|
||||
* Continuous mode and vice versa
|
||||
* When set to NV_FALSE, this will indicate transitions from One shot mode to
|
||||
* Continuous mode and vice versa
|
||||
*
|
||||
* bVrrEnabled
|
||||
* When set to NV_TRUE, indicates that vrr has been enabled, i.e. vBp extended by 2 lines
|
||||
@@ -1541,7 +1541,7 @@ typedef struct NV0073_CTRL_CMD_SYSTEM_QUERY_DISPLAY_IDS_WITH_MUX_PARAMS {
|
||||
* because it exceeds the total bandwidth available to the system, or because
|
||||
* too much bandwidth is already allocated to other clients), the call will
|
||||
* fail and NV_ERR_INSUFFICIENT_RESOURCES will be returned.
|
||||
*
|
||||
*
|
||||
* If bandwidth has already been allocated via a prior call, and a new
|
||||
* allocation is requested, the new allocation will replace the old one. (If
|
||||
* the new allocation fails, the old allocation remains in effect.)
|
||||
@@ -1718,7 +1718,7 @@ typedef struct NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_I2C_SUPPORT_PARAMS {
|
||||
* This parameter inputs the displayId of the active display. A value
|
||||
* of zero indicates no display is active.
|
||||
* bIsSidebandSrSupported
|
||||
* If it is true, it means that sideband is supported and not PSR API.
|
||||
* If it is true, it means that sideband is supported and not PSR API.
|
||||
*
|
||||
* Possible status values returned are:
|
||||
* NV_OK
|
||||
@@ -1755,7 +1755,7 @@ typedef struct NV0073_CTRL_CMD_SYSTEM_CHECK_SIDEBAND_SR_SUPPORT_PARAMS {
|
||||
* NV_ERR_GENERIC
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* This is the shared structure that will be used to communicate between
|
||||
* Physical RM and clients. As of now the access relies on single source of
|
||||
* truth operation, i.e. only Physical RM writes into the shared location
|
||||
@@ -1791,5 +1791,153 @@ typedef struct NV0073_CTRL_CMD_SYSTEM_VRR_SET_RGLINE_ACTIVE_PARAMS {
|
||||
NvHandle hMemory;
|
||||
} NV0073_CTRL_CMD_SYSTEM_VRR_SET_RGLINE_ACTIVE_PARAMS;
|
||||
|
||||
/*
|
||||
* NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL
|
||||
*
|
||||
* The VBlank Semaphore Control API ("VBlank Sem Control") allows clients to
|
||||
* register for a semaphore release to be performed on the specified memory.
|
||||
*
|
||||
* One or more clients may register a memory allocation + offset by specifying
|
||||
* _PARAMS::bEnabled = NV_TRUE and describing a video memory object with
|
||||
* _PARAMS::hMemory and an offset within that memory object
|
||||
* (_PARAMS::memoryOffset). Until the hMemory + memoryOffset combination is
|
||||
* disabled by a subsequent call with bEnabled = NV_FALSE, during each vblank on
|
||||
* the specified head, RM will interpret the specified memory location as an
|
||||
* NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_DATA data structure.
|
||||
*
|
||||
* _PARAMS::memoryOffset must be a multiple of 8, so that GPU semaphore releases
|
||||
* and GSP can write to 8-byte fields within
|
||||
* NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_DATA with natural alignment.
|
||||
*
|
||||
* During vblank, the _CONTROL_DATA::control field will be read, and the
|
||||
* following pseudocode will be performed:
|
||||
*
|
||||
* swapInterval = DRF_VAL(data->flags)
|
||||
* useMinimumGpuTime = DRV_VAL(data->flags)
|
||||
*
|
||||
* if (data->requestCounter == prevRequestCounter)
|
||||
* return
|
||||
*
|
||||
* if (currentVblankCount < (prevVBlankCount + swapInterval))
|
||||
* return
|
||||
*
|
||||
* if (useMinimumGpuTime && (data->minimumGpuTime < currentGpuTime))
|
||||
* return
|
||||
*
|
||||
* data->vblankCount = currentVblankCount
|
||||
* data->releaseGpuTime = currentGpuTime
|
||||
* data->semaphore = data->requestCounter
|
||||
*
|
||||
* prevRequestCounter = data->requestCounter
|
||||
* previousVblankCount = currentVblankCount
|
||||
*
|
||||
* I.e., if the client-described conditions are met, the RM will write
|
||||
* _CONTROL_DATA::semaphore to the client-requested 'requestCounter' along with
|
||||
* several informational fields (vblankCount, releaseGpuTime).
|
||||
*
|
||||
* The intent is for clients to use semaphore releases to write:
|
||||
*
|
||||
* _CONTROL_DATA::minimumGpuTime (if desired)
|
||||
* _CONTROL_DATA::swapInterval
|
||||
* _CONTROL_DATA::requestCounter
|
||||
*
|
||||
* and then perform a semaphore acquire on _CONTROL_DATA::semaphore >=
|
||||
* requestCounter (using the ACQ_GEQ semaphore operation). This will block any
|
||||
* following methods in the client's channel (e.g., a blit) until the requested
|
||||
* conditions are met. Note the ::requestCounter should be written last,
|
||||
* because the change in value of ::requestCounter is what causes RM, during a
|
||||
* vblank callback, to inspect the other fields.
|
||||
*
|
||||
* Additionally, clients should use the CPU (not semaphore releases in their
|
||||
* channel) to write the field _CONTROL_DATA::requestCounterAccel at the same
|
||||
* time that they enqueue the semaphore release to write to
|
||||
* _CONTROL_DATA::requestCounter. ::requestCounterAccel will be used by resman
|
||||
* to "accelerate" the vblank sem control by copying the value from
|
||||
* ::requestCounterAccel to ::semaphore. This will be done when the vblank sem
|
||||
* control is disabled, and when a client calls
|
||||
* NV0073_CTRL_CMD_SYSTEM_ACCEL_VBLANK_SEM_CONTROLS. It is important for resman
|
||||
* to have access to the value in ::requestCounterAccel, and not just
|
||||
* ::requestCounter. The latter is only the last value released so far by the
|
||||
* client's channel (further releases to ::requestCounter may still be inflight,
|
||||
* perhaps blocked on pending semaphore acquires). The former should be the
|
||||
* most recent value enqueued in the channel. This is also why it is important
|
||||
* for clients to acquire with ACQ_GEQ (greater-than-or-equal-to), rather than
|
||||
* just ACQUIRE.
|
||||
*
|
||||
* The same hMemory (with difference memoryOffsets) may be used by multiple
|
||||
* VBlank Sem Controls.
|
||||
*/
|
||||
|
||||
/* Fields within NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_DATA::flags */
|
||||
#define NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_SWAP_INTERVAL 15:0
|
||||
#define NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_USE_MINIMUM_GPU_TIME 16:16
|
||||
|
||||
typedef struct NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_DATA {
|
||||
NvU32 requestCounterAccel;
|
||||
NvU32 requestCounter;
|
||||
NvU32 flags;
|
||||
NV_DECLARE_ALIGNED(NvU64 minimumGpuTime, 8);
|
||||
|
||||
NvU32 semaphore;
|
||||
NV_DECLARE_ALIGNED(NvU64 vblankCount, 8);
|
||||
NV_DECLARE_ALIGNED(NvU64 releaseGpuTime, 8);
|
||||
} NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_DATA;
|
||||
|
||||
#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" */
|
||||
|
||||
#define NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_PARAMS_MESSAGE_ID (0x9FU)
|
||||
|
||||
typedef struct NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_PARAMS {
|
||||
NvU32 subDeviceInstance;
|
||||
NvBool bEnable;
|
||||
NvU32 head;
|
||||
NvHandle hMemory;
|
||||
NV_DECLARE_ALIGNED(NvU64 memoryOffset, 8);
|
||||
} NV0073_CTRL_CMD_SYSTEM_VBLANK_SEM_CONTROL_PARAMS;
|
||||
|
||||
/*
|
||||
* Accelerate all VBlank Sem Controls on the specified heads.
|
||||
*
|
||||
* For all enabled vblank sem controls on the specified heads, immediate set
|
||||
* their pending ::semaphore fields to the value in their ::requestCounterAccel
|
||||
* field.
|
||||
*/
|
||||
#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" */
|
||||
|
||||
#define NV0073_CTRL_CMD_SYSTEM_ACCEL_VBLANK_SEM_CONTROLS_PARAMS_MESSAGE_ID (0xA2U)
|
||||
|
||||
typedef struct NV0073_CTRL_CMD_SYSTEM_ACCEL_VBLANK_SEM_CONTROLS_PARAMS {
|
||||
NvU32 subDeviceInstance;
|
||||
NvU32 headMask;
|
||||
} NV0073_CTRL_CMD_SYSTEM_ACCEL_VBLANK_SEM_CONTROLS_PARAMS;
|
||||
|
||||
/*
|
||||
* Maps the memory allocated in Kernel RM into Physical RM using the
|
||||
* memory descriptor information provided.
|
||||
*
|
||||
* Possible status values returned are:
|
||||
* NV_OK
|
||||
* NV_ERR_INVALID_ARGUMENT
|
||||
* NV_ERR_NOT_SUPPORTED
|
||||
*/
|
||||
|
||||
typedef struct NV0073_CTRL_SHARED_MEMDESC_INFO {
|
||||
NV_DECLARE_ALIGNED(NvU64 base, 8);
|
||||
NV_DECLARE_ALIGNED(NvU64 size, 8);
|
||||
NV_DECLARE_ALIGNED(NvU64 alignment, 8);
|
||||
NvU32 addressSpace;
|
||||
NvU32 cpuCacheAttrib;
|
||||
} NV0073_CTRL_SHARED_MEMDESC_INFO;
|
||||
|
||||
#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" */
|
||||
|
||||
#define NV0073_CTRL_CMD_SYSTEM_MAP_SHARED_DATA_PARAMS_MESSAGE_ID (0xA3U)
|
||||
|
||||
typedef struct NV0073_CTRL_CMD_SYSTEM_MAP_SHARED_DATA_PARAMS {
|
||||
NV_DECLARE_ALIGNED(NV0073_CTRL_SHARED_MEMDESC_INFO memDescInfo, 8);
|
||||
NvU32 subDeviceInstance;
|
||||
NvBool bMap;
|
||||
} NV0073_CTRL_CMD_SYSTEM_MAP_SHARED_DATA_PARAMS;
|
||||
|
||||
/* _ctrl0073system_h_ */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user