1*1739a20eSAndy Ritger //*****************************************************************************
2*1739a20eSAndy Ritger //
3*1739a20eSAndy Ritger //  SPDX-FileCopyrightText: Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
4*1739a20eSAndy Ritger //  SPDX-License-Identifier: MIT
5*1739a20eSAndy Ritger //
6*1739a20eSAndy Ritger //  Permission is hereby granted, free of charge, to any person obtaining a
7*1739a20eSAndy Ritger //  copy of this software and associated documentation files (the "Software"),
8*1739a20eSAndy Ritger //  to deal in the Software without restriction, including without limitation
9*1739a20eSAndy Ritger //  the rights to use, copy, modify, merge, publish, distribute, sublicense,
10*1739a20eSAndy Ritger //  and/or sell copies of the Software, and to permit persons to whom the
11*1739a20eSAndy Ritger //  Software is furnished to do so, subject to the following conditions:
12*1739a20eSAndy Ritger //
13*1739a20eSAndy Ritger //  The above copyright notice and this permission notice shall be included in
14*1739a20eSAndy Ritger //  all copies or substantial portions of the Software.
15*1739a20eSAndy Ritger //
16*1739a20eSAndy Ritger //  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17*1739a20eSAndy Ritger //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18*1739a20eSAndy Ritger //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19*1739a20eSAndy Ritger //  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20*1739a20eSAndy Ritger //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21*1739a20eSAndy Ritger //  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22*1739a20eSAndy Ritger //  DEALINGS IN THE SOFTWARE.
23*1739a20eSAndy Ritger //
24*1739a20eSAndy Ritger //  File:       displayid.h
25*1739a20eSAndy Ritger //
26*1739a20eSAndy Ritger //  Purpose:    the template for DisplayID parsing (future replacement for EDID)
27*1739a20eSAndy Ritger //
28*1739a20eSAndy Ritger //*****************************************************************************
29*1739a20eSAndy Ritger 
30*1739a20eSAndy Ritger 
31*1739a20eSAndy Ritger #ifndef __DISPLAYID_H_
32*1739a20eSAndy Ritger #define __DISPLAYID_H_
33*1739a20eSAndy Ritger 
34*1739a20eSAndy Ritger #include "nvtiming.h"
35*1739a20eSAndy Ritger 
36*1739a20eSAndy Ritger // The structures below must be tightly packed, in order to correctly
37*1739a20eSAndy Ritger // overlay on the EDID DisplayID extension block bytes.  Both MSVC and
38*1739a20eSAndy Ritger // gcc support the pack() pragma for this.
39*1739a20eSAndy Ritger 
40*1739a20eSAndy Ritger #if defined(__GNUC__) || defined(_MSC_VER)
41*1739a20eSAndy Ritger #  define __SUPPORTS_PACK_PRAGMA 1
42*1739a20eSAndy Ritger #else
43*1739a20eSAndy Ritger #  error "unrecognized compiler: displayid structures must be tightly packed"
44*1739a20eSAndy Ritger #endif
45*1739a20eSAndy Ritger 
46*1739a20eSAndy Ritger #ifdef __SUPPORTS_PACK_PRAGMA
47*1739a20eSAndy Ritger #pragma pack(1)
48*1739a20eSAndy Ritger #endif
49*1739a20eSAndy Ritger 
50*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_SECTION
51*1739a20eSAndy Ritger {
52*1739a20eSAndy Ritger     NvU8 version; // displayid version
53*1739a20eSAndy Ritger     NvU8 section_bytes; // length of this displayID section excluding mandatory bytes [0, 251]
54*1739a20eSAndy Ritger 
55*1739a20eSAndy Ritger     NvU8 product_type;    // NVT_DISPLAYID_PROD_X
56*1739a20eSAndy Ritger     NvU8 extension_count;
57*1739a20eSAndy Ritger 
58*1739a20eSAndy Ritger     NvU8 data[NVT_DISPLAYID_SECTION_MAX_SIZE]; // data blocks. Note, the length of this structure may
59*1739a20eSAndy Ritger                                                     // exceed valid memory, as DisplayID has variable length
60*1739a20eSAndy Ritger 
61*1739a20eSAndy Ritger } DISPLAYID_SECTION;
62*1739a20eSAndy Ritger 
63*1739a20eSAndy Ritger #define NVT_DISPLAYID_VER_1_1 0x101
64*1739a20eSAndy Ritger 
65*1739a20eSAndy Ritger #define NVT_DISPLAYID_PROD_EXTENSION          0 // Extension (product type not declared)
66*1739a20eSAndy Ritger #define NVT_DISPLAYID_PROD_TEST               1 // Test Structure/Test Equipment
67*1739a20eSAndy Ritger #define NVT_DISPLAYID_PROD_DISPLAY_PANEL      2 // Display Panel, LCD, or PDP module, etc.
68*1739a20eSAndy Ritger #define NVT_DISPLAYID_PROD_STANDALONE_MONITOR 3 // Standalone display device, desktop monitor, TV monitor
69*1739a20eSAndy Ritger #define NVT_DISPLAYID_PROD_RECEIVER           4 // Television receiver or display product capable of RF signals
70*1739a20eSAndy Ritger #define NVT_DISPLAYID_PROD_REPEATER           5 // Repeater/translator that is not intended as display device
71*1739a20eSAndy Ritger #define NVT_DISPLAYID_PROD_DIRECT_DRIVE       6 // Direct Drive monitor
72*1739a20eSAndy Ritger #define NVT_DISPLAYID_PROD_MAX_NUMBER         6 // max product number
73*1739a20eSAndy Ritger 
74*1739a20eSAndy Ritger 
75*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_DATA_BLOCK_HEADER
76*1739a20eSAndy Ritger {
77*1739a20eSAndy Ritger     NvU8 type; // identification
78*1739a20eSAndy Ritger     NvU8 revision;
79*1739a20eSAndy Ritger     NvU8 data_bytes; // number of payload bytes [0, 248]
80*1739a20eSAndy Ritger 
81*1739a20eSAndy Ritger } DISPLAYID_DATA_BLOCK_HEADER;
82*1739a20eSAndy Ritger 
83*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_PRODUCT_IDENTITY  0 // Product Identification block
84*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_DISPLAY_PARAM     1 // Display Parameters block
85*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_COLOR_CHAR        2 // Color Characteristics block
86*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_TIMING_1          3 // Type 1 Detailed Timing block
87*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_TIMING_2          4 // Type 2 Detailed Timing block
88*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_TIMING_3          5 // Type 3 Short Timing block
89*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_TIMING_4          6 // Type 4 DMT ID Timing block
90*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_TIMING_VESA       7 // VESA Standard Timing block
91*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_TIMING_CEA        8 // CEA Standard Timing block
92*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_RANGE_LIMITS      9 // Video Timing Range Limits block
93*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_SERIAL_NUMBER     10 // Product Serial Number block
94*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_ASCII_STRING      11 // General Purpose ASCII String block
95*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_DEVICE_DATA       12 // Display Device Data block
96*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_INTERFACE_POWER   13 // Interface Power Sequencing block
97*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_TRANSFER_CHAR     14 // Transfer Characteristics block
98*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_DISPLAY_INTERFACE 15 // Display Interface Data Block
99*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_STEREO            16 // Stereo Data Block
100*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_TIMING_5          17 // Type V Timing Short Descriptor
101*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_TILEDDISPLAY      18 // Tiled Display Data Block
102*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_DISPLAY_INTERFACE_FEATURES 0X26 // DisplayID2.0 Display Interface Features Data Block                                                      //
103*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_CTA_DATA        0x81 // DIsplay ID data block
104*1739a20eSAndy Ritger #define NVT_DISPLAYID_BLOCK_TYPE_VENDOR_SPEC     0x7F // Vendor Specific Data Block
105*1739a20eSAndy Ritger 
106*1739a20eSAndy Ritger #define NVT_DISPLAYID_PRODUCT_IDENTITY_MIN_LEN 12
107*1739a20eSAndy Ritger #define NVT_DISPLAYID_PRODUCT_IDENTITY_MAX_STRING_LEN 0xE9
108*1739a20eSAndy Ritger 
109*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_PROD_IDENTIFICATION_BLOCK
110*1739a20eSAndy Ritger {
111*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
112*1739a20eSAndy Ritger 
113*1739a20eSAndy Ritger     NvU8 vendor[3];
114*1739a20eSAndy Ritger     NvU16 product_code;
115*1739a20eSAndy Ritger     NvU32 serial_number;
116*1739a20eSAndy Ritger     NvU8 model_tag;
117*1739a20eSAndy Ritger     NvU8 model_year;
118*1739a20eSAndy Ritger     NvU8 productid_string_size;
119*1739a20eSAndy Ritger 
120*1739a20eSAndy Ritger     NvU8 productid_string[NVT_DISPLAYID_PRODUCT_IDENTITY_MAX_STRING_LEN];
121*1739a20eSAndy Ritger } DISPLAYID_PROD_IDENTIFICATION_BLOCK;
122*1739a20eSAndy Ritger 
123*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_DISPLAY_PARAM_BLOCK
124*1739a20eSAndy Ritger {
125*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
126*1739a20eSAndy Ritger     NvU16 horizontal_image_size;
127*1739a20eSAndy Ritger     NvU16 vertical_image_size;
128*1739a20eSAndy Ritger     NvU16 horizontal_pixel_count;
129*1739a20eSAndy Ritger     NvU16 vertical_pixel_count;
130*1739a20eSAndy Ritger 
131*1739a20eSAndy Ritger     NvU8 feature;
132*1739a20eSAndy Ritger 
133*1739a20eSAndy Ritger     NvU8 transfer_char_gamma;
134*1739a20eSAndy Ritger     NvU8 aspect_ratio;
135*1739a20eSAndy Ritger     NvU8 color_bit_depth;
136*1739a20eSAndy Ritger } DISPLAYID_DISPLAY_PARAM_BLOCK;
137*1739a20eSAndy Ritger 
138*1739a20eSAndy Ritger #define NVT_DISPLAYID_DISPLAY_PARAM_BLOCK_LEN 0x0C
139*1739a20eSAndy Ritger 
140*1739a20eSAndy Ritger #define NVT_DISPLAYID_DISPLAY_PARAM_SUPPORT_AUDIO        7:7
141*1739a20eSAndy Ritger #define NVT_DISPLAYID_DISPLAY_PARAM_SEPARATE_AUDIO       6:6
142*1739a20eSAndy Ritger #define NVT_DISPLAYID_DISPLAY_PARAM_AUDIO_INPUT_OVERRIDE 5:5
143*1739a20eSAndy Ritger #define NVT_DISPLAYID_DISPLAY_PARAM_POWER_MANAGEMENT     4:4
144*1739a20eSAndy Ritger #define NVT_DISPLAYID_DISPLAY_PARAM_FIXED_TIMING         3:3
145*1739a20eSAndy Ritger #define NVT_DISPLAYID_DISPLAY_PARAM_FIXED_PIXEL_FORMAT   2:2
146*1739a20eSAndy Ritger #define NVT_DISPLAYID_DISPLAY_PARAM_DEINTERLACING        0:0
147*1739a20eSAndy Ritger 
148*1739a20eSAndy Ritger #define NVT_DISPLAYID_DISPLAY_PARAM_DEPTH_OVERALL 7:4
149*1739a20eSAndy Ritger #define NVT_DISPLAYID_DISPLAY_PARAM_DEPTH_NATIVE  3:0
150*1739a20eSAndy Ritger 
151*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_COLOR_POINT
152*1739a20eSAndy Ritger {
153*1739a20eSAndy Ritger     NvU8 color_x_bits_low;
154*1739a20eSAndy Ritger     NvU8 color_bits_mid;
155*1739a20eSAndy Ritger     NvU8 color_y_bits_high;
156*1739a20eSAndy Ritger } DISPLAYID_COLOR_POINT;
157*1739a20eSAndy Ritger 
158*1739a20eSAndy Ritger #define NVT_DISPLAYID_COLOR_POINT_Y 7:4
159*1739a20eSAndy Ritger #define NVT_DISPLAYID_COLOR_POINT_X 3:0
160*1739a20eSAndy Ritger 
161*1739a20eSAndy Ritger #define NVT_DISPLAYID_COLOR_MAX_POINTS 22
162*1739a20eSAndy Ritger 
163*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_COLOR_CHAR_BLOCK
164*1739a20eSAndy Ritger {
165*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
166*1739a20eSAndy Ritger 
167*1739a20eSAndy Ritger     // Color Characteristics Information
168*1739a20eSAndy Ritger     NvU8 point_info;
169*1739a20eSAndy Ritger 
170*1739a20eSAndy Ritger     DISPLAYID_COLOR_POINT points[NVT_DISPLAYID_COLOR_MAX_POINTS];
171*1739a20eSAndy Ritger } DISPLAYID_COLOR_CHAR_BLOCK;
172*1739a20eSAndy Ritger 
173*1739a20eSAndy Ritger #define NVT_DISPLAYID_COLOR_PRIMARIES    6:4
174*1739a20eSAndy Ritger #define NVT_DISPLAYID_COLOR_WHITE_POINTS 3:0
175*1739a20eSAndy Ritger #define NVT_DISPLAYID_COLOR_TEMPORAL 7:7
176*1739a20eSAndy Ritger 
177*1739a20eSAndy Ritger // the following fields apply to Timing Descriptors 1-3 (Not all of them are
178*1739a20eSAndy Ritger // used per descriptor, but the format is the same
179*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_PREFERRED 7:7
180*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3D_STEREO 6:5
181*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3D_STEREO_MONO   0
182*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3D_STEREO_STEREO 1
183*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3D_STEREO_EITHER 2
184*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_INTERLACE  4:4
185*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_ASPECT_RATIO 2:0
186*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_ASPECT_RATIO_1_1   0
187*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_ASPECT_RATIO_5_4   1
188*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_ASPECT_RATIO_4_3   2
189*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_ASPECT_RATIO_15_9  3
190*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_ASPECT_RATIO_16_9  4
191*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_ASPECT_RATIO_16_10 5
192*1739a20eSAndy Ritger 
193*1739a20eSAndy Ritger typedef struct _tag_DISPLAYID_TIMING_1_DESCRIPTOR
194*1739a20eSAndy Ritger {
195*1739a20eSAndy Ritger     NvU8 pixel_clock_low_minus_0_01MHz;
196*1739a20eSAndy Ritger     NvU8 pixel_clock_mid;
197*1739a20eSAndy Ritger     NvU8 pixel_clock_high;
198*1739a20eSAndy Ritger 
199*1739a20eSAndy Ritger     struct
200*1739a20eSAndy Ritger     {
201*1739a20eSAndy Ritger         NvU8 aspect_ratio                   : 3;
202*1739a20eSAndy Ritger         NvU8 rsvd                           : 1;
203*1739a20eSAndy Ritger         NvU8 interface_frame_scanning_type  : 1;
204*1739a20eSAndy Ritger         NvU8 stereo_support                 : 2;
205*1739a20eSAndy Ritger         NvU8 is_preferred_detailed_timing   : 1;
206*1739a20eSAndy Ritger     }options;
207*1739a20eSAndy Ritger 
208*1739a20eSAndy Ritger     struct
209*1739a20eSAndy Ritger     {
210*1739a20eSAndy Ritger         NvU8 active_image_pixels_low_minus_1;
211*1739a20eSAndy Ritger         NvU8 active_image_pixels_high;
212*1739a20eSAndy Ritger         NvU8 blank_pixels_low_minus_1;
213*1739a20eSAndy Ritger         NvU8 blank_pixels_high;
214*1739a20eSAndy Ritger         NvU8 front_porch_low_minus_1;
215*1739a20eSAndy Ritger         NvU8 front_porch_high               : 7;
216*1739a20eSAndy Ritger         NvU8 sync_polarity                  : 1;
217*1739a20eSAndy Ritger         NvU8 sync_width_low_minus_1;
218*1739a20eSAndy Ritger         NvU8 sync_width_high;
219*1739a20eSAndy Ritger     }horizontal;
220*1739a20eSAndy Ritger 
221*1739a20eSAndy Ritger     struct
222*1739a20eSAndy Ritger     {
223*1739a20eSAndy Ritger         NvU8 active_image_lines_low_minus_1;
224*1739a20eSAndy Ritger         NvU8 active_image_lines_high;
225*1739a20eSAndy Ritger         NvU8 blank_lines_low_minus_1;
226*1739a20eSAndy Ritger         NvU8 blank_lines_high;
227*1739a20eSAndy Ritger         NvU8 front_porch_lines_low_minus_1;
228*1739a20eSAndy Ritger         NvU8 front_porch_lines_high         : 7;
229*1739a20eSAndy Ritger         NvU8 sync_polarity                  : 1;
230*1739a20eSAndy Ritger         NvU8 sync_width_lines_low_minus_1;
231*1739a20eSAndy Ritger         NvU8 sync_width_lines_high;
232*1739a20eSAndy Ritger     }vertical;
233*1739a20eSAndy Ritger 
234*1739a20eSAndy Ritger } DISPLAYID_TIMING_1_DESCRIPTOR;
235*1739a20eSAndy Ritger 
236*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_1_MAX_DESCRIPTORS 12
237*1739a20eSAndy Ritger 
238*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_TIMING_1_BLOCK
239*1739a20eSAndy Ritger {
240*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
241*1739a20eSAndy Ritger     DISPLAYID_TIMING_1_DESCRIPTOR descriptors[NVT_DISPLAYID_TIMING_1_MAX_DESCRIPTORS];
242*1739a20eSAndy Ritger } DISPLAYID_TIMING_1_BLOCK;
243*1739a20eSAndy Ritger 
244*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_1_POLARITY_SHIFT 15
245*1739a20eSAndy Ritger #define NVT_DISPLAYID_CHAR_WIDTH_IN_PIXELS    8
246*1739a20eSAndy Ritger 
247*1739a20eSAndy Ritger typedef struct _tag_DISPLAYID_TIMING_2_DESCRIPTOR
248*1739a20eSAndy Ritger {
249*1739a20eSAndy Ritger     NvU8 pixel_clock_low_minus_0_01MHz;
250*1739a20eSAndy Ritger     NvU8 pixel_clock_mid;
251*1739a20eSAndy Ritger     NvU8 pixel_clock_high;
252*1739a20eSAndy Ritger 
253*1739a20eSAndy Ritger     struct
254*1739a20eSAndy Ritger     {
255*1739a20eSAndy Ritger         NvU8 rsvd                           : 2;
256*1739a20eSAndy Ritger         NvU8 vsync_polarity                 : 1;
257*1739a20eSAndy Ritger         NvU8 hsync_polarity                 : 1;
258*1739a20eSAndy Ritger         NvU8 interface_frame_scanning_type  : 1;
259*1739a20eSAndy Ritger         NvU8 stereo_support                 : 2;
260*1739a20eSAndy Ritger         NvU8 is_preferred_detailed_timing   : 1;
261*1739a20eSAndy Ritger     }options;
262*1739a20eSAndy Ritger 
263*1739a20eSAndy Ritger     struct
264*1739a20eSAndy Ritger     {
265*1739a20eSAndy Ritger         NvU8 active_image_in_char_minus_1;
266*1739a20eSAndy Ritger         NvU8 active_image_in_char_high      : 1;
267*1739a20eSAndy Ritger         NvU8 blank_in_char_minus_1          : 7;
268*1739a20eSAndy Ritger         NvU8 sync_width_in_char_minus_1     : 4;
269*1739a20eSAndy Ritger         NvU8 front_porch_in_char_minus_1    : 4;
270*1739a20eSAndy Ritger     }horizontal;
271*1739a20eSAndy Ritger 
272*1739a20eSAndy Ritger     struct
273*1739a20eSAndy Ritger     {
274*1739a20eSAndy Ritger         NvU8 active_image_lines_low_minus_1;
275*1739a20eSAndy Ritger         NvU8 active_image_lines_high        : 4;
276*1739a20eSAndy Ritger         NvU8 reserved                       : 4;
277*1739a20eSAndy Ritger         NvU8 blank_lines_minus_1;
278*1739a20eSAndy Ritger         NvU8 sync_width_lines_minus_1       : 4;
279*1739a20eSAndy Ritger         NvU8 front_porch_lines_minus_1      : 4;
280*1739a20eSAndy Ritger     }vertical;
281*1739a20eSAndy Ritger 
282*1739a20eSAndy Ritger } DISPLAYID_TIMING_2_DESCRIPTOR;
283*1739a20eSAndy Ritger 
284*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_2_HORIZ_BLANK_PIXEL       7:1
285*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_2_HORIZ_ACTIVE_PIXEL_HIGH 0:0
286*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_2_HORIZ_OFFSET            7:4
287*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_2_HORIZ_SYNC              3:0
288*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_2_VERT_ACTIVE_PIXEL_HIGH  3:0
289*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_2_VERT_OFFSET             7:4
290*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_2_VERT_SYNC               3:0
291*1739a20eSAndy Ritger 
292*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_2_MAX_DESCRIPTORS 22
293*1739a20eSAndy Ritger 
294*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_TIMING_2_BLOCK
295*1739a20eSAndy Ritger {
296*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
297*1739a20eSAndy Ritger     DISPLAYID_TIMING_2_DESCRIPTOR descriptors[NVT_DISPLAYID_TIMING_2_MAX_DESCRIPTORS];
298*1739a20eSAndy Ritger } DISPLAYID_TIMING_2_BLOCK;
299*1739a20eSAndy Ritger 
300*1739a20eSAndy Ritger typedef struct _TAG_DISPLAYID_TIMING_3_DESCRIPTOR
301*1739a20eSAndy Ritger {
302*1739a20eSAndy Ritger     NvU8 optns;
303*1739a20eSAndy Ritger     NvU8 horizontal_active_pixels;
304*1739a20eSAndy Ritger     NvU8 transfer;
305*1739a20eSAndy Ritger } DISPLAYID_TIMING_3_DESCRIPTOR;
306*1739a20eSAndy Ritger 
307*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_FORMULA                  6:4
308*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_FORMULA_STANDARD         0
309*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_FORMULA_REDUCED_BLANKING 1
310*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_ASPECT_RATIO             3:0
311*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_ASPECT_RATIO_1_1         0
312*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_ASPECT_RATIO_5_4         1
313*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_ASPECT_RATIO_4_3         2
314*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_ASPECT_RATIO_15_9        3
315*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_ASPECT_RATIO_16_9        4
316*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_ASPECT_RATIO_16_10       5
317*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_INTERLACE                7:7
318*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_REFRESH_RATE             6:0
319*1739a20eSAndy Ritger 
320*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_3_MAX_DESCRIPTORS 82
321*1739a20eSAndy Ritger 
322*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_TIMING_3_BLOCK
323*1739a20eSAndy Ritger {
324*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
325*1739a20eSAndy Ritger     DISPLAYID_TIMING_3_DESCRIPTOR descriptors[NVT_DISPLAYID_TIMING_3_MAX_DESCRIPTORS];
326*1739a20eSAndy Ritger } DISPLAYID_TIMING_3_BLOCK;
327*1739a20eSAndy Ritger 
328*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_4_MAX_CODES NVT_DISPLAYID_DATABLOCK_MAX_PAYLOAD_LEN
329*1739a20eSAndy Ritger 
330*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_TIMING_4_BLOCK
331*1739a20eSAndy Ritger {
332*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
333*1739a20eSAndy Ritger     NvU8 timing_codes[NVT_DISPLAYID_TIMING_4_MAX_CODES];
334*1739a20eSAndy Ritger } DISPLAYID_TIMING_4_BLOCK;
335*1739a20eSAndy Ritger 
336*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_5_STEREO_SUPPORT_MASK 0x60
337*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_5_FRACTIONAL_RR_SUPPORT_MASK 0x10
338*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_5_FORMULA_SUPPORT_MASK 3
339*1739a20eSAndy Ritger 
340*1739a20eSAndy Ritger typedef struct _TAG_DISPLAYID_TIMING_5_DESCRIPTOR
341*1739a20eSAndy Ritger {
342*1739a20eSAndy Ritger     NvU8 optns;
343*1739a20eSAndy Ritger     NvU8 rsvd;
344*1739a20eSAndy Ritger     NvU8 horizontal_active_pixels_low;
345*1739a20eSAndy Ritger     NvU8 horizontal_active_pixels_high;
346*1739a20eSAndy Ritger     NvU8 vertical_active_pixels_low;
347*1739a20eSAndy Ritger     NvU8 vertical_active_pixels_high;
348*1739a20eSAndy Ritger     NvU8 refresh_rate;
349*1739a20eSAndy Ritger } DISPLAYID_TIMING_5_DESCRIPTOR;
350*1739a20eSAndy Ritger 
351*1739a20eSAndy Ritger #define NVT_DISPLAYID_TIMING_5_MAX_DESCRIPTORS 53
352*1739a20eSAndy Ritger 
353*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_TIMING_5_BLOCK
354*1739a20eSAndy Ritger {
355*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
356*1739a20eSAndy Ritger     DISPLAYID_TIMING_5_DESCRIPTOR descriptors[NVT_DISPLAYID_TIMING_5_MAX_DESCRIPTORS];
357*1739a20eSAndy Ritger } DISPLAYID_TIMING_5_BLOCK;
358*1739a20eSAndy Ritger 
359*1739a20eSAndy Ritger #define DISPLAYID_TIMING_VESA_BLOCK_SIZE 0x0A
360*1739a20eSAndy Ritger #define DISPLAYID_TIMING_CEA_BLOCK_SIZE 0x08
361*1739a20eSAndy Ritger 
362*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_TIMING_MODE_BLOCK
363*1739a20eSAndy Ritger {
364*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
365*1739a20eSAndy Ritger     NvU8 timing_modes[DISPLAYID_TIMING_VESA_BLOCK_SIZE];
366*1739a20eSAndy Ritger } DISPLAYID_TIMING_MODE_BLOCK;
367*1739a20eSAndy Ritger 
368*1739a20eSAndy Ritger 
369*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_RANGE_LIMITS_BLOCK
370*1739a20eSAndy Ritger {
371*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
372*1739a20eSAndy Ritger     NvU8 pixel_clock_min[3];
373*1739a20eSAndy Ritger     NvU8 pixel_clock_max[3];
374*1739a20eSAndy Ritger     NvU8 horizontal_frequency_min;
375*1739a20eSAndy Ritger     NvU8 horizontal_frequency_max;
376*1739a20eSAndy Ritger     NvU16 horizontal_blanking_min;
377*1739a20eSAndy Ritger     NvU8 vertical_refresh_rate_min;
378*1739a20eSAndy Ritger     NvU8 vertical_refresh_rate_max;
379*1739a20eSAndy Ritger     NvU16 vertical_blanking_min;
380*1739a20eSAndy Ritger 
381*1739a20eSAndy Ritger     NvU8 optns;
382*1739a20eSAndy Ritger } DISPLAYID_RANGE_LIMITS_BLOCK;
383*1739a20eSAndy Ritger 
384*1739a20eSAndy Ritger #define DISPLAYID_RANGE_LIMITS_BLOCK_LEN 0xF
385*1739a20eSAndy Ritger 
386*1739a20eSAndy Ritger #define NVT_DISPLAYID_RANGE_LIMITS_INTERLACE    7:7
387*1739a20eSAndy Ritger #define NVT_DISPLAYID_RANGE_LIMITS_CVT_STANDARD 6:6
388*1739a20eSAndy Ritger #define NVT_DISPLAYID_RANGE_LIMITS_CVT_REDUCED  5:5
389*1739a20eSAndy Ritger #define NVT_DISPLAYID_RANGE_LIMITS_DFD          4:4
390*1739a20eSAndy Ritger 
391*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_ASCII_STRING_BLOCK
392*1739a20eSAndy Ritger {
393*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
394*1739a20eSAndy Ritger     NvU8 data[NVT_DISPLAYID_DATABLOCK_MAX_PAYLOAD_LEN];
395*1739a20eSAndy Ritger } DISPLAYID_ASCII_STRING_BLOCK;
396*1739a20eSAndy Ritger 
397*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_DEVICE_DATA_BLOCK
398*1739a20eSAndy Ritger {
399*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
400*1739a20eSAndy Ritger 
401*1739a20eSAndy Ritger     NvU8 technology;
402*1739a20eSAndy Ritger     NvU8 operating_mode;
403*1739a20eSAndy Ritger     NvU16 horizontal_pixel_count;
404*1739a20eSAndy Ritger     NvU16 vertical_pixel_count;
405*1739a20eSAndy Ritger     NvU8 aspect_ratio;
406*1739a20eSAndy Ritger     NvU8 orientation;
407*1739a20eSAndy Ritger 
408*1739a20eSAndy Ritger     NvU8 subpixel_info;
409*1739a20eSAndy Ritger     NvU8 horizontal_pitch;
410*1739a20eSAndy Ritger     NvU8 vertical_pitch;
411*1739a20eSAndy Ritger 
412*1739a20eSAndy Ritger     NvU8 color_bit_depth;
413*1739a20eSAndy Ritger     NvU8 response_time;
414*1739a20eSAndy Ritger 
415*1739a20eSAndy Ritger } DISPLAYID_DEVICE_DATA_BLOCK;
416*1739a20eSAndy Ritger 
417*1739a20eSAndy Ritger #define DISPLAYID_DEVICE_DATA_BLOCK_LEN 0xD
418*1739a20eSAndy Ritger 
419*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_CRT_MONOCHROME              0x00
420*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_CRT_STANDARD                0x01
421*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_CRT_OTHER                   0x02
422*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_LCD_PASSIVE_MATRIX_TN       0x10
423*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_LCD_PASSIVE_MATRIX_CHOL_LC  0x11
424*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_LCD_PASSIVE_MATRIX_FERRO_LC 0x12
425*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_LCD_PASSIVE_MATRIX_OTHER    0x13
426*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_LCD_ACTIVE_MATRIX_TN        0x14
427*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_LCD_ACTIVE_MATRIX_IPS       0x15
428*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_LCD_ACTIVE_MATRIX_VA        0x16
429*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_LCD_ACTIVE_MATRIX_OCB       0x17
430*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_LCD_ACTIVE_MATRIX_FERRO     0x18
431*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_LCD_OTHER                   0x1F
432*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_PLASMA_DC                   0x20
433*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_PLASMA_AC                   0x21
434*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_ELECTROLUM                  0x30
435*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_INORGANIC_LED               0x40
436*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_ORGANIC_LED                 0x50
437*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_FED                         0x60
438*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_ELECTROPHORETIC             0x70
439*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_ELECTROCHROMIC              0x80
440*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_ELECTROMECHANICAL           0x90
441*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_ELECTROWETTING              0xA0
442*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_TECHNOLOGY_OTHER                       0xF0
443*1739a20eSAndy Ritger 
444*1739a20eSAndy Ritger // Display Device operating mode info
445*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE                        7:4
446*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_REFLECTIVE_NO_ILLUM    0x0
447*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_REFLECTIVE_ILLUM       0x1
448*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_REFLECTIVE_ILLUM_DEF   0x2
449*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_TRANSMISSIVE_NO_ILLUM  0x3
450*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_TRANSMISSIVE_ILLUM     0x4
451*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_TRANSMISSIVE_ILLUM_DEF 0x5
452*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_EMISSIVE               0x6
453*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_TRANSFLECTIVE_REF      0x7
454*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_TRANSFLECTIVE_TRANS    0x8
455*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_TRANSPARENT_AMB        0x9
456*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_TRANSPARENT_EMIS       0xA
457*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_PROJECTION_REF         0xB
458*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_PROJECTION_TRANS       0xC
459*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_OPERATING_MODE_PROJECTION_EMIS        0xD
460*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_BACKLIGHT                             3:3
461*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_INTENSITY                             2:2
462*1739a20eSAndy Ritger 
463*1739a20eSAndy Ritger // Display Device aspect ratio/orientation info
464*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ORIENTATION               7:6
465*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ORIENTATION_LANDSCAPE     0
466*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ORIENTATION_PORTRAIT      1
467*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ORIENTATION_NOT_FIXED     2
468*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ORIENTATION_UNDEFINED     3
469*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ROTATION                  5:4
470*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ROTATION_NONE             0
471*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ROTATION_CLOCKWISE        1
472*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ROTATION_COUNTERCLOCKWISE 2
473*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ROTATION_BOTH             3
474*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ZERO_PIXEL                3:2
475*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ZERO_PIXEL_UPPER_LEFT     0
476*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ZERO_PIXEL_UPPER_RIGHT    1
477*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ZERO_PIXEL_LOWER_LEFT     2
478*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_ZERO_PIXEL_LOWER RIGHT    3
479*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_SCAN                      1:0
480*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_SCAN_UNDEFINED            0
481*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_SCAN_FAST_LONG            1
482*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_SCAN_FAST_SHORT           2
483*1739a20eSAndy Ritger 
484*1739a20eSAndy Ritger // Display Device Color Depth information
485*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_COLOR_DEPTH 3:0
486*1739a20eSAndy Ritger 
487*1739a20eSAndy Ritger // Display Device Response Time information
488*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_WHITE_BLACK       7:7
489*1739a20eSAndy Ritger #define NVT_DISPLAYID_DEVICE_RESPONSE_TIME     6:0
490*1739a20eSAndy Ritger 
491*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_UNDEFINED            0
492*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_RGB_VERTICAL         1
493*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_RGB_HORIZONTAL       2
494*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_VERTICAL_STR         3
495*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_HORIZONTAL_STR       4
496*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_QUAD_RED_TOP_LEFT    5
497*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_QUAD_RED_BOTTOM_LEFT 6
498*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_DELTA_RGB            7
499*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_MOSAIC               8
500*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_QUAD_INC_WHITE       9
501*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_FIVE                 10
502*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_SIX                  11
503*1739a20eSAndy Ritger #define NVT_DISPLAYID_SUBPIXEL_PENTILE              12
504*1739a20eSAndy Ritger 
505*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_INTERFACE_POWER_BLOCK
506*1739a20eSAndy Ritger {
507*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
508*1739a20eSAndy Ritger     NvU8 power_sequence_T1;
509*1739a20eSAndy Ritger     NvU8 power_sequence_T2;
510*1739a20eSAndy Ritger     NvU8 power_sequence_T3;
511*1739a20eSAndy Ritger     NvU8 power_sequence_T4_min;
512*1739a20eSAndy Ritger     NvU8 power_sequence_T5_min;
513*1739a20eSAndy Ritger     NvU8 power_sequence_T6_min;
514*1739a20eSAndy Ritger } DISPLAYID_INTERFACE_POWER_BLOCK;
515*1739a20eSAndy Ritger 
516*1739a20eSAndy Ritger #define DISPLAYID_INTERFACE_POWER_BLOCK_LEN 0x6
517*1739a20eSAndy Ritger 
518*1739a20eSAndy Ritger #define NVT_DISPLAYID_POWER_T1_MIN 7:4
519*1739a20eSAndy Ritger #define NVT_DISPLAYID_POWER_T1_MAX 3:0
520*1739a20eSAndy Ritger #define NVT_DISPLAYID_POWER_T2 5:0
521*1739a20eSAndy Ritger #define NVT_DISPLAYID_POWER_T3 5:0
522*1739a20eSAndy Ritger #define NVT_DISPLAYID_POWER_T4_MIN 6:0
523*1739a20eSAndy Ritger #define NVT_DISPLAYID_POWER_T5_MIN 5:0
524*1739a20eSAndy Ritger #define NVT_DISPLAYID_POWER_T6_MIN 5:0
525*1739a20eSAndy Ritger 
526*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_TRANSFER_CHAR_BLOCK
527*1739a20eSAndy Ritger {
528*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
529*1739a20eSAndy Ritger     NvU8 info;
530*1739a20eSAndy Ritger     NvU8 samples;
531*1739a20eSAndy Ritger     NvU8 curve_data[NVT_DISPLAYID_DATABLOCK_MAX_PAYLOAD_LEN - 2];
532*1739a20eSAndy Ritger } DISPLAYID_TRANSFER_CHAR_BLOCK;
533*1739a20eSAndy Ritger 
534*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_INTERFACE_DATA_BLOCK
535*1739a20eSAndy Ritger {
536*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
537*1739a20eSAndy Ritger     NvU8 info;
538*1739a20eSAndy Ritger 
539*1739a20eSAndy Ritger     NvU8 version;
540*1739a20eSAndy Ritger     NvU8 color_depth_rgb;
541*1739a20eSAndy Ritger     NvU8 color_depth_ycbcr444;
542*1739a20eSAndy Ritger     NvU8 color_depth_ycbcr422;
543*1739a20eSAndy Ritger     NvU8 content_protection;
544*1739a20eSAndy Ritger     NvU8 content_protection_version;
545*1739a20eSAndy Ritger 
546*1739a20eSAndy Ritger     NvU8 spread;
547*1739a20eSAndy Ritger 
548*1739a20eSAndy Ritger     NvU8 interface_attribute_1;
549*1739a20eSAndy Ritger     NvU8 interface_attribute_2;
550*1739a20eSAndy Ritger } DISPLAYID_INTERFACE_DATA_BLOCK;
551*1739a20eSAndy Ritger 
552*1739a20eSAndy Ritger #define DISPLAYID_INTERFACE_DATA_BLOCK_LEN 0xA
553*1739a20eSAndy Ritger 
554*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE        7:4
555*1739a20eSAndy Ritger 
556*1739a20eSAndy Ritger // Interface Codes (note exception for Analog Interface)
557*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_ANALOG        0
558*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_LVDS          1
559*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_TMDS          2
560*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_RSDS          3
561*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_DVI_D         4
562*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_DVI_I_ANALOG  5
563*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_DVI_I_DIGITAL 6
564*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_HDMI_A        7
565*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_HDMI_B        8
566*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_MDDI          9
567*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_DISPLAYPORT   10
568*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_PROPRIETARY   11
569*1739a20eSAndy Ritger 
570*1739a20eSAndy Ritger // Analog Interface Subtype codes
571*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_ANALOG_VGA            0
572*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_ANALOG_VESA_NAVI_V    1
573*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_TYPE_ANALOG_VESA_NAVI_D    2
574*1739a20eSAndy Ritger 
575*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_NUMLINKS           3:0
576*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_CONTENT            2:0
577*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_CONTENT_NONE       0
578*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_CONTENT_HDCP       1
579*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_CONTENT_DTCP       2
580*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_CONTENT_DPCP       3
581*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_SPREAD_TYPE        7:6
582*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_SPREAD_TYPE_NONE   0
583*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_SPREAD_TYPE_DOWN   1
584*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_SPREAD_TYPE_CENTER 2
585*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_SPREAD_PER         3:0
586*1739a20eSAndy Ritger 
587*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_RGB16 5:5
588*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_RGB14 4:4
589*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_RGB12 3:3
590*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_RGB10 2:2
591*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_RGB8  1:1
592*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_RGB6  0:0
593*1739a20eSAndy Ritger 
594*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR444_16 5:5
595*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR444_14 4:4
596*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR444_12 3:3
597*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR444_10 2:2
598*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR444_8  1:1
599*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR444_6  0:0
600*1739a20eSAndy Ritger 
601*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR422_16 4:4
602*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR422_14 3:3
603*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR422_12 2:2
604*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR422_10 1:1
605*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_YCBCR422_8  0:0
606*1739a20eSAndy Ritger 
607*1739a20eSAndy Ritger // LVDS specific settings
608*1739a20eSAndy Ritger #define NVT_DISPLAYID_LVDS_COLOR 4:4
609*1739a20eSAndy Ritger #define NVT_DISPLAYID_LVDS_2_8   3:3
610*1739a20eSAndy Ritger #define NVT_DISPLAYID_LVDS_12    2:2
611*1739a20eSAndy Ritger #define NVT_DISPLAYID_LVDS_5     1:1
612*1739a20eSAndy Ritger #define NVT_DISPLAYID_LVDS_3_3   0:0
613*1739a20eSAndy Ritger 
614*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_DE       2:2
615*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_POLARITY 1:1
616*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_STROBE   0:0
617*1739a20eSAndy Ritger 
618*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_STEREO_INTERFACE_METHOD_BLOCK
619*1739a20eSAndy Ritger {
620*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
621*1739a20eSAndy Ritger     NvU8 stereo_bytes;
622*1739a20eSAndy Ritger     NvU8 stereo_code;
623*1739a20eSAndy Ritger     NvU8 timing_sub_block[NVT_DISPLAYID_DATABLOCK_MAX_PAYLOAD_LEN];
624*1739a20eSAndy Ritger } DISPLAYID_STEREO_INTERFACE_METHOD_BLOCK;
625*1739a20eSAndy Ritger 
626*1739a20eSAndy Ritger #define NVT_DISPLAYID_STEREO_FIELD_SEQUENTIAL  0x0
627*1739a20eSAndy Ritger #define NVT_DISPLAYID_STEREO_SIDE_BY_SIDE      0x1
628*1739a20eSAndy Ritger #define NVT_DISPLAYID_STEREO_PIXEL_INTERLEAVED 0x2
629*1739a20eSAndy Ritger #define NVT_DISPLAYID_STEREO_DUAL_INTERFACE    0x3
630*1739a20eSAndy Ritger #define NVT_DISPLAYID_STEREO_MULTIVIEW         0x4
631*1739a20eSAndy Ritger #define NVT_DISPLAYID_STEREO_PROPRIETARY       0xFF
632*1739a20eSAndy Ritger 
633*1739a20eSAndy Ritger #define NVT_DISPLAYID_STEREO_MIRRORING 2:1
634*1739a20eSAndy Ritger #define NVT_DISPLAYID_STEREO_POLARITY  0:0
635*1739a20eSAndy Ritger 
636*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_TILED_DISPLAY_BLOCK
637*1739a20eSAndy Ritger {
638*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
639*1739a20eSAndy Ritger     struct
640*1739a20eSAndy Ritger     {
641*1739a20eSAndy Ritger         NvU8 single_tile_behavior:3;       // 0x03
642*1739a20eSAndy Ritger         NvU8 multi_tile_behavior:2;        // 0x03
643*1739a20eSAndy Ritger         NvU8 rsvd             :1;          // 0x03
644*1739a20eSAndy Ritger         NvU8 has_bezel_info   :1;          // 0x03
645*1739a20eSAndy Ritger         NvU8 single_enclosure :1;          // 0x03
646*1739a20eSAndy Ritger     } capability;
647*1739a20eSAndy Ritger     struct
648*1739a20eSAndy Ritger     {
649*1739a20eSAndy Ritger         NvU8 row              :4;          // 0x04
650*1739a20eSAndy Ritger         NvU8 col              :4;          // 0x04
651*1739a20eSAndy Ritger     } topology_low;
652*1739a20eSAndy Ritger     struct
653*1739a20eSAndy Ritger     {
654*1739a20eSAndy Ritger         NvU8 y                :4;          // 0x05
655*1739a20eSAndy Ritger         NvU8 x                :4;          // 0x05
656*1739a20eSAndy Ritger     } location_low;
657*1739a20eSAndy Ritger     struct
658*1739a20eSAndy Ritger     {
659*1739a20eSAndy Ritger         NvU8 y                :1;          // 0x06
660*1739a20eSAndy Ritger         NvU8 reserved1        :1;          // 0x06
661*1739a20eSAndy Ritger         NvU8 x                :1;          // 0x06
662*1739a20eSAndy Ritger         NvU8 reserved2        :1;          // 0x06
663*1739a20eSAndy Ritger         NvU8 row              :1;          // 0x06
664*1739a20eSAndy Ritger         NvU8 reserved3        :1;          // 0x06
665*1739a20eSAndy Ritger         NvU8 col              :1;          // 0x06
666*1739a20eSAndy Ritger         NvU8 reserved4        :1;          // 0x06
667*1739a20eSAndy Ritger     } topo_loc_high;
668*1739a20eSAndy Ritger     struct
669*1739a20eSAndy Ritger     {
670*1739a20eSAndy Ritger         NvU8 width_low;                   // 0x07
671*1739a20eSAndy Ritger         NvU8 width_high;                  // 0x08
672*1739a20eSAndy Ritger         NvU8 height_low;                  // 0x09
673*1739a20eSAndy Ritger         NvU8 height_high;                 // 0X0A
674*1739a20eSAndy Ritger     } native_resolution;
675*1739a20eSAndy Ritger     struct
676*1739a20eSAndy Ritger     {
677*1739a20eSAndy Ritger         NvU8 pixel_density;                // 0x0B
678*1739a20eSAndy Ritger         NvU8 top;                          // 0x0C
679*1739a20eSAndy Ritger         NvU8 bottom;                       // 0x0D
680*1739a20eSAndy Ritger         NvU8 right;                        // 0x0E
681*1739a20eSAndy Ritger         NvU8 left;                         // 0x0F
682*1739a20eSAndy Ritger     } bezel_info;
683*1739a20eSAndy Ritger     struct
684*1739a20eSAndy Ritger     {
685*1739a20eSAndy Ritger         NvU8 vendor_id[3];                 // 0x10 ~ 0x12
686*1739a20eSAndy Ritger         NvU8 product_id[2];                // 0x13 ~ 0x14
687*1739a20eSAndy Ritger         NvU8 serial_number[4];             // 0x15 ~ 0x18
688*1739a20eSAndy Ritger     } topology_id;
689*1739a20eSAndy Ritger } DISPLAYID_TILED_DISPLAY_BLOCK;
690*1739a20eSAndy Ritger 
691*1739a20eSAndy Ritger typedef struct _tagDISPLAYID_INTERFACE_FEATURES_DATA_BLOCK
692*1739a20eSAndy Ritger {
693*1739a20eSAndy Ritger     DISPLAYID_DATA_BLOCK_HEADER header;
694*1739a20eSAndy Ritger     NvU8 supported_color_depth_rgb;
695*1739a20eSAndy Ritger     NvU8 supported_color_depth_ycbcr444;
696*1739a20eSAndy Ritger     NvU8 supported_color_depth_ycbcr422;
697*1739a20eSAndy Ritger     NvU8 supported_color_depth_ycbcr420;
698*1739a20eSAndy Ritger     NvU8 minimum_pixel_rate_ycbcr420;
699*1739a20eSAndy Ritger     NvU8 supported_audio_capability;
700*1739a20eSAndy Ritger     NvU8 supported_colorspace_eotf_combination_1;
701*1739a20eSAndy Ritger     NvU8 supported_colorspace_eotf_combination_2;
702*1739a20eSAndy Ritger     NvU8 additional_supported_colorspace_eotf_total;
703*1739a20eSAndy Ritger     NvU8 additional_supported_colorspace_eotf[NVT_DISPLAYID_DISPLAY_INTERFACE_FEATURES_MAX_ADDITIONAL_SUPPORTED_COLORSPACE_EOTF];
704*1739a20eSAndy Ritger } DISPLAYID_INTERFACE_FEATURES_DATA_BLOCK;
705*1739a20eSAndy Ritger 
706*1739a20eSAndy Ritger #define DISPLAYID_INTERFACE_FEATURES_DATA_BLOCK_MAX_LEN sizeof(DISPLAYID_INTERFACE_FEATURES_DATA_BLOCK)
707*1739a20eSAndy Ritger 
708*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_RGB16 5:5
709*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_RGB14 4:4
710*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_RGB12 3:3
711*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_RGB10 2:2
712*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_RGB8  1:1
713*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_RGB6  0:0
714*1739a20eSAndy Ritger 
715*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR444_16 5:5
716*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR444_14 4:4
717*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR444_12 3:3
718*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR444_10 2:2
719*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR444_8  1:1
720*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR444_6  0:0
721*1739a20eSAndy Ritger 
722*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR422_16 4:4
723*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR422_14 3:3
724*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR422_12 2:2
725*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR422_10 1:1
726*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR422_8  0:0
727*1739a20eSAndy Ritger 
728*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR420_16 4:4
729*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR420_14 3:3
730*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR420_12 2:2
731*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR420_10 1:1
732*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_YCBCR420_8  0:0
733*1739a20eSAndy Ritger 
734*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_AUDIO_SUPPORTED_32KHZ      7:7
735*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_AUDIO_SUPPORTED_44_1KHZ    6:6
736*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_AUDIO_SUPPORTED_48KHZ      5:5
737*1739a20eSAndy Ritger 
738*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_COLORSPACE_BT2020_EOTF_SMPTE_ST2084    6:6
739*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_COLORSPACE_BT2020_EOTF_BT2020          5:5
740*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_COLORSPACE_DCI_P3_EOTF_DCI_P3          4:4
741*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_COLORSPACE_ADOBE_RGB_EOTF_ADOBE_RGB    3:3
742*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_COLORSPACE_BT709_EOTF_BT1886           2:2
743*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_COLORSPACE_BT601_EOTF_BT601            1:1
744*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_COLORSPACE_SRGB_EOTF_SRGB              0:0
745*1739a20eSAndy Ritger 
746*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_COLORSPACE_EOTF_TOTAL   2:0
747*1739a20eSAndy Ritger 
748*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_COLORSPACE              7:4
749*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_COLORSPACE_NOT_DEFINED  0
750*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_COLORSPACE_SRGB         1
751*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_COLORSPACE_BT601        2
752*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_COLORSPACE_BT709        3
753*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_COLORSPACE_ADOBE_RGB    4
754*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_COLORSPACE_DCI_P3       5
755*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_COLORSPACE_BT2020       6
756*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_COLORSPACE_CUSTOM       7
757*1739a20eSAndy Ritger 
758*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF              3:0
759*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_NOT_DEFINED  0
760*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_SRGB         1
761*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_BT601        2
762*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_BT709        3
763*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_ADOBE_RGB    4
764*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_DCI_P3       5
765*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_BT2020       6
766*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_GAMMA        7
767*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_SMPTE_ST2084 8
768*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_HYBRID_LOG   9
769*1739a20eSAndy Ritger #define NVT_DISPLAYID_INTERFACE_FEATURES_ADDITIONAL_SUPPORTED_EOTF_CUSTOM       10
770*1739a20eSAndy Ritger 
771*1739a20eSAndy Ritger 
772*1739a20eSAndy Ritger #ifdef __SUPPORTS_PACK_PRAGMA
773*1739a20eSAndy Ritger #pragma pack()
774*1739a20eSAndy Ritger #endif
775*1739a20eSAndy Ritger 
776*1739a20eSAndy Ritger #endif // __DISPLAYID_H_
777