| 1 | /* SPDX-License-Identifier: MIT */ |
| 2 | |
| 3 | /* Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved. */ |
| 4 | |
| 5 | #ifndef __NVRM_DISP_H__ |
| 6 | #define __NVRM_DISP_H__ |
| 7 | #include <nvrm/nvtypes.h> |
| 8 | |
| 9 | /* Excerpt of RM headers from https://github.com/NVIDIA/open-gpu-kernel-modules/tree/570.144 */ |
| 10 | |
| 11 | #define NV2080_CTRL_CMD_INTERNAL_DISPLAY_GET_STATIC_INFO (0x20800a01) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_0_INTERNAL_INTERFACE_ID << 8) | NV2080_CTRL_INTERNAL_DISPLAY_GET_STATIC_INFO_PARAMS_MESSAGE_ID" */ |
| 12 | typedef struct NV2080_CTRL_INTERNAL_DISPLAY_GET_STATIC_INFO_PARAMS { |
| 13 | NvU32 feHwSysCap; |
| 14 | NvU32 windowPresentMask; |
| 15 | NvBool bFbRemapperEnabled; |
| 16 | NvU32 numHeads; |
| 17 | NvU32 i2cPort; |
| 18 | NvU32 internalDispActiveMask; |
| 19 | NvU32 embeddedDisplayPortMask; |
| 20 | NvBool bExternalMuxSupported; |
| 21 | NvBool bInternalMuxSupported; |
| 22 | NvU32 numDispChannels; |
| 23 | } NV2080_CTRL_INTERNAL_DISPLAY_GET_STATIC_INFO_PARAMS; |
| 24 | |
| 25 | #define NV0073_CTRL_CMD_SYSTEM_GET_SUPPORTED (0x730107U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_SUPPORTED_PARAMS_MESSAGE_ID" */ |
| 26 | typedef struct NV0073_CTRL_SYSTEM_GET_SUPPORTED_PARAMS { |
| 27 | NvU32 subDeviceInstance; |
| 28 | NvU32 displayMask; |
| 29 | NvU32 displayMaskDDC; |
| 30 | } NV0073_CTRL_SYSTEM_GET_SUPPORTED_PARAMS; |
| 31 | |
| 32 | #define NV0073_CTRL_MAX_CONNECTORS 4U |
| 33 | |
| 34 | #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" */ |
| 35 | typedef struct NV0073_CTRL_SPECIFIC_GET_CONNECTOR_DATA_PARAMS { |
| 36 | NvU32 subDeviceInstance; |
| 37 | NvU32 displayId; |
| 38 | NvU32 flags; |
| 39 | NvU32 DDCPartners; |
| 40 | NvU32 count; |
| 41 | struct { |
| 42 | NvU32 index; |
| 43 | NvU32 type; |
| 44 | NvU32 location; |
| 45 | } data[NV0073_CTRL_MAX_CONNECTORS]; |
| 46 | NvU32 platform; |
| 47 | } NV0073_CTRL_SPECIFIC_GET_CONNECTOR_DATA_PARAMS; |
| 48 | |
| 49 | #define NV0073_CTRL_CMD_DP_GET_CAPS (0x731369U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_CMD_DP_GET_CAPS_PARAMS_MESSAGE_ID" */ |
| 50 | |
| 51 | typedef struct NV0073_CTRL_CMD_DSC_CAP_PARAMS { |
| 52 | NvBool bDscSupported; |
| 53 | NvU32 encoderColorFormatMask; |
| 54 | NvU32 lineBufferSizeKB; |
| 55 | NvU32 rateBufferSizeKB; |
| 56 | NvU32 bitsPerPixelPrecision; |
| 57 | NvU32 maxNumHztSlices; |
| 58 | NvU32 lineBufferBitDepth; |
| 59 | } NV0073_CTRL_CMD_DSC_CAP_PARAMS; |
| 60 | |
| 61 | typedef struct NV0073_CTRL_CMD_DP_GET_CAPS_PARAMS { |
| 62 | NvU32 subDeviceInstance; |
| 63 | NvU32 sorIndex; |
| 64 | NvU32 maxLinkRate; |
| 65 | NvU32 dpVersionsSupported; |
| 66 | NvU32 UHBRSupportedByGpu; |
| 67 | NvU32 minPClkForCompressed; |
| 68 | NvBool bIsMultistreamSupported; |
| 69 | NvBool bIsSCEnabled; |
| 70 | NvBool bHasIncreasedWatermarkLimits; |
| 71 | NvBool bIsPC2Disabled; |
| 72 | NvBool isSingleHeadMSTSupported; |
| 73 | NvBool bFECSupported; |
| 74 | NvBool bIsTrainPhyRepeater; |
| 75 | NvBool bOverrideLinkBw; |
| 76 | NvBool bUseRgFlushSequence; |
| 77 | NvBool bSupportDPDownSpread; |
| 78 | NV0073_CTRL_CMD_DSC_CAP_PARAMS DSC; |
| 79 | } NV0073_CTRL_CMD_DP_GET_CAPS_PARAMS; |
| 80 | |
| 81 | #define NV0073_CTRL_CMD_DP_GET_CAPS (0x731369U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_CMD_DP_GET_CAPS_PARAMS_MESSAGE_ID" */ |
| 82 | #define NV0073_CTRL_CMD_DP_GET_CAPS_PARAMS_MESSAGE_ID (0x69U) |
| 83 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_2 0:0 |
| 84 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_2_NO (0x00000000U) |
| 85 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_2_YES (0x00000001U) |
| 86 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_4 1:1 |
| 87 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_4_NO (0x00000000U) |
| 88 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_4_YES (0x00000001U) |
| 89 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP2_0 2:2 |
| 90 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP2_0_NO (0x00000000U) |
| 91 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP2_0_YES (0x00000001U) |
| 92 | #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE 2:0 |
| 93 | #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE_NONE (0x00000000U) |
| 94 | #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE_1_62 (0x00000001U) |
| 95 | #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE_2_70 (0x00000002U) |
| 96 | #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE_5_40 (0x00000003U) |
| 97 | #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE_8_10 (0x00000004U) |
| 98 | #define NV0073_CTRL_CMD_DP_GET_CAPS_UHBR_SUPPORTED_UHBR10_0 0:0 |
| 99 | #define NV0073_CTRL_CMD_DP_GET_CAPS_UHBR_SUPPORTED_UHBR10_0_NO (0x00000000U) |
| 100 | #define NV0073_CTRL_CMD_DP_GET_CAPS_UHBR_SUPPORTED_UHBR10_0_YES (0x00000001U) |
| 101 | #define NV0073_CTRL_CMD_DP_GET_CAPS_UHBR_SUPPORTED_UHBR13_5 1:1 |
| 102 | #define NV0073_CTRL_CMD_DP_GET_CAPS_UHBR_SUPPORTED_UHBR13_5_NO (0x00000000U) |
| 103 | #define NV0073_CTRL_CMD_DP_GET_CAPS_UHBR_SUPPORTED_UHBR13_5_YES (0x00000001U) |
| 104 | #define NV0073_CTRL_CMD_DP_GET_CAPS_UHBR_SUPPORTED_UHBR20_0 2:2 |
| 105 | #define NV0073_CTRL_CMD_DP_GET_CAPS_UHBR_SUPPORTED_UHBR20_0_NO (0x00000000U) |
| 106 | #define NV0073_CTRL_CMD_DP_GET_CAPS_UHBR_SUPPORTED_UHBR20_0_YES (0x00000001U) |
| 107 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_ENCODER_COLOR_FORMAT_RGB (0x00000001U) |
| 108 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_ENCODER_COLOR_FORMAT_Y_CB_CR_444 (0x00000002U) |
| 109 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_ENCODER_COLOR_FORMAT_Y_CB_CR_NATIVE_422 (0x00000004U) |
| 110 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_ENCODER_COLOR_FORMAT_Y_CB_CR_NATIVE_420 (0x00000008U) |
| 111 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_BITS_PER_PIXEL_PRECISION_1_16 (0x00000001U) |
| 112 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_BITS_PER_PIXEL_PRECISION_1_8 (0x00000002U) |
| 113 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_BITS_PER_PIXEL_PRECISION_1_4 (0x00000003U) |
| 114 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_BITS_PER_PIXEL_PRECISION_1_2 (0x00000004U) |
| 115 | #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_BITS_PER_PIXEL_PRECISION_1 (0x00000005U) |
| 116 | |
| 117 | #define NV0073_CTRL_CMD_SYSTEM_GET_CONNECT_STATE (0x730108U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_PARAMS_MESSAGE_ID" */ |
| 118 | typedef struct NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_PARAMS { |
| 119 | NvU32 subDeviceInstance; |
| 120 | NvU32 flags; |
| 121 | NvU32 displayMask; |
| 122 | NvU32 retryTimeMs; |
| 123 | } NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_PARAMS; |
| 124 | |
| 125 | #define NV0073_CTRL_CMD_DFP_GET_INFO (0x731140U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DFP_INTERFACE_ID << 8) | NV0073_CTRL_DFP_GET_INFO_PARAMS_MESSAGE_ID" */ |
| 126 | typedef struct NV0073_CTRL_DFP_GET_INFO_PARAMS { |
| 127 | NvU32 subDeviceInstance; |
| 128 | NvU32 displayId; |
| 129 | NvU32 flags; |
| 130 | NvU32 UHBRSupportedByDfp; |
| 131 | } NV0073_CTRL_DFP_GET_INFO_PARAMS; |
| 132 | |
| 133 | #define NV0073_CTRL_DFP_FLAGS_SIGNAL 2:0 |
| 134 | #define NV0073_CTRL_DFP_FLAGS_SIGNAL_TMDS (0x00000000U) |
| 135 | #define NV0073_CTRL_DFP_FLAGS_SIGNAL_LVDS (0x00000001U) |
| 136 | #define NV0073_CTRL_DFP_FLAGS_SIGNAL_SDI (0x00000002U) |
| 137 | #define NV0073_CTRL_DFP_FLAGS_SIGNAL_DISPLAYPORT (0x00000003U) |
| 138 | #define NV0073_CTRL_DFP_FLAGS_SIGNAL_DSI (0x00000004U) |
| 139 | #define NV0073_CTRL_DFP_FLAGS_SIGNAL_WRBK (0x00000005U) |
| 140 | #define NV0073_CTRL_DFP_FLAGS_LANE 5:3 |
| 141 | #define NV0073_CTRL_DFP_FLAGS_LANE_NONE (0x00000000U) |
| 142 | #define NV0073_CTRL_DFP_FLAGS_LANE_SINGLE (0x00000001U) |
| 143 | #define NV0073_CTRL_DFP_FLAGS_LANE_DUAL (0x00000002U) |
| 144 | #define NV0073_CTRL_DFP_FLAGS_LANE_QUAD (0x00000003U) |
| 145 | #define NV0073_CTRL_DFP_FLAGS_LANE_OCT (0x00000004U) |
| 146 | #define NV0073_CTRL_DFP_FLAGS_LIMIT 6:6 |
| 147 | #define NV0073_CTRL_DFP_FLAGS_LIMIT_DISABLE (0x00000000U) |
| 148 | #define NV0073_CTRL_DFP_FLAGS_LIMIT_60HZ_RR (0x00000001U) |
| 149 | #define NV0073_CTRL_DFP_FLAGS_SLI_SCALER 7:7 |
| 150 | #define NV0073_CTRL_DFP_FLAGS_SLI_SCALER_NORMAL (0x00000000U) |
| 151 | #define NV0073_CTRL_DFP_FLAGS_SLI_SCALER_DISABLE (0x00000001U) |
| 152 | #define NV0073_CTRL_DFP_FLAGS_HDMI_CAPABLE 8:8 |
| 153 | #define NV0073_CTRL_DFP_FLAGS_HDMI_CAPABLE_FALSE (0x00000000U) |
| 154 | #define NV0073_CTRL_DFP_FLAGS_HDMI_CAPABLE_TRUE (0x00000001U) |
| 155 | #define NV0073_CTRL_DFP_FLAGS_RANGE_LIMITED_CAPABLE 9:9 |
| 156 | #define NV0073_CTRL_DFP_FLAGS_RANGE_LIMITED_CAPABLE_FALSE (0x00000000U) |
| 157 | #define NV0073_CTRL_DFP_FLAGS_RANGE_LIMITED_CAPABLE_TRUE (0x00000001U) |
| 158 | #define NV0073_CTRL_DFP_FLAGS_RANGE_AUTO_CAPABLE 10:10 |
| 159 | #define NV0073_CTRL_DFP_FLAGS_RANGE_AUTO_CAPABLE_FALSE (0x00000000U) |
| 160 | #define NV0073_CTRL_DFP_FLAGS_RANGE_AUTO_CAPABLE_TRUE (0x00000001U) |
| 161 | #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR422_CAPABLE 11:11 |
| 162 | #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR422_CAPABLE_FALSE (0x00000000U) |
| 163 | #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR422_CAPABLE_TRUE (0x00000001U) |
| 164 | #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR444_CAPABLE 12:12 |
| 165 | #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR444_CAPABLE_FALSE (0x00000000U) |
| 166 | #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR444_CAPABLE_TRUE (0x00000001U) |
| 167 | #define NV0073_CTRL_DFP_FLAGS_TYPE_C_TO_DP_CONNECTOR 13:13 |
| 168 | #define NV0073_CTRL_DFP_FLAGS_TYPE_C_TO_DP_CONNECTOR_FALSE (0x00000000U) |
| 169 | #define NV0073_CTRL_DFP_FLAGS_TYPE_C_TO_DP_CONNECTOR_TRUE (0x00000001U) |
| 170 | #define NV0073_CTRL_DFP_FLAGS_HDMI_ALLOWED 14:14 |
| 171 | #define NV0073_CTRL_DFP_FLAGS_HDMI_ALLOWED_FALSE (0x00000000U) |
| 172 | #define NV0073_CTRL_DFP_FLAGS_HDMI_ALLOWED_TRUE (0x00000001U) |
| 173 | #define NV0073_CTRL_DFP_FLAGS_EMBEDDED_DISPLAYPORT 15:15 |
| 174 | #define NV0073_CTRL_DFP_FLAGS_EMBEDDED_DISPLAYPORT_FALSE (0x00000000U) |
| 175 | #define NV0073_CTRL_DFP_FLAGS_EMBEDDED_DISPLAYPORT_TRUE (0x00000001U) |
| 176 | #define NV0073_CTRL_DFP_FLAGS_DP_LINK_CONSTRAINT 16:16 |
| 177 | #define NV0073_CTRL_DFP_FLAGS_DP_LINK_CONSTRAINT_NONE (0x00000000U) |
| 178 | #define NV0073_CTRL_DFP_FLAGS_DP_LINK_CONSTRAINT_PREFER_RBR (0x00000001U) |
| 179 | #define NV0073_CTRL_DFP_FLAGS_DP_LINK_BW 19:17 |
| 180 | #define NV0073_CTRL_DFP_FLAGS_DP_LINK_BW_1_62GBPS (0x00000001U) |
| 181 | #define NV0073_CTRL_DFP_FLAGS_DP_LINK_BW_2_70GBPS (0x00000002U) |
| 182 | #define NV0073_CTRL_DFP_FLAGS_DP_LINK_BW_5_40GBPS (0x00000003U) |
| 183 | #define NV0073_CTRL_DFP_FLAGS_DP_LINK_BW_8_10GBPS (0x00000004U) |
| 184 | #define NV0073_CTRL_DFP_FLAGS_LINK 21:20 |
| 185 | #define NV0073_CTRL_DFP_FLAGS_LINK_NONE (0x00000000U) |
| 186 | #define NV0073_CTRL_DFP_FLAGS_LINK_SINGLE (0x00000001U) |
| 187 | #define NV0073_CTRL_DFP_FLAGS_LINK_DUAL (0x00000002U) |
| 188 | #define NV0073_CTRL_DFP_FLAGS_DP_FORCE_RM_EDID 22:22 |
| 189 | #define NV0073_CTRL_DFP_FLAGS_DP_FORCE_RM_EDID_FALSE (0x00000000U) |
| 190 | #define NV0073_CTRL_DFP_FLAGS_DP_FORCE_RM_EDID_TRUE (0x00000001U) |
| 191 | #define NV0073_CTRL_DFP_FLAGS_DSI_DEVICE_ID 24:23 |
| 192 | #define NV0073_CTRL_DFP_FLAGS_DSI_DEVICE_ID_DSI_NONE (0x00000000U) |
| 193 | #define NV0073_CTRL_DFP_FLAGS_DSI_DEVICE_ID_DSI_A (0x00000001U) |
| 194 | #define NV0073_CTRL_DFP_FLAGS_DSI_DEVICE_ID_DSI_B (0x00000002U) |
| 195 | #define NV0073_CTRL_DFP_FLAGS_DSI_DEVICE_ID_DSI_GANGED (0x00000003U) |
| 196 | #define NV0073_CTRL_DFP_FLAGS_DP_POST_CURSOR2_DISABLED 25:25 |
| 197 | #define NV0073_CTRL_DFP_FLAGS_DP_POST_CURSOR2_DISABLED_FALSE (0x00000000U) |
| 198 | #define NV0073_CTRL_DFP_FLAGS_DP_POST_CURSOR2_DISABLED_TRUE (0x00000001U) |
| 199 | #define NV0073_CTRL_DFP_FLAGS_DP_PHY_REPEATER_COUNT 29:26 |
| 200 | #define NV0073_CTRL_DFP_FLAGS_DYNAMIC_MUX_CAPABLE 30:30 |
| 201 | #define NV0073_CTRL_DFP_FLAGS_DYNAMIC_MUX_CAPABLE_FALSE (0x00000000U) |
| 202 | #define NV0073_CTRL_DFP_FLAGS_DYNAMIC_MUX_CAPABLE_TRUE (0x00000001U) |
| 203 | #define NV0073_CTRL_DFP_FLAGS2_DP_UHBR_SUPPORTED_10_0GBPS 0:0 |
| 204 | #define NV0073_CTRL_DFP_FLAGS2_DP_UHBR_SUPPORTED_10_0GBPS_FALSE (0x00000000U) |
| 205 | #define NV0073_CTRL_DFP_FLAGS2_DP_UHBR_SUPPORTED_10_0GBPS_TRUE (0x00000001U) |
| 206 | #define NV0073_CTRL_DFP_FLAGS2_DP_UHBR_SUPPORTED_13_5GBPS 1:1 |
| 207 | #define NV0073_CTRL_DFP_FLAGS2_DP_UHBR_SUPPORTED_13_5GBPS_FALSE (0x00000000U) |
| 208 | #define NV0073_CTRL_DFP_FLAGS2_DP_UHBR_SUPPORTED_13_5GBPS_TRUE (0x00000001U) |
| 209 | #define NV0073_CTRL_DFP_FLAGS2_DP_UHBR_SUPPORTED_20_0GBPS 2:2 |
| 210 | #define NV0073_CTRL_DFP_FLAGS2_DP_UHBR_SUPPORTED_20_0GBPS_FALSE (0x00000000U) |
| 211 | #define NV0073_CTRL_DFP_FLAGS2_DP_UHBR_SUPPORTED_20_0GBPS_TRUE (0x00000001U) |
| 212 | |
| 213 | #define NV0073_CTRL_CMD_SYSTEM_GET_ACTIVE (0x73010cU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_ACTIVE_PARAMS_MESSAGE_ID" */ |
| 214 | typedef struct NV0073_CTRL_SYSTEM_GET_ACTIVE_PARAMS { |
| 215 | NvU32 subDeviceInstance; |
| 216 | NvU32 head; |
| 217 | NvU32 flags; |
| 218 | NvU32 displayId; |
| 219 | } NV0073_CTRL_SYSTEM_GET_ACTIVE_PARAMS; |
| 220 | |
| 221 | #define NV0073_CTRL_CMD_SPECIFIC_SET_BACKLIGHT_BRIGHTNESS (0x730292U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_SET_BACKLIGHT_BRIGHTNESS_PARAMS_MESSAGE_ID" */ |
| 222 | |
| 223 | #define NV0073_CTRL_CMD_SPECIFIC_GET_BACKLIGHT_BRIGHTNESS (0x730291U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_SPECIFIC_GET_BACKLIGHT_BRIGHTNESS_PARAMS_MESSAGE_ID" */ |
| 224 | |
| 225 | typedef struct NV0073_CTRL_SPECIFIC_BACKLIGHT_BRIGHTNESS_PARAMS { |
| 226 | NvU32 subDeviceInstance; |
| 227 | NvU32 displayId; |
| 228 | NvU32 brightness; |
| 229 | NvBool bUncalibrated; |
| 230 | NvU8 brightnessType; |
| 231 | } NV0073_CTRL_SPECIFIC_BACKLIGHT_BRIGHTNESS_PARAMS; |
| 232 | |
| 233 | #define NV0073_CTRL_CMD_DP_CONFIG_INDEXED_LINK_RATES (0x731377U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_CMD_DP_CONFIG_INDEXED_LINK_RATES_PARAMS_MESSAGE_ID" */ |
| 234 | |
| 235 | #define NV0073_CTRL_DP_MAX_INDEXED_LINK_RATES 8U |
| 236 | |
| 237 | typedef struct NV0073_CTRL_CMD_DP_CONFIG_INDEXED_LINK_RATES_PARAMS { |
| 238 | // In |
| 239 | NvU32 subDeviceInstance; |
| 240 | NvU32 displayId; |
| 241 | NvU16 linkRateTbl[NV0073_CTRL_DP_MAX_INDEXED_LINK_RATES]; |
| 242 | |
| 243 | // Out |
| 244 | NvU16 linkBwTbl[NV0073_CTRL_DP_MAX_INDEXED_LINK_RATES]; |
| 245 | NvU8 linkBwCount; |
| 246 | } NV0073_CTRL_CMD_DP_CONFIG_INDEXED_LINK_RATES_PARAMS; |
| 247 | |
| 248 | #define NV0073_CTRL_CMD_DP_CTRL (0x731343U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_DP_CTRL_PARAMS_MESSAGE_ID" */ |
| 249 | typedef struct NV0073_CTRL_DP_CTRL_PARAMS { |
| 250 | NvU32 subDeviceInstance; |
| 251 | NvU32 displayId; |
| 252 | NvU32 cmd; |
| 253 | NvU32 data; |
| 254 | NvU32 err; |
| 255 | NvU32 retryTimeMs; |
| 256 | NvU32 eightLaneDpcdBaseAddr; |
| 257 | } NV0073_CTRL_DP_CTRL_PARAMS; |
| 258 | |
| 259 | typedef struct NV0073_CTRL_CMD_DP_CONFIG_STREAM_PARAMS { |
| 260 | NvU32 subDeviceInstance; |
| 261 | NvU32 head; |
| 262 | NvU32 sorIndex; |
| 263 | NvU32 dpLink; |
| 264 | |
| 265 | NvBool bEnableOverride; |
| 266 | NvBool bMST; |
| 267 | NvU32 singleHeadMultistreamMode; |
| 268 | NvU32 hBlankSym; |
| 269 | NvU32 vBlankSym; |
| 270 | NvU32 colorFormat; |
| 271 | NvBool bEnableTwoHeadOneOr; |
| 272 | |
| 273 | struct { |
| 274 | NvU32 slotStart; |
| 275 | NvU32 slotEnd; |
| 276 | NvU32 PBN; |
| 277 | NvU32 Timeslice; |
| 278 | NvBool sendACT; // deprecated -Use NV0073_CTRL_CMD_DP_SEND_ACT |
| 279 | NvU32 singleHeadMSTPipeline; |
| 280 | NvBool bEnableAudioOverRightPanel; |
| 281 | } MST; |
| 282 | |
| 283 | struct { |
| 284 | NvBool bEnhancedFraming; |
| 285 | NvU32 tuSize; |
| 286 | NvU32 waterMark; |
| 287 | NvBool bEnableAudioOverRightPanel; |
| 288 | } SST; |
| 289 | } NV0073_CTRL_CMD_DP_CONFIG_STREAM_PARAMS; |
| 290 | |
| 291 | #define NV0073_CTRL_CMD_DP_SET_AUDIO_MUTESTREAM (0x731359U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_DP_SET_AUDIO_MUTESTREAM_PARAMS_MESSAGE_ID" */ |
| 292 | typedef struct NV0073_CTRL_DP_SET_AUDIO_MUTESTREAM_PARAMS { |
| 293 | NvU32 subDeviceInstance; |
| 294 | NvU32 displayId; |
| 295 | NvU32 mute; |
| 296 | } NV0073_CTRL_DP_SET_AUDIO_MUTESTREAM_PARAMS; |
| 297 | |
| 298 | #define NV2080_CTRL_CMD_INTERNAL_DISPLAY_CHANNEL_PUSHBUFFER (0x20800a58) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_0_INTERNAL_INTERFACE_ID << 8) | NV2080_CTRL_INTERNAL_DISPLAY_CHANNEL_PUSHBUFFER_PARAMS_MESSAGE_ID" */ |
| 299 | typedef struct NV2080_CTRL_INTERNAL_DISPLAY_CHANNEL_PUSHBUFFER_PARAMS { |
| 300 | NvU32 addressSpace; |
| 301 | NV_DECLARE_ALIGNED(NvU64 physicalAddr, 8); |
| 302 | NV_DECLARE_ALIGNED(NvU64 limit, 8); |
| 303 | NvU32 cacheSnoop; |
| 304 | NvU32 hclass; |
| 305 | NvU32 channelInstance; |
| 306 | NvBool valid; |
| 307 | NvU32 pbTargetAperture; |
| 308 | NvU32 channelPBSize; |
| 309 | NvU32 subDeviceId; |
| 310 | } NV2080_CTRL_INTERNAL_DISPLAY_CHANNEL_PUSHBUFFER_PARAMS; |
| 311 | |
| 312 | #define ADDR_SYSMEM (1) |
| 313 | |
| 314 | #define ADDR_FBMEM 2 // Frame buffer memory space |
| 315 | |
| 316 | typedef enum |
| 317 | { |
| 318 | PB_SIZE_4KB = 0, |
| 319 | PB_SIZE_8KB, |
| 320 | PB_SIZE_16KB, |
| 321 | PB_SIZE_32KB, |
| 322 | PB_SIZE_64KB |
| 323 | } ChannelPBSize; |
| 324 | |
| 325 | typedef struct |
| 326 | { |
| 327 | NvV32 channelInstance; // One of the n channel instances of a given channel type. |
| 328 | // Note that core channel has only one instance |
| 329 | // while all others have two (one per head). |
| 330 | NvHandle hObjectBuffer; // ctx dma handle for DMA push buffer |
| 331 | NvHandle hObjectNotify; // ctx dma handle for an area (of type NvNotification defined in sdk/nvidia/inc/nvtypes.h) where RM can write errors/notifications |
| 332 | NvU32 offset; // Initial offset for put/get, usually zero. |
| 333 | NvP64 pControl NV_ALIGN_BYTES(8); // pControl gives virt addr of UDISP GET/PUT regs |
| 334 | |
| 335 | NvU32 flags; |
| 336 | ChannelPBSize channelPBSize; // Size of Push Buffer requested by client (allowed values in enum) |
| 337 | #define NV50VAIO_CHANNELDMA_ALLOCATION_FLAGS_CONNECT_PB_AT_GRAB 1:1 |
| 338 | #define NV50VAIO_CHANNELDMA_ALLOCATION_FLAGS_CONNECT_PB_AT_GRAB_YES 0x00000000 |
| 339 | #define NV50VAIO_CHANNELDMA_ALLOCATION_FLAGS_CONNECT_PB_AT_GRAB_NO 0x00000001 |
| 340 | |
| 341 | NvU32 subDeviceId; // One-hot encoded subDeviceId (i.e. SDM) that will be used to address the channel in the pushbuffer stream (via SSDM method) |
| 342 | } NV50VAIO_CHANNELDMA_ALLOCATION_PARAMETERS; |
| 343 | |
| 344 | #define NV0073_CTRL_SPECIFIC_BACKLIGHT_BRIGHTNESS_TYPE_PERCENT100 1 |
| 345 | #define NV0073_CTRL_SPECIFIC_BACKLIGHT_BRIGHTNESS_TYPE_PERCENT1000 2 |
| 346 | #define NV0073_CTRL_SPECIFIC_BACKLIGHT_BRIGHTNESS_TYPE_NITS 3 |
| 347 | |
| 348 | typedef enum |
| 349 | { |
| 350 | IOVA, |
| 351 | PHYS_NVM, |
| 352 | PHYS_PCI, |
| 353 | PHYS_PCI_COHERENT |
| 354 | } PBTARGETAPERTURE; |
| 355 | #endif |
| 356 | |