xref: /linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/nvrm/disp.h (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
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/535.113.01 */
10 
11 #define NV2080_CTRL_CMD_INTERNAL_DISPLAY_WRITE_INST_MEM (0x20800a49) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_0_INTERNAL_INTERFACE_ID << 8) | NV2080_CTRL_INTERNAL_DISPLAY_WRITE_INST_MEM_PARAMS_MESSAGE_ID" */
12 typedef struct NV2080_CTRL_INTERNAL_DISPLAY_WRITE_INST_MEM_PARAMS {
13     NV_DECLARE_ALIGNED(NvU64 instMemPhysAddr, 8);
14     NV_DECLARE_ALIGNED(NvU64 instMemSize, 8);
15     NvU32 instMemAddrSpace;
16     NvU32 instMemCpuCacheAttr;
17 } NV2080_CTRL_INTERNAL_DISPLAY_WRITE_INST_MEM_PARAMS;
18 
19 #define NV_MEMORY_WRITECOMBINED      2
20 
21 #define NV04_DISPLAY_COMMON                      (0x00000073)
22 
23 #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" */
24 typedef struct NV2080_CTRL_INTERNAL_DISPLAY_GET_STATIC_INFO_PARAMS {
25     NvU32  feHwSysCap;
26     NvU32  windowPresentMask;
27     NvBool bFbRemapperEnabled;
28     NvU32  numHeads;
29     NvBool bPrimaryVga;
30     NvU32  i2cPort;
31     NvU32  internalDispActiveMask;
32 } NV2080_CTRL_INTERNAL_DISPLAY_GET_STATIC_INFO_PARAMS;
33 
34 #define NV2080_CTRL_ACPI_DSM_READ_SIZE                   (0x1000) /* finn: Evaluated from "(4 * 1024)" */
35 
36 #define NV2080_CTRL_CMD_INTERNAL_INIT_BRIGHTC_STATE_LOAD (0x20800ac6) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_0_INTERNAL_INTERFACE_ID << 8) | NV2080_CTRL_INTERNAL_INIT_BRIGHTC_STATE_LOAD_PARAMS_MESSAGE_ID" */
37 typedef struct NV2080_CTRL_INTERNAL_INIT_BRIGHTC_STATE_LOAD_PARAMS {
38     NvU32 status;
39     NvU16 backLightDataSize;
40     NvU8  backLightData[NV2080_CTRL_ACPI_DSM_READ_SIZE];
41 } NV2080_CTRL_INTERNAL_INIT_BRIGHTC_STATE_LOAD_PARAMS;
42 
43 typedef struct NV0073_CTRL_CMD_DP_SET_MANUAL_DISPLAYPORT_PARAMS {
44     NvU32 subDeviceInstance;
45 } NV0073_CTRL_CMD_DP_SET_MANUAL_DISPLAYPORT_PARAMS;
46 
47 #define NV0073_CTRL_CMD_DP_SET_MANUAL_DISPLAYPORT                    (0x731365U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_CMD_DP_SET_MANUAL_DISPLAYPORT_PARAMS_MESSAGE_ID" */
48 
49 #define NV0073_CTRL_CMD_SYSTEM_GET_NUM_HEADS (0x730102U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_NUM_HEADS_PARAMS_MESSAGE_ID" */
50 typedef struct NV0073_CTRL_SYSTEM_GET_NUM_HEADS_PARAMS {
51     NvU32 subDeviceInstance;
52     NvU32 flags;
53     NvU32 numHeads;
54 } NV0073_CTRL_SYSTEM_GET_NUM_HEADS_PARAMS;
55 
56 #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" */
57 typedef struct NV0073_CTRL_SPECIFIC_GET_ALL_HEAD_MASK_PARAMS {
58     NvU32 subDeviceInstance;
59     NvU32 headMask;
60 } NV0073_CTRL_SPECIFIC_GET_ALL_HEAD_MASK_PARAMS;
61 
62 #define NV0073_CTRL_CMD_SYSTEM_GET_SUPPORTED (0x730120U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_SUPPORTED_PARAMS_MESSAGE_ID" */
63 typedef struct NV0073_CTRL_SYSTEM_GET_SUPPORTED_PARAMS {
64     NvU32 subDeviceInstance;
65     NvU32 displayMask;
66     NvU32 displayMaskDDC;
67 } NV0073_CTRL_SYSTEM_GET_SUPPORTED_PARAMS;
68 
69 #define NV0073_CTRL_MAX_CONNECTORS                    4U
70 
71 #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" */
72 typedef struct NV0073_CTRL_SPECIFIC_GET_CONNECTOR_DATA_PARAMS {
73     NvU32 subDeviceInstance;
74     NvU32 displayId;
75     NvU32 flags;
76     NvU32 DDCPartners;
77     NvU32 count;
78     struct {
79         NvU32 index;
80         NvU32 type;
81         NvU32 location;
82     } data[NV0073_CTRL_MAX_CONNECTORS];
83     NvU32 platform;
84 } NV0073_CTRL_SPECIFIC_GET_CONNECTOR_DATA_PARAMS;
85 
86 #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" */
87 typedef struct NV0073_CTRL_SPECIFIC_OR_GET_INFO_PARAMS {
88     NvU32  subDeviceInstance;
89     NvU32  displayId;
90     NvU32  index;
91     NvU32  type;
92     NvU32  protocol;
93     NvU32  ditherType;
94     NvU32  ditherAlgo;
95     NvU32  location;
96     NvU32  rootPortId;
97     NvU32  dcbIndex;
98     NV_DECLARE_ALIGNED(NvU64 vbiosAddress, 8);
99     NvBool bIsLitByVbios;
100     NvBool bIsDispDynamic;
101 } NV0073_CTRL_SPECIFIC_OR_GET_INFO_PARAMS;
102 
103 #define NV0073_CTRL_SPECIFIC_OR_TYPE_NONE                   (0x00000000U)
104 #define NV0073_CTRL_SPECIFIC_OR_TYPE_DAC                    (0x00000001U)
105 #define NV0073_CTRL_SPECIFIC_OR_TYPE_SOR                    (0x00000002U)
106 #define NV0073_CTRL_SPECIFIC_OR_TYPE_PIOR                   (0x00000003U)
107 #define NV0073_CTRL_SPECIFIC_OR_TYPE_DSI                    (0x00000005U)
108 
109 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_DAC_RGB_CRT        (0x00000000U)
110 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_LVDS_CUSTOM    (0x00000000U)
111 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_A  (0x00000001U)
112 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_SINGLE_TMDS_B  (0x00000002U)
113 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DUAL_TMDS      (0x00000005U)
114 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DP_A           (0x00000008U)
115 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DP_B           (0x00000009U)
116 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_SOR_DSI            (0x00000010U)
117 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_DSI                (0x00000011U)
118 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_PIOR_EXT_TMDS_ENC  (0x00000000U)
119 #define NV0073_CTRL_SPECIFIC_OR_PROTOCOL_UNKNOWN            (0xFFFFFFFFU)
120 
121 #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" */
122 
123 typedef struct NV0073_CTRL_CMD_DSC_CAP_PARAMS {
124     NvBool bDscSupported;
125     NvU32  encoderColorFormatMask;
126     NvU32  lineBufferSizeKB;
127     NvU32  rateBufferSizeKB;
128     NvU32  bitsPerPixelPrecision;
129     NvU32  maxNumHztSlices;
130     NvU32  lineBufferBitDepth;
131 } NV0073_CTRL_CMD_DSC_CAP_PARAMS;
132 
133 typedef struct NV0073_CTRL_CMD_DP_GET_CAPS_PARAMS {
134     NvU32                          subDeviceInstance;
135     NvU32                          sorIndex;
136     NvU32                          maxLinkRate;
137     NvU32                          dpVersionsSupported;
138     NvU32                          UHBRSupported;
139     NvBool                         bIsMultistreamSupported;
140     NvBool                         bIsSCEnabled;
141     NvBool                         bHasIncreasedWatermarkLimits;
142     NvBool                         bIsPC2Disabled;
143     NvBool                         isSingleHeadMSTSupported;
144     NvBool                         bFECSupported;
145     NvBool                         bIsTrainPhyRepeater;
146     NvBool                         bOverrideLinkBw;
147     NV0073_CTRL_CMD_DSC_CAP_PARAMS DSC;
148 } NV0073_CTRL_CMD_DP_GET_CAPS_PARAMS;
149 
150 #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" */
151 #define NV0073_CTRL_CMD_DP_GET_CAPS_PARAMS_MESSAGE_ID (0x69U)
152 #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_2                0:0
153 #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_2_NO              (0x00000000U)
154 #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_2_YES             (0x00000001U)
155 #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_4                1:1
156 #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_4_NO              (0x00000000U)
157 #define NV0073_CTRL_CMD_DP_GET_CAPS_DP_VERSIONS_SUPPORTED_DP1_4_YES             (0x00000001U)
158 #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE                           2:0
159 #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE_NONE                          (0x00000000U)
160 #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE_1_62                          (0x00000001U)
161 #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE_2_70                          (0x00000002U)
162 #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE_5_40                          (0x00000003U)
163 #define NV0073_CTRL_CMD_DP_GET_CAPS_MAX_LINK_RATE_8_10                          (0x00000004U)
164 #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_ENCODER_COLOR_FORMAT_RGB                (0x00000001U)
165 #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_ENCODER_COLOR_FORMAT_Y_CB_CR_444        (0x00000002U)
166 #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_ENCODER_COLOR_FORMAT_Y_CB_CR_NATIVE_422 (0x00000004U)
167 #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_ENCODER_COLOR_FORMAT_Y_CB_CR_NATIVE_420 (0x00000008U)
168 #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_BITS_PER_PIXEL_PRECISION_1_16           (0x00000001U)
169 #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_BITS_PER_PIXEL_PRECISION_1_8            (0x00000002U)
170 #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_BITS_PER_PIXEL_PRECISION_1_4            (0x00000003U)
171 #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_BITS_PER_PIXEL_PRECISION_1_2            (0x00000004U)
172 #define NV0073_CTRL_CMD_DP_GET_CAPS_DSC_BITS_PER_PIXEL_PRECISION_1              (0x00000005U)
173 
174 #define NV2080_NOTIFIERS_HOTPLUG                                   (1)
175 
176 typedef struct {
177     NvU32 plugDisplayMask;
178     NvU32 unplugDisplayMask;
179 } Nv2080HotplugNotification;
180 
181 #define NV2080_NOTIFIERS_DP_IRQ                                    (7)
182 
183 typedef struct Nv2080DpIrqNotificationRec {
184     NvU32 displayId;
185 } Nv2080DpIrqNotification;
186 
187 #define NV0073_CTRL_CMD_SYSTEM_GET_CONNECT_STATE (0x730122U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_PARAMS_MESSAGE_ID" */
188 typedef struct NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_PARAMS {
189     NvU32 subDeviceInstance;
190     NvU32 flags;
191     NvU32 displayMask;
192     NvU32 retryTimeMs;
193 } NV0073_CTRL_SYSTEM_GET_CONNECT_STATE_PARAMS;
194 
195 #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" */
196 typedef struct NV0073_CTRL_DFP_GET_INFO_PARAMS {
197     NvU32 subDeviceInstance;
198     NvU32 displayId;
199     NvU32 flags;
200     NvU32 flags2;
201 } NV0073_CTRL_DFP_GET_INFO_PARAMS;
202 
203 #define NV0073_CTRL_DFP_FLAGS_SIGNAL                                       2:0
204 #define NV0073_CTRL_DFP_FLAGS_SIGNAL_TMDS                       (0x00000000U)
205 #define NV0073_CTRL_DFP_FLAGS_SIGNAL_LVDS                       (0x00000001U)
206 #define NV0073_CTRL_DFP_FLAGS_SIGNAL_SDI                        (0x00000002U)
207 #define NV0073_CTRL_DFP_FLAGS_SIGNAL_DISPLAYPORT                (0x00000003U)
208 #define NV0073_CTRL_DFP_FLAGS_SIGNAL_DSI                        (0x00000004U)
209 #define NV0073_CTRL_DFP_FLAGS_SIGNAL_WRBK                       (0x00000005U)
210 #define NV0073_CTRL_DFP_FLAGS_LANE                                         5:3
211 #define NV0073_CTRL_DFP_FLAGS_LANE_NONE                         (0x00000000U)
212 #define NV0073_CTRL_DFP_FLAGS_LANE_SINGLE                       (0x00000001U)
213 #define NV0073_CTRL_DFP_FLAGS_LANE_DUAL                         (0x00000002U)
214 #define NV0073_CTRL_DFP_FLAGS_LANE_QUAD                         (0x00000003U)
215 #define NV0073_CTRL_DFP_FLAGS_LANE_OCT                          (0x00000004U)
216 #define NV0073_CTRL_DFP_FLAGS_LIMIT                                        6:6
217 #define NV0073_CTRL_DFP_FLAGS_LIMIT_DISABLE                     (0x00000000U)
218 #define NV0073_CTRL_DFP_FLAGS_LIMIT_60HZ_RR                     (0x00000001U)
219 #define NV0073_CTRL_DFP_FLAGS_SLI_SCALER                                   7:7
220 #define NV0073_CTRL_DFP_FLAGS_SLI_SCALER_NORMAL                 (0x00000000U)
221 #define NV0073_CTRL_DFP_FLAGS_SLI_SCALER_DISABLE                (0x00000001U)
222 #define NV0073_CTRL_DFP_FLAGS_HDMI_CAPABLE                                 8:8
223 #define NV0073_CTRL_DFP_FLAGS_HDMI_CAPABLE_FALSE                (0x00000000U)
224 #define NV0073_CTRL_DFP_FLAGS_HDMI_CAPABLE_TRUE                 (0x00000001U)
225 #define NV0073_CTRL_DFP_FLAGS_RANGE_LIMITED_CAPABLE                        9:9
226 #define NV0073_CTRL_DFP_FLAGS_RANGE_LIMITED_CAPABLE_FALSE       (0x00000000U)
227 #define NV0073_CTRL_DFP_FLAGS_RANGE_LIMITED_CAPABLE_TRUE        (0x00000001U)
228 #define NV0073_CTRL_DFP_FLAGS_RANGE_AUTO_CAPABLE                         10:10
229 #define NV0073_CTRL_DFP_FLAGS_RANGE_AUTO_CAPABLE_FALSE          (0x00000000U)
230 #define NV0073_CTRL_DFP_FLAGS_RANGE_AUTO_CAPABLE_TRUE           (0x00000001U)
231 #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR422_CAPABLE                    11:11
232 #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR422_CAPABLE_FALSE     (0x00000000U)
233 #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR422_CAPABLE_TRUE      (0x00000001U)
234 #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR444_CAPABLE                    12:12
235 #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR444_CAPABLE_FALSE     (0x00000000U)
236 #define NV0073_CTRL_DFP_FLAGS_FORMAT_YCBCR444_CAPABLE_TRUE      (0x00000001U)
237 #define NV0073_CTRL_DFP_FLAGS_HDMI_ALLOWED                               14:14
238 #define NV0073_CTRL_DFP_FLAGS_HDMI_ALLOWED_FALSE                (0x00000000U)
239 #define NV0073_CTRL_DFP_FLAGS_HDMI_ALLOWED_TRUE                 (0x00000001U)
240 #define NV0073_CTRL_DFP_FLAGS_EMBEDDED_DISPLAYPORT                       15:15
241 #define NV0073_CTRL_DFP_FLAGS_EMBEDDED_DISPLAYPORT_FALSE        (0x00000000U)
242 #define NV0073_CTRL_DFP_FLAGS_EMBEDDED_DISPLAYPORT_TRUE         (0x00000001U)
243 #define NV0073_CTRL_DFP_FLAGS_DP_LINK_CONSTRAINT                         16:16
244 #define NV0073_CTRL_DFP_FLAGS_DP_LINK_CONSTRAINT_NONE           (0x00000000U)
245 #define NV0073_CTRL_DFP_FLAGS_DP_LINK_CONSTRAINT_PREFER_RBR     (0x00000001U)
246 #define NV0073_CTRL_DFP_FLAGS_DP_LINK_BW                                 19:17
247 #define NV0073_CTRL_DFP_FLAGS_DP_LINK_BW_1_62GBPS               (0x00000001U)
248 #define NV0073_CTRL_DFP_FLAGS_DP_LINK_BW_2_70GBPS               (0x00000002U)
249 #define NV0073_CTRL_DFP_FLAGS_DP_LINK_BW_5_40GBPS               (0x00000003U)
250 #define NV0073_CTRL_DFP_FLAGS_DP_LINK_BW_8_10GBPS               (0x00000004U)
251 #define NV0073_CTRL_DFP_FLAGS_LINK                                       21:20
252 #define NV0073_CTRL_DFP_FLAGS_LINK_NONE                         (0x00000000U)
253 #define NV0073_CTRL_DFP_FLAGS_LINK_SINGLE                       (0x00000001U)
254 #define NV0073_CTRL_DFP_FLAGS_LINK_DUAL                         (0x00000002U)
255 #define NV0073_CTRL_DFP_FLAGS_DP_FORCE_RM_EDID                           22:22
256 #define NV0073_CTRL_DFP_FLAGS_DP_FORCE_RM_EDID_FALSE            (0x00000000U)
257 #define NV0073_CTRL_DFP_FLAGS_DP_FORCE_RM_EDID_TRUE             (0x00000001U)
258 #define NV0073_CTRL_DFP_FLAGS_DSI_DEVICE_ID                              24:23
259 #define NV0073_CTRL_DFP_FLAGS_DSI_DEVICE_ID_DSI_NONE            (0x00000000U)
260 #define NV0073_CTRL_DFP_FLAGS_DSI_DEVICE_ID_DSI_A               (0x00000001U)
261 #define NV0073_CTRL_DFP_FLAGS_DSI_DEVICE_ID_DSI_B               (0x00000002U)
262 #define NV0073_CTRL_DFP_FLAGS_DSI_DEVICE_ID_DSI_GANGED          (0x00000003U)
263 #define NV0073_CTRL_DFP_FLAGS_DP_POST_CURSOR2_DISABLED                   25:25
264 #define NV0073_CTRL_DFP_FLAGS_DP_POST_CURSOR2_DISABLED_FALSE    (0x00000000U)
265 #define NV0073_CTRL_DFP_FLAGS_DP_POST_CURSOR2_DISABLED_TRUE     (0x00000001U)
266 #define NV0073_CTRL_DFP_FLAGS_DP_PHY_REPEATER_COUNT                      29:26
267 #define NV0073_CTRL_DFP_FLAGS_DYNAMIC_MUX_CAPABLE                        30:30
268 #define NV0073_CTRL_DFP_FLAGS_DYNAMIC_MUX_CAPABLE_FALSE         (0x00000000U)
269 #define NV0073_CTRL_DFP_FLAGS_DYNAMIC_MUX_CAPABLE_TRUE          (0x00000001U)
270 
271 #define NV0073_CTRL_CMD_SYSTEM_GET_ACTIVE                (0x730126U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SYSTEM_INTERFACE_ID << 8) | NV0073_CTRL_SYSTEM_GET_ACTIVE_PARAMS_MESSAGE_ID" */
272 typedef struct NV0073_CTRL_SYSTEM_GET_ACTIVE_PARAMS {
273     NvU32 subDeviceInstance;
274     NvU32 head;
275     NvU32 flags;
276     NvU32 displayId;
277 } NV0073_CTRL_SYSTEM_GET_ACTIVE_PARAMS;
278 
279 typedef NvU32 NV0073_CTRL_DFP_ASSIGN_SOR_LINKCONFIG;
280 
281 typedef struct NV0073_CTRL_DFP_ASSIGN_SOR_INFO {
282     NvU32 displayMask;
283     NvU32 sorType;
284 } NV0073_CTRL_DFP_ASSIGN_SOR_INFO;
285 
286 #define NV0073_CTRL_CMD_DFP_ASSIGN_SOR_MAX_SORS  4U
287 
288 #define NV0073_CTRL_CMD_DFP_ASSIGN_SOR           (0x731152U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DFP_INTERFACE_ID << 8) | NV0073_CTRL_DFP_ASSIGN_SOR_PARAMS_MESSAGE_ID" */
289 typedef struct NV0073_CTRL_DFP_ASSIGN_SOR_PARAMS {
290     NvU32                                 subDeviceInstance;
291     NvU32                                 displayId;
292     NvU8                                  sorExcludeMask;
293     NvU32                                 slaveDisplayId;
294     NV0073_CTRL_DFP_ASSIGN_SOR_LINKCONFIG forceSublinkConfig;
295     NvBool                                bIs2Head1Or;
296     NvU32                                 sorAssignList[NV0073_CTRL_CMD_DFP_ASSIGN_SOR_MAX_SORS];
297     NV0073_CTRL_DFP_ASSIGN_SOR_INFO       sorAssignListWithTag[NV0073_CTRL_CMD_DFP_ASSIGN_SOR_MAX_SORS];
298     NvU8                                  reservedSorMask;
299     NvU32                                 flags;
300 } NV0073_CTRL_DFP_ASSIGN_SOR_PARAMS;
301 
302 #define NV0073_CTRL_DFP_ASSIGN_SOR_FLAGS_AUDIO                                      0:0
303 #define NV0073_CTRL_DFP_ASSIGN_SOR_FLAGS_AUDIO_OPTIMAL                    (0x00000001U)
304 #define NV0073_CTRL_DFP_ASSIGN_SOR_FLAGS_AUDIO_DEFAULT                    (0x00000000U)
305 #define NV0073_CTRL_DFP_ASSIGN_SOR_FLAGS_ACTIVE_SOR_NOT_AUDIO_CAPABLE               1:1
306 #define NV0073_CTRL_DFP_ASSIGN_SOR_FLAGS_ACTIVE_SOR_NOT_AUDIO_CAPABLE_NO  (0x00000000U)
307 #define NV0073_CTRL_DFP_ASSIGN_SOR_FLAGS_ACTIVE_SOR_NOT_AUDIO_CAPABLE_YES (0x00000001U)
308 
309 #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" */
310 
311 #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" */
312 
313 typedef struct NV0073_CTRL_SPECIFIC_BACKLIGHT_BRIGHTNESS_PARAMS {
314     NvU32  subDeviceInstance;
315     NvU32  displayId;
316     NvU32  brightness;
317     NvBool bUncalibrated;
318 } NV0073_CTRL_SPECIFIC_BACKLIGHT_BRIGHTNESS_PARAMS;
319 
320 #define NV0073_CTRL_CMD_DFP_SET_ELD_AUDIO_CAPS                         (0x731144U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DFP_INTERFACE_ID << 8) | NV0073_CTRL_DFP_SET_ELD_AUDIO_CAP_PARAMS_MESSAGE_ID" */
321 
322 #define NV0073_CTRL_DFP_ELD_AUDIO_CAPS_ELD_BUFFER                      96U
323 
324 typedef struct NV0073_CTRL_DFP_SET_ELD_AUDIO_CAP_PARAMS {
325     NvU32 subDeviceInstance;
326     NvU32 displayId;
327     NvU32 numELDSize;
328     NvU8  bufferELD[NV0073_CTRL_DFP_ELD_AUDIO_CAPS_ELD_BUFFER];
329     NvU32 maxFreqSupported;
330     NvU32 ctrl;
331     NvU32 deviceEntry;
332 } NV0073_CTRL_DFP_SET_ELD_AUDIO_CAP_PARAMS;
333 
334 #define NV0073_CTRL_DFP_ELD_AUDIO_CAPS_CTRL_PD                                     0:0
335 #define NV0073_CTRL_DFP_ELD_AUDIO_CAPS_CTRL_PD_FALSE              (0x00000000U)
336 #define NV0073_CTRL_DFP_ELD_AUDIO_CAPS_CTRL_PD_TRUE               (0x00000001U)
337 #define NV0073_CTRL_DFP_ELD_AUDIO_CAPS_CTRL_ELDV                                   1:1
338 #define NV0073_CTRL_DFP_ELD_AUDIO_CAPS_CTRL_ELDV_FALSE            (0x00000000U)
339 #define NV0073_CTRL_DFP_ELD_AUDIO_CAPS_CTRL_ELDV_TRUE             (0x00000001U)
340 
341 #define NV0073_CTRL_SPECIFIC_GET_EDID_MAX_EDID_BYTES 2048U
342 
343 #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" */
344 typedef struct NV0073_CTRL_SPECIFIC_GET_EDID_V2_PARAMS {
345     NvU32 subDeviceInstance;
346     NvU32 displayId;
347     NvU32 bufferSize;
348     NvU32 flags;
349     NvU8  edidBuffer[NV0073_CTRL_SPECIFIC_GET_EDID_MAX_EDID_BYTES];
350 } NV0073_CTRL_SPECIFIC_GET_EDID_V2_PARAMS;
351 
352 #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" */
353 typedef struct NV0073_CTRL_SPECIFIC_SET_HDMI_ENABLE_PARAMS {
354     NvU8  subDeviceInstance;
355     NvU32 displayId;
356     NvU8  enable;
357 } NV0073_CTRL_SPECIFIC_SET_HDMI_ENABLE_PARAMS;
358 
359 #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" */
360 typedef struct NV0073_CTRL_SPECIFIC_SET_HDMI_SINK_CAPS_PARAMS {
361     NvU32 subDeviceInstance;
362     NvU32 displayId;
363     NvU32 caps;
364 } NV0073_CTRL_SPECIFIC_SET_HDMI_SINK_CAPS_PARAMS;
365 
366 #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" */
367 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_GT_340MHZ_CLOCK_SUPPORTED                           0:0
368 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_GT_340MHZ_CLOCK_SUPPORTED_FALSE       (0x00000000U)
369 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_GT_340MHZ_CLOCK_SUPPORTED_TRUE        (0x00000001U)
370 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_LTE_340MHZ_SCRAMBLING_SUPPORTED                     1:1
371 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_LTE_340MHZ_SCRAMBLING_SUPPORTED_FALSE (0x00000000U)
372 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_LTE_340MHZ_SCRAMBLING_SUPPORTED_TRUE  (0x00000001U)
373 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_SCDC_SUPPORTED                                      2:2
374 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_SCDC_SUPPORTED_FALSE                  (0x00000000U)
375 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_SCDC_SUPPORTED_TRUE                   (0x00000001U)
376 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED                              5:3
377 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_NONE           (0x00000000U)
378 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_3LANES_3G      (0x00000001U)
379 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_3LANES_6G      (0x00000002U)
380 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_4LANES_6G      (0x00000003U)
381 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_4LANES_8G      (0x00000004U)
382 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_4LANES_10G     (0x00000005U)
383 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_MAX_FRL_RATE_SUPPORTED_4LANES_12G     (0x00000006U)
384 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_12_SUPPORTED                                    6:6
385 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_12_SUPPORTED_FALSE                (0x00000000U)
386 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_12_SUPPORTED_TRUE                 (0x00000001U)
387 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED                          9:7
388 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_NONE       (0x00000000U)
389 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_3LANES_3G  (0x00000001U)
390 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_3LANES_6G  (0x00000002U)
391 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_4LANES_6G  (0x00000003U)
392 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_4LANES_8G  (0x00000004U)
393 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_4LANES_10G (0x00000005U)
394 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_SINK_CAPS_DSC_MAX_FRL_RATE_SUPPORTED_4LANES_12G (0x00000006U)
395 
396 #define NV0073_CTRL_SET_OD_MAX_PACKET_SIZE     36U
397 
398 #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" */
399 typedef struct NV0073_CTRL_SPECIFIC_SET_OD_PACKET_PARAMS {
400     NvU32  subDeviceInstance;
401     NvU32  displayId;
402     NvU32  transmitControl;
403     NvU32  packetSize;
404     NvU32  targetHead;
405     NvBool bUsePsrHeadforSdp;
406     NvU8   aPacket[NV0073_CTRL_SET_OD_MAX_PACKET_SIZE];
407 } NV0073_CTRL_SPECIFIC_SET_OD_PACKET_PARAMS;
408 
409 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ENABLE                                     0:0
410 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ENABLE_NO                      (0x0000000U)
411 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ENABLE_YES                     (0x0000001U)
412 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_OTHER_FRAME                                1:1
413 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_OTHER_FRAME_DISABLE            (0x0000000U)
414 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_OTHER_FRAME_ENABLE             (0x0000001U)
415 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SINGLE_FRAME                               2:2
416 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SINGLE_FRAME_DISABLE           (0x0000000U)
417 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SINGLE_FRAME_ENABLE            (0x0000001U)
418 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ON_HBLANK                                 3:3
419 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ON_HBLANK_DISABLE              (0x0000000U)
420 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_ON_HBLANK_ENABLE               (0x0000001U)
421 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_IMMEDIATE                                  4:4
422 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_IMMEDIATE_DISABLE              (0x0000000U)
423 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_IMMEDIATE_ENABLE               (0x0000001U)
424 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_VIDEO_FMT                                  5:5
425 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_VIDEO_FMT_SW_CONTROLLED        (0x0000000U)
426 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_VIDEO_FMT_HW_CONTROLLED        (0x0000001U)
427 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_STEREO_POLARITY                        6:6
428 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_STEREO_POLARITY_FALSE      (0x0000000U)
429 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_STEREO_POLARITY_TRUE       (0x0000001U)
430 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING                   7:7
431 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING_FALSE (0x0000000U)
432 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_SET_SELF_REFRESH_SETTING_TRUE  (0x0000001U)
433 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_GEN_INFOFRAME_MODE                         9:8
434 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_GEN_INFOFRAME_MODE_INFOFRAME0  (0x0000000U)
435 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_GEN_INFOFRAME_MODE_INFOFRAME1  (0x0000001U)
436 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE                     31:31
437 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE_NO        (0x0000000U)
438 #define NV0073_CTRL_SPECIFIC_SET_OD_PACKET_TRANSMIT_CONTROL_RESERVED_LEGACY_MODE_YES       (0x0000001U)
439 
440 #define NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_AUDIO_MUTESTREAM (0x730275U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_SPECIFIC_INTERFACE_ID << 8) | NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_AUDIO_MUTESTREAM_PARAMS_MESSAGE_ID" */
441 
442 typedef struct NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_AUDIO_MUTESTREAM_PARAMS {
443     NvU8  subDeviceInstance;
444     NvU32 displayId;
445     NvU8  mute;
446 } NV0073_CTRL_CMD_SPECIFIC_SET_HDMI_AUDIO_MUTESTREAM_PARAMS;
447 
448 #define NV0073_CTRL_DP_AUXCH_MAX_DATA_SIZE 16U
449 
450 #define NV0073_CTRL_CMD_DP_AUXCH_CTRL      (0x731341U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_DP_AUXCH_CTRL_PARAMS_MESSAGE_ID" */
451 typedef struct NV0073_CTRL_DP_AUXCH_CTRL_PARAMS {
452     NvU32  subDeviceInstance;
453     NvU32  displayId;
454     NvBool bAddrOnly;
455     NvU32  cmd;
456     NvU32  addr;
457     NvU8   data[NV0073_CTRL_DP_AUXCH_MAX_DATA_SIZE];
458     NvU32  size;
459     NvU32  replyType;
460     NvU32  retryTimeMs;
461 } NV0073_CTRL_DP_AUXCH_CTRL_PARAMS;
462 
463 #define NV0073_CTRL_DP_AUXCH_CMD_TYPE                          3:3
464 #define NV0073_CTRL_DP_AUXCH_CMD_TYPE_I2C               (0x00000000U)
465 #define NV0073_CTRL_DP_AUXCH_CMD_TYPE_AUX               (0x00000001U)
466 #define NV0073_CTRL_DP_AUXCH_CMD_I2C_MOT                       2:2
467 #define NV0073_CTRL_DP_AUXCH_CMD_I2C_MOT_FALSE          (0x00000000U)
468 #define NV0073_CTRL_DP_AUXCH_CMD_I2C_MOT_TRUE           (0x00000001U)
469 #define NV0073_CTRL_DP_AUXCH_CMD_REQ_TYPE                      1:0
470 #define NV0073_CTRL_DP_AUXCH_CMD_REQ_TYPE_WRITE         (0x00000000U)
471 #define NV0073_CTRL_DP_AUXCH_CMD_REQ_TYPE_READ          (0x00000001U)
472 #define NV0073_CTRL_DP_AUXCH_CMD_REQ_TYPE_WRITE_STATUS  (0x00000002U)
473 
474 #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" */
475 
476 #define NV0073_CTRL_DP_MAX_INDEXED_LINK_RATES        8U
477 
478 typedef struct NV0073_CTRL_CMD_DP_CONFIG_INDEXED_LINK_RATES_PARAMS {
479     // In
480     NvU32 subDeviceInstance;
481     NvU32 displayId;
482     NvU16 linkRateTbl[NV0073_CTRL_DP_MAX_INDEXED_LINK_RATES];
483 
484     // Out
485     NvU8  linkBwTbl[NV0073_CTRL_DP_MAX_INDEXED_LINK_RATES];
486     NvU8  linkBwCount;
487 } NV0073_CTRL_CMD_DP_CONFIG_INDEXED_LINK_RATES_PARAMS;
488 
489 #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" */
490 typedef struct NV0073_CTRL_DP_CTRL_PARAMS {
491     NvU32 subDeviceInstance;
492     NvU32 displayId;
493     NvU32 cmd;
494     NvU32 data;
495     NvU32 err;
496     NvU32 retryTimeMs;
497     NvU32 eightLaneDpcdBaseAddr;
498 } NV0073_CTRL_DP_CTRL_PARAMS;
499 
500 #define NV0073_CTRL_DP_CMD_SET_LANE_COUNT                           0:0
501 #define NV0073_CTRL_DP_CMD_SET_LANE_COUNT_FALSE                         (0x00000000U)
502 #define NV0073_CTRL_DP_CMD_SET_LANE_COUNT_TRUE                          (0x00000001U)
503 #define NV0073_CTRL_DP_CMD_SET_LINK_BW                              1:1
504 #define NV0073_CTRL_DP_CMD_SET_LINK_BW_FALSE                            (0x00000000U)
505 #define NV0073_CTRL_DP_CMD_SET_LINK_BW_TRUE                             (0x00000001U)
506 #define NV0073_CTRL_DP_CMD_DISABLE_DOWNSPREAD                       2:2
507 #define NV0073_CTRL_DP_CMD_DISABLE_DOWNSPREAD_FALSE                     (0x00000000U)
508 #define NV0073_CTRL_DP_CMD_DISABLE_DOWNSPREAD_TRUE                      (0x00000001U)
509 #define NV0073_CTRL_DP_CMD_UNUSED                                   3:3
510 #define NV0073_CTRL_DP_CMD_SET_FORMAT_MODE                          4:4
511 #define NV0073_CTRL_DP_CMD_SET_FORMAT_MODE_SINGLE_STREAM                (0x00000000U)
512 #define NV0073_CTRL_DP_CMD_SET_FORMAT_MODE_MULTI_STREAM                 (0x00000001U)
513 #define NV0073_CTRL_DP_CMD_FAST_LINK_TRAINING                       5:5
514 #define NV0073_CTRL_DP_CMD_FAST_LINK_TRAINING_NO                        (0x00000000U)
515 #define NV0073_CTRL_DP_CMD_FAST_LINK_TRAINING_YES                       (0x00000001U)
516 #define NV0073_CTRL_DP_CMD_NO_LINK_TRAINING                         6:6
517 #define NV0073_CTRL_DP_CMD_NO_LINK_TRAINING_NO                          (0x00000000U)
518 #define NV0073_CTRL_DP_CMD_NO_LINK_TRAINING_YES                         (0x00000001U)
519 #define NV0073_CTRL_DP_CMD_SET_ENHANCED_FRAMING                     7:7
520 #define NV0073_CTRL_DP_CMD_SET_ENHANCED_FRAMING_FALSE                   (0x00000000U)
521 #define NV0073_CTRL_DP_CMD_SET_ENHANCED_FRAMING_TRUE                    (0x00000001U)
522 #define NV0073_CTRL_DP_CMD_USE_DOWNSPREAD_SETTING                   8:8
523 #define NV0073_CTRL_DP_CMD_USE_DOWNSPREAD_SETTING_DEFAULT               (0x00000000U)
524 #define NV0073_CTRL_DP_CMD_USE_DOWNSPREAD_SETTING_FORCE                 (0x00000001U)
525 #define NV0073_CTRL_DP_CMD_SKIP_HW_PROGRAMMING                      9:9
526 #define NV0073_CTRL_DP_CMD_SKIP_HW_PROGRAMMING_NO                       (0x00000000U)
527 #define NV0073_CTRL_DP_CMD_SKIP_HW_PROGRAMMING_YES                      (0x00000001U)
528 #define NV0073_CTRL_DP_CMD_POST_LT_ADJ_REQ_GRANTED                10:10
529 #define NV0073_CTRL_DP_CMD_POST_LT_ADJ_REQ_GRANTED_NO                   (0x00000000U)
530 #define NV0073_CTRL_DP_CMD_POST_LT_ADJ_REQ_GRANTED_YES                  (0x00000001U)
531 #define NV0073_CTRL_DP_CMD_FAKE_LINK_TRAINING                     12:11
532 #define NV0073_CTRL_DP_CMD_FAKE_LINK_TRAINING_NO                        (0x00000000U)
533 #define NV0073_CTRL_DP_CMD_FAKE_LINK_TRAINING_DONOT_TOGGLE_TRANSMISSION (0x00000001U)
534 #define NV0073_CTRL_DP_CMD_FAKE_LINK_TRAINING_TOGGLE_TRANSMISSION_ON    (0x00000002U)
535 #define NV0073_CTRL_DP_CMD_TRAIN_PHY_REPEATER                     13:13
536 #define NV0073_CTRL_DP_CMD_TRAIN_PHY_REPEATER_NO                        (0x00000000U)
537 #define NV0073_CTRL_DP_CMD_TRAIN_PHY_REPEATER_YES                       (0x00000001U)
538 #define NV0073_CTRL_DP_CMD_FALLBACK_CONFIG                        14:14
539 #define NV0073_CTRL_DP_CMD_FALLBACK_CONFIG_FALSE                        (0x00000000U)
540 #define NV0073_CTRL_DP_CMD_FALLBACK_CONFIG_TRUE                         (0x00000001U)
541 #define NV0073_CTRL_DP_CMD_ENABLE_FEC                             15:15
542 #define NV0073_CTRL_DP_CMD_ENABLE_FEC_FALSE                             (0x00000000U)
543 #define NV0073_CTRL_DP_CMD_ENABLE_FEC_TRUE                              (0x00000001U)
544 #define NV0073_CTRL_DP_CMD_BANDWIDTH_TEST                         29:29
545 #define NV0073_CTRL_DP_CMD_BANDWIDTH_TEST_NO                            (0x00000000U)
546 #define NV0073_CTRL_DP_CMD_BANDWIDTH_TEST_YES                           (0x00000001U)
547 #define NV0073_CTRL_DP_CMD_LINK_CONFIG_CHECK_DISABLE              30:30
548 #define NV0073_CTRL_DP_CMD_LINK_CONFIG_CHECK_DISABLE_FALSE              (0x00000000U)
549 #define NV0073_CTRL_DP_CMD_LINK_CONFIG_CHECK_DISABLE_TRUE               (0x00000001U)
550 #define NV0073_CTRL_DP_CMD_DISABLE_LINK_CONFIG                    31:31
551 #define NV0073_CTRL_DP_CMD_DISABLE_LINK_CONFIG_FALSE                    (0x00000000U)
552 #define NV0073_CTRL_DP_CMD_DISABLE_LINK_CONFIG_TRUE                     (0x00000001U)
553 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE                                   3:0
554 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE_MONITOR_ENABLE_BEGIN     (0x00000000U)
555 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE_MONITOR_ENABLE_CHALLENGE (0x00000001U)
556 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE_MONITOR_ENABLE_CHECK     (0x00000002U)
557 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE_DRIVER_ENABLE_BEGIN      (0x00000003U)
558 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE_DRIVER_ENABLE_CHALLENGE  (0x00000004U)
559 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE_DRIVER_ENABLE_CHECK      (0x00000005U)
560 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE_RESET_MONITOR            (0x00000006U)
561 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE_INIT_PUBLIC_INFO         (0x00000007U)
562 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE_GET_PUBLIC_INFO          (0x00000008U)
563 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_CMD_STAGE_STATUS_CHECK             (0x00000009U)
564 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_STATUS_OK                          (0x00000000U)
565 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_STATUS_PENDING                     (0x80000001U)
566 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_STATUS_READ_ERROR                  (0x80000002U)
567 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_STATUS_WRITE_ERROR                 (0x80000003U)
568 #define NV0073_CTRL_DP_CMD_ENABLE_VRR_STATUS_DEVICE_ERROR                (0x80000004U)
569 
570 #define NV0073_CTRL_DP_DATA_SET_LANE_COUNT                          4:0
571 #define NV0073_CTRL_DP_DATA_SET_LANE_COUNT_0                            (0x00000000U)
572 #define NV0073_CTRL_DP_DATA_SET_LANE_COUNT_1                            (0x00000001U)
573 #define NV0073_CTRL_DP_DATA_SET_LANE_COUNT_2                            (0x00000002U)
574 #define NV0073_CTRL_DP_DATA_SET_LANE_COUNT_4                            (0x00000004U)
575 #define NV0073_CTRL_DP_DATA_SET_LANE_COUNT_8                            (0x00000008U)
576 #define NV0073_CTRL_DP_DATA_SET_LINK_BW                            15:8
577 #define NV0073_CTRL_DP_DATA_SET_LINK_BW_1_62GBPS                        (0x00000006U)
578 #define NV0073_CTRL_DP_DATA_SET_LINK_BW_2_16GBPS                        (0x00000008U)
579 #define NV0073_CTRL_DP_DATA_SET_LINK_BW_2_43GBPS                        (0x00000009U)
580 #define NV0073_CTRL_DP_DATA_SET_LINK_BW_2_70GBPS                        (0x0000000AU)
581 #define NV0073_CTRL_DP_DATA_SET_LINK_BW_3_24GBPS                        (0x0000000CU)
582 #define NV0073_CTRL_DP_DATA_SET_LINK_BW_4_32GBPS                        (0x00000010U)
583 #define NV0073_CTRL_DP_DATA_SET_LINK_BW_5_40GBPS                        (0x00000014U)
584 #define NV0073_CTRL_DP_DATA_SET_LINK_BW_8_10GBPS                        (0x0000001EU)
585 #define NV0073_CTRL_DP_DATA_SET_ENHANCED_FRAMING                  18:18
586 #define NV0073_CTRL_DP_DATA_SET_ENHANCED_FRAMING_NO                     (0x00000000U)
587 #define NV0073_CTRL_DP_DATA_SET_ENHANCED_FRAMING_YES                    (0x00000001U)
588 #define NV0073_CTRL_DP_DATA_TARGET                                22:19
589 #define NV0073_CTRL_DP_DATA_TARGET_SINK                                 (0x00000000U)
590 #define NV0073_CTRL_DP_DATA_TARGET_PHY_REPEATER_0                       (0x00000001U)
591 #define NV0073_CTRL_DP_DATA_TARGET_PHY_REPEATER_1                       (0x00000002U)
592 #define NV0073_CTRL_DP_DATA_TARGET_PHY_REPEATER_2                       (0x00000003U)
593 #define NV0073_CTRL_DP_DATA_TARGET_PHY_REPEATER_3                       (0x00000004U)
594 #define NV0073_CTRL_DP_DATA_TARGET_PHY_REPEATER_4                       (0x00000005U)
595 #define NV0073_CTRL_DP_DATA_TARGET_PHY_REPEATER_5                       (0x00000006U)
596 #define NV0073_CTRL_DP_DATA_TARGET_PHY_REPEATER_6                       (0x00000007U)
597 #define NV0073_CTRL_DP_DATA_TARGET_PHY_REPEATER_7                       (0x00000008U)
598 
599 #define NV0073_CTRL_CMD_DP_SET_LANE_DATA (0x731346U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_DP_SET_LANE_DATA_PARAMS_MESSAGE_ID" */
600 
601 #define NV0073_CTRL_MAX_LANES                                           8U
602 
603 typedef struct NV0073_CTRL_DP_LANE_DATA_PARAMS {
604     NvU32 subDeviceInstance;
605     NvU32 displayId;
606     NvU32 numLanes;
607     NvU32 data[NV0073_CTRL_MAX_LANES];
608 } NV0073_CTRL_DP_LANE_DATA_PARAMS;
609 
610 #define NV0073_CTRL_DP_LANE_DATA_PREEMPHASIS                   1:0
611 #define NV0073_CTRL_DP_LANE_DATA_PREEMPHASIS_NONE    (0x00000000U)
612 #define NV0073_CTRL_DP_LANE_DATA_PREEMPHASIS_LEVEL1  (0x00000001U)
613 #define NV0073_CTRL_DP_LANE_DATA_PREEMPHASIS_LEVEL2  (0x00000002U)
614 #define NV0073_CTRL_DP_LANE_DATA_PREEMPHASIS_LEVEL3  (0x00000003U)
615 #define NV0073_CTRL_DP_LANE_DATA_DRIVECURRENT                  3:2
616 #define NV0073_CTRL_DP_LANE_DATA_DRIVECURRENT_LEVEL0 (0x00000000U)
617 #define NV0073_CTRL_DP_LANE_DATA_DRIVECURRENT_LEVEL1 (0x00000001U)
618 #define NV0073_CTRL_DP_LANE_DATA_DRIVECURRENT_LEVEL2 (0x00000002U)
619 #define NV0073_CTRL_DP_LANE_DATA_DRIVECURRENT_LEVEL3 (0x00000003U)
620 
621 #define NV0073_CTRL_CMD_DP_TOPOLOGY_ALLOCATE_DISPLAYID  (0x73135bU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_CMD_DP_TOPOLOGY_ALLOCATE_DISPLAYID_PARAMS_MESSAGE_ID" */
622 
623 typedef struct NV0073_CTRL_CMD_DP_TOPOLOGY_ALLOCATE_DISPLAYID_PARAMS {
624     NvU32  subDeviceInstance;
625     NvU32  displayId;
626     NvU32  preferredDisplayId;
627 
628     NvBool force;
629     NvBool useBFM;
630 
631     NvU32  displayIdAssigned;
632     NvU32  allDisplayMask;
633 } NV0073_CTRL_CMD_DP_TOPOLOGY_ALLOCATE_DISPLAYID_PARAMS;
634 
635 #define NV0073_CTRL_CMD_DP_TOPOLOGY_FREE_DISPLAYID (0x73135cU) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_CMD_DP_TOPOLOGY_FREE_DISPLAYID_PARAMS_MESSAGE_ID" */
636 
637 typedef struct NV0073_CTRL_CMD_DP_TOPOLOGY_FREE_DISPLAYID_PARAMS {
638     NvU32 subDeviceInstance;
639     NvU32 displayId;
640 } NV0073_CTRL_CMD_DP_TOPOLOGY_FREE_DISPLAYID_PARAMS;
641 
642 #define NV0073_CTRL_CMD_DP_CONFIG_STREAM                   (0x731362U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DP_INTERFACE_ID << 8) | NV0073_CTRL_CMD_DP_CONFIG_STREAM_PARAMS_MESSAGE_ID" */
643 
644 typedef struct NV0073_CTRL_CMD_DP_CONFIG_STREAM_PARAMS {
645     NvU32  subDeviceInstance;
646     NvU32  head;
647     NvU32  sorIndex;
648     NvU32  dpLink;
649 
650     NvBool bEnableOverride;
651     NvBool bMST;
652     NvU32  singleHeadMultistreamMode;
653     NvU32  hBlankSym;
654     NvU32  vBlankSym;
655     NvU32  colorFormat;
656     NvBool bEnableTwoHeadOneOr;
657 
658     struct {
659         NvU32  slotStart;
660         NvU32  slotEnd;
661         NvU32  PBN;
662         NvU32  Timeslice;
663         NvBool sendACT;          // deprecated -Use NV0073_CTRL_CMD_DP_SEND_ACT
664         NvU32  singleHeadMSTPipeline;
665         NvBool bEnableAudioOverRightPanel;
666     } MST;
667 
668     struct {
669         NvBool bEnhancedFraming;
670         NvU32  tuSize;
671         NvU32  waterMark;
672         NvU32  actualPclkHz;     // deprecated  -Use MvidWarParams
673         NvU32  linkClkFreqHz;    // deprecated  -Use MvidWarParams
674         NvBool bEnableAudioOverRightPanel;
675         struct {
676             NvU32  activeCnt;
677             NvU32  activeFrac;
678             NvU32  activePolarity;
679             NvBool mvidWarEnabled;
680             struct {
681                 NvU32 actualPclkHz;
682                 NvU32 linkClkFreqHz;
683             } MvidWarParams;
684         } Legacy;
685     } SST;
686 } NV0073_CTRL_CMD_DP_CONFIG_STREAM_PARAMS;
687 
688 #define NV0073_CTRL_CMD_DFP_SET_AUDIO_ENABLE                (0x731150U) /* finn: Evaluated from "(FINN_NV04_DISPLAY_COMMON_DFP_INTERFACE_ID << 8) | NV0073_CTRL_DFP_SET_AUDIO_ENABLE_PARAMS_MESSAGE_ID" */
689 typedef struct NV0073_CTRL_DFP_SET_AUDIO_ENABLE_PARAMS {
690     NvU32  subDeviceInstance;
691     NvU32  displayId;
692     NvBool enable;
693 } NV0073_CTRL_DFP_SET_AUDIO_ENABLE_PARAMS;
694 
695 #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" */
696 typedef struct NV0073_CTRL_DP_SET_AUDIO_MUTESTREAM_PARAMS {
697     NvU32 subDeviceInstance;
698     NvU32 displayId;
699     NvU32 mute;
700 } NV0073_CTRL_DP_SET_AUDIO_MUTESTREAM_PARAMS;
701 
702 #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" */
703 typedef struct NV2080_CTRL_INTERNAL_DISPLAY_CHANNEL_PUSHBUFFER_PARAMS {
704     NvU32  addressSpace;
705     NV_DECLARE_ALIGNED(NvU64 physicalAddr, 8);
706     NV_DECLARE_ALIGNED(NvU64 limit, 8);
707     NvU32  cacheSnoop;
708     NvU32  hclass;
709     NvU32  channelInstance;
710     NvBool valid;
711 } NV2080_CTRL_INTERNAL_DISPLAY_CHANNEL_PUSHBUFFER_PARAMS;
712 
713 #define ADDR_SYSMEM     (1)         // System memory (PCI)
714 
715 #define ADDR_FBMEM      2         // Frame buffer memory space
716 
717 typedef struct
718 {
719     NvV32    channelInstance;            // One of the n channel instances of a given channel type.
720                                          // All PIO channels have two instances (one per head).
721     NvHandle hObjectNotify;              // ctx dma handle for an area (of type NvNotification defined in sdk/nvidia/inc/nvtypes.h) where RM can write errors.
722     NvP64    pControl NV_ALIGN_BYTES(8); // pControl gives virt addr of control region for PIO channel
723 } NV50VAIO_CHANNELPIO_ALLOCATION_PARAMETERS;
724 
725 typedef struct
726 {
727     NvV32    channelInstance;            // One of the n channel instances of a given channel type.
728                                          // Note that core channel has only one instance
729                                          // while all others have two (one per head).
730     NvHandle hObjectBuffer;              // ctx dma handle for DMA push buffer
731     NvHandle hObjectNotify;              // ctx dma handle for an area (of type NvNotification defined in sdk/nvidia/inc/nvtypes.h) where RM can write errors/notifications
732     NvU32    offset;                     // Initial offset for put/get, usually zero.
733     NvP64    pControl NV_ALIGN_BYTES(8); // pControl gives virt addr of UDISP GET/PUT regs
734 
735     NvU32    flags;
736 #define NV50VAIO_CHANNELDMA_ALLOCATION_FLAGS_CONNECT_PB_AT_GRAB                1:1
737 #define NV50VAIO_CHANNELDMA_ALLOCATION_FLAGS_CONNECT_PB_AT_GRAB_YES            0x00000000
738 #define NV50VAIO_CHANNELDMA_ALLOCATION_FLAGS_CONNECT_PB_AT_GRAB_NO             0x00000001
739 
740 } NV50VAIO_CHANNELDMA_ALLOCATION_PARAMETERS;
741 #endif
742