xref: /linux/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/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/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