1 /* vim: set et fde fdm=syntax ft=c.doxygen ts=4 sts=4 sw=4 : */
3 * Copyright © 2010-2011 Saleem Abdulrasool <compnerd@compnerd.org>.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
9 * 1. Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright notice,
13 * this list of conditions and the following disclaimer in the documentation
14 * and/or other materials provided with the distribution.
16 * 3. The name of the author may not be used to endorse or promote products
17 * derived from this software without specific prior written permission.
19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
20 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
22 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 #ifndef xvidc_cea861_h
32 #define xvidc_cea861_h
34 #define XVIDC_EDID_VERBOSITY 0
36 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
38 #define XVIDC_CEA861_NO_DTDS_PRESENT (0x04)
40 #define HDMI_VSDB_EXTENSION_FLAGS_OFFSET (0x06)
41 #define HDMI_VSDB_MAX_TMDS_OFFSET (0x07)
42 #define HDMI_VSDB_LATENCY_FIELDS_OFFSET (0x08)
44 static const u8 HDMI_OUI[] = { 0x00, 0x0C, 0x03 };
45 static const u8 HDMI_OUI_HF[] = { 0xC4, 0x5D, 0xD8 };
47 enum xvidc_cea861_data_block_type {
48 XVIDC_CEA861_DATA_BLOCK_TYPE_RESERVED0,
49 XVIDC_CEA861_DATA_BLOCK_TYPE_AUDIO,
50 XVIDC_CEA861_DATA_BLOCK_TYPE_VIDEO,
51 XVIDC_CEA861_DATA_BLOCK_TYPE_VENDOR_SPECIFIC,
52 XVIDC_CEA861_DATA_BLOCK_TYPE_SPEAKER_ALLOCATION,
53 XVIDC_CEA861_DATA_BLOCK_TYPE_VESA_DTC,
54 XVIDC_CEA861_DATA_BLOCK_TYPE_RESERVED6,
55 XVIDC_CEA861_DATA_BLOCK_TYPE_EXTENDED,
58 enum xvidc_cea861_extended_tag_type_data_block {
59 XVIDC_CEA861_EXT_TAG_TYPE_VIDEO_CAPABILITY,
60 XVIDC_CEA861_EXT_TAG_TYPE_VENDOR_SPECIFIC,
61 XVIDC_CEA861_EXT_TAG_TYPE_VESA_DISPLAY_DEVICE,
62 XVIDC_CEA861_EXT_TAG_TYPE_VESA_VIDEO_TIMING_BLOCK_EXT,
63 XVIDC_CEA861_EXT_TAG_TYPE_RESERVED_FOR_HDMI_VIDEO_DATA_BLOCK,
64 XVIDC_CEA861_EXT_TAG_TYPE_COLORIMETRY,
65 XVIDC_CEA861_EXT_TAG_TYPE_HDR_STATIC_METADATA,
66 XVIDC_CEA861_EXT_TAG_TYPE_HDR_DYNAMIC_METADATA,
67 XVIDC_CEA861_EXT_TAG_TYPE_RESERVED2,
68 XVIDC_CEA861_EXT_TAG_TYPE_RESERVED3,
69 XVIDC_CEA861_EXT_TAG_TYPE_RESERVED4,
70 XVIDC_CEA861_EXT_TAG_TYPE_RESERVED5,
71 XVIDC_CEA861_EXT_TAG_TYPE_RESERVED6,
72 XVIDC_CEA861_EXT_TAG_TYPE_VIDEO_FRMT_PREFERENCE,
73 XVIDC_CEA861_EXT_TAG_TYPE_YCBCR420_VIDEO,
74 XVIDC_CEA861_EXT_TAG_TYPE_YCBCR420_CAPABILITY_MAP,
75 XVIDC_CEA861_EXT_TAG_TYPE_CEA_MISC_AUDIO_FIELDS,
76 XVIDC_CEA861_EXT_TAG_TYPE_VENDOR_SPECIFC_AUDIO,
77 XVIDC_CEA861_EXT_TAG_TYPE_HDMI_AUDIO,
78 XVIDC_CEA861_EXT_TAG_TYPE_ROOM_CONFIGURATION,
79 XVIDC_CEA861_EXT_TAG_TYPE_SPEAKER_LOCATION,
80 XVIDC_CEA861_EXT_TAG_TYPE_INFOFRAME = 32,
81 /* Can be extend to 255, refer table 46 cea data block tag codes cea-861-f */
84 enum xvidc_cea861_audio_format {
85 XVIDC_CEA861_AUDIO_FORMAT_RESERVED,
86 XVIDC_CEA861_AUDIO_FORMAT_LPCM,
87 XVIDC_CEA861_AUDIO_FORMAT_AC_3,
88 XVIDC_CEA861_AUDIO_FORMAT_MPEG_1,
89 XVIDC_CEA861_AUDIO_FORMAT_MP3,
90 XVIDC_CEA861_AUDIO_FORMAT_MPEG2,
91 XVIDC_CEA861_AUDIO_FORMAT_AAC_LC,
92 XVIDC_CEA861_AUDIO_FORMAT_DTS,
93 XVIDC_CEA861_AUDIO_FORMAT_ATRAC,
94 XVIDC_CEA861_AUDIO_FORMAT_DSD,
95 XVIDC_CEA861_AUDIO_FORMAT_E_AC_3,
96 XVIDC_CEA861_AUDIO_FORMAT_DTS_HD,
97 XVIDC_CEA861_AUDIO_FORMAT_MLP,
98 XVIDC_CEA861_AUDIO_FORMAT_DST,
99 XVIDC_CEA861_AUDIO_FORMAT_WMA_PRO,
100 XVIDC_CEA861_AUDIO_FORMAT_EXTENDED,
103 struct __attribute__ (( packed )) xvidc_cea861_timing_block {
104 /* CEA Extension Header */
109 /* Global Declarations */
110 unsigned native_dtds : 4;
111 unsigned yuv_422_supported : 1;
112 unsigned yuv_444_supported : 1;
113 unsigned basic_audio_supported : 1;
114 unsigned underscan_supported : 1;
121 struct __attribute__ (( packed )) xvidc_cea861_data_block_header {
126 struct __attribute__ (( packed )) xvidc_cea861_short_video_descriptor {
127 unsigned video_identification_code : 7;
130 #if XVIDC_EDID_VERBOSITY > 1
131 struct __attribute__ (( packed )) xvidc_cea861_video_data_block {
132 struct xvidc_cea861_data_block_header header;
133 struct xvidc_cea861_short_video_descriptor svd[];
136 struct __attribute__ (( packed )) xvidc_cea861_short_audio_descriptor {
137 unsigned channels : 3; /* = value + 1 */
138 unsigned audio_format : 4;
141 unsigned sample_rate_32_kHz : 1;
142 unsigned sample_rate_44_1_kHz : 1;
143 unsigned sample_rate_48_kHz : 1;
144 unsigned sample_rate_88_2_kHz : 1;
145 unsigned sample_rate_96_kHz : 1;
146 unsigned sample_rate_176_4_kHz : 1;
147 unsigned sample_rate_192_kHz : 1;
151 struct __attribute__ (( packed )) {
152 unsigned bitrate_16_bit : 1;
153 unsigned bitrate_20_bit : 1;
154 unsigned bitrate_24_bit : 1;
158 u8 maximum_bit_rate; /* formats 2-8; = value * 8 kHz */
160 u8 format_dependent; /* formats 9-13; */
162 struct __attribute__ (( packed )) {
163 unsigned profile : 3;
167 struct __attribute__ (( packed )) {
173 #if XVIDC_EDID_VERBOSITY > 1
174 struct __attribute__ (( packed )) xvidc_cea861_audio_data_block {
175 struct xvidc_cea861_data_block_header header;
176 struct xvidc_cea861_short_audio_descriptor sad[];
179 #if XVIDC_EDID_VERBOSITY > 1
180 struct __attribute__ (( packed )) xvidc_cea861_speaker_allocation {
181 unsigned front_left_right : 1;
182 unsigned front_lfe : 1; /* low frequency effects */
183 unsigned front_center : 1;
184 unsigned rear_left_right : 1;
185 unsigned rear_center : 1;
186 unsigned front_left_right_center : 1;
187 unsigned rear_left_right_center : 1;
188 unsigned front_left_right_wide : 1;
190 unsigned front_left_right_high : 1;
191 unsigned top_center : 1;
192 unsigned front_center_high : 1;
198 #if XVIDC_EDID_VERBOSITY > 1
199 struct __attribute__ (( packed )) xvidc_cea861_speaker_allocation_data_block {
200 struct xvidc_cea861_data_block_header header;
201 struct xvidc_cea861_speaker_allocation payload;
204 struct __attribute__ (( packed )) xvidc_cea861_vendor_specific_data_block {
205 struct xvidc_cea861_data_block_header header;
206 u8 ieee_registration[3];
210 struct __attribute__ (( packed )) xvidc_cea861_extended_data_block {
211 struct xvidc_cea861_data_block_header header;
212 u8 xvidc_cea861_extended_tag_codes;
216 #if XVIDC_EDID_VERBOSITY > 1
217 static const struct xvidc_cea861_timing {
231 } xvidc_cea861_timings[] = {
232 [ 1] = { 640, 480, PROGRESSIVE, 800, 160, 525, 45.0, 31.469, 59.940, 25.175 },
233 [ 2] = { 720, 480, PROGRESSIVE, 858, 138, 525, 45.0, 31.469, 59.940, 27.000 },
234 [ 3] = { 720, 480, PROGRESSIVE, 858, 138, 525, 45.0, 31.469, 59.940, 27.000 },
235 [ 4] = { 1280, 720, PROGRESSIVE, 1650, 370, 750, 30.0, 45.000, 60.000, 74.250 },
236 [ 5] = { 1920,1080, INTERLACED, 2200, 280, 1125, 22.5, 33.750, 60.000, 72.250 },
237 [ 6] = { 1440, 480, INTERLACED, 1716, 276, 525, 22.5, 15.734, 59.940, 27.000 },
238 [ 7] = { 1440, 480, INTERLACED, 1716, 276, 525, 22.5, 15.734, 59.940, 27.000 },
239 [ 8] = { 1440, 240, PROGRESSIVE, 1716, 276, 262, 22.0, 15.734, 60.054, 27.000 },
240 [ 9] = { 1440, 240, PROGRESSIVE, 1716, 276, 262, 22.0, 15.734, 59.826, 27.000 },
241 [ 10] = { 2880, 480, INTERLACED, 3432, 552, 525, 22.5, 15.734, 59.940, 54.000 },
242 [ 11] = { 2880, 480, INTERLACED, 3432, 552, 525, 22.5, 15.734, 59.940, 54.000 },
243 [ 12] = { 2880, 240, PROGRESSIVE, 3432, 552, 262, 22.0, 15.734, 60.054, 54.000 },
244 [ 13] = { 2880, 240, PROGRESSIVE, 3432, 552, 262, 22.0, 15.734, 59.826, 54.000 },
245 [ 14] = { 1440, 480, PROGRESSIVE, 1716, 276, 525, 45.0, 31.469, 59.940, 54.000 },
246 [ 15] = { 1440, 480, PROGRESSIVE, 1716, 276, 525, 45.0, 31.469, 59.940, 54.000 },
247 [ 16] = { 1920, 1080, PROGRESSIVE, 2200, 280, 1125, 45.0, 67.500, 60.000, 148.500 },
248 [ 17] = { 720, 576, PROGRESSIVE, 864, 144, 625, 49.0, 31.250, 50.000, 27.000 },
249 [ 18] = { 720, 576, PROGRESSIVE, 864, 144, 625, 49.0, 31.250, 50.000, 27.000 },
250 [ 19] = { 1280, 720, PROGRESSIVE, 1980, 700, 750, 30.0, 37.500, 50.000, 74.250 },
251 [ 20] = { 1920, 1080, INTERLACED, 2640, 720, 1125, 22.5, 28.125, 50.000, 74.250 },
252 [ 21] = { 1440, 576, INTERLACED, 1728, 288, 625, 24.5, 15.625, 50.000, 27.000 },
253 [ 22] = { 1440, 576, INTERLACED, 1728, 288, 625, 24.5, 15.625, 50.000, 27.000 },
254 [ 23] = { 1440, 288, PROGRESSIVE, 1728, 288, 312, 24.0, 15.625, 50.080, 27.000 },
255 [ 24] = { 1440, 288, PROGRESSIVE, 1728, 288, 313, 25.0, 15.625, 49.920, 27.000 },
256 [ 25] = { 2880, 576, INTERLACED, 3456, 576, 625, 24.5, 15.625, 50.000, 54.000 },
257 [ 26] = { 2880, 576, INTERLACED, 3456, 576, 625, 24.5, 15.625, 50.000, 54.000 },
258 [ 27] = { 2880, 288, PROGRESSIVE, 3456, 576, 312, 24.0, 15.625, 50.080, 54.000 },
259 [ 28] = { 2880, 288, PROGRESSIVE, 3456, 576, 313, 25.0, 15.625, 49.920, 54.000 },
260 [ 29] = { 1440, 576, PROGRESSIVE, 1728, 288, 625, 49.0, 31.250, 50.000, 54.000 },
261 [ 30] = { 1440, 576, PROGRESSIVE, 1728, 288, 625, 49.0, 31.250, 50.000, 54.000 },
262 [ 31] = { 1920, 1080, PROGRESSIVE, 2640, 720, 1125, 45.0, 56.250, 50.000, 148.500 },
263 [ 32] = { 1920, 1080, PROGRESSIVE, 2750, 830, 1125, 45.0, 27.000, 24.000, 74.250 },
264 [ 33] = { 1920, 1080, PROGRESSIVE, 2640, 720, 1125, 45.0, 28.125, 25.000, 74.250 },
265 [ 34] = { 1920, 1080, PROGRESSIVE, 2200, 280, 1125, 45.0, 33.750, 30.000, 74.250 },
266 [ 35] = { 2880, 480, PROGRESSIVE, 3432, 552, 525, 45.0, 31.469, 59.940, 108.500 },
267 [ 36] = { 2880, 480, PROGRESSIVE, 3432, 552, 525, 45.0, 31.469, 59.940, 108.500 },
268 [ 37] = { 2880, 576, PROGRESSIVE, 3456, 576, 625, 49.0, 31.250, 50.000, 108.000 },
269 [ 38] = { 2880, 576, PROGRESSIVE, 3456, 576, 625, 49.0, 31.250, 50.000, 108.000 },
270 [ 39] = { 1920, 1080, INTERLACED, 2304, 384, 1250, 85.0, 31.250, 50.000, 72.000 },
271 [ 40] = { 1920, 1080, INTERLACED, 2640, 720, 1125, 22.5, 56.250, 100.000, 148.500 },
272 [ 41] = { 1280, 720, PROGRESSIVE, 1980, 700, 750, 30.0, 75.000, 100.000, 148.500 },
273 [ 42] = { 720, 576, PROGRESSIVE, 864, 144, 625, 49.0, 62.500, 100.000, 54.000 },
274 [ 43] = { 720, 576, PROGRESSIVE, 864, 144, 625, 49.0, 62.500, 100.000, 54.000 },
275 [ 44] = { 1440, 576, INTERLACED, 1728, 288, 625, 24.5, 31.250, 100.000, 54.000 },
276 [ 45] = { 1440, 576, INTERLACED, 1728, 288, 625, 24.5, 31.250, 100.000, 54.000 },
277 [ 46] = { 1920, 1080, INTERLACED, 2200, 280, 1125, 22.5, 67.500, 120.000, 148.500 },
278 [ 47] = { 1280, 720, PROGRESSIVE, 1650, 370, 750, 30.0, 90.000, 120.000, 148.500 },
279 [ 48] = { 720, 480, PROGRESSIVE, 858, 138, 525, 45.0, 62.937, 119.880, 54.000 },
280 [ 49] = { 720, 480, PROGRESSIVE, 858, 138, 525, 45.0, 62.937, 119.880, 54.000 },
281 [ 50] = { 1440, 480, INTERLACED, 1716, 276, 525, 22.5, 31.469, 119.880, 54.000 },
282 [ 51] = { 1440, 480, INTERLACED, 1716, 276, 525, 22.5, 31.469, 119.880, 54.000 },
283 [ 52] = { 720, 576, PROGRESSIVE, 864, 144, 625, 49.0, 125.000, 200.000, 108.000 },
284 [ 53] = { 720, 576, PROGRESSIVE, 864, 144, 625, 49.0, 125.000, 200.000, 108.000 },
285 [ 54] = { 1440, 576, INTERLACED, 1728, 288, 625, 24.5, 62.500, 200.000, 108.000 },
286 [ 55] = { 1440, 576, INTERLACED, 1728, 288, 625, 24.5, 62.500, 200.000, 108.000 },
287 [ 56] = { 720, 480, PROGRESSIVE, 858, 138, 525, 45.0, 125.874, 239.760, 108.000 },
288 [ 57] = { 720, 480, PROGRESSIVE, 858, 138, 525, 45.0, 125.874, 239.760, 108.000 },
289 [ 58] = { 1440, 480, INTERLACED, 1716, 276, 525, 22.5, 62.937, 239.760, 108.000 },
290 [ 59] = { 1440, 480, INTERLACED, 1716, 276, 525, 22.5, 62.937, 239.760, 108.000 },
291 [60 ] = {1280, 720 , PROGRESSIVE, 3300, 2020, 750 , 30 , 18 , 24.0003, 59.4 },
292 [61 ] = {1280, 720 , PROGRESSIVE, 3960, 2680, 750 , 30 , 18.75 , 25 , 74.25 },
293 [62 ] = {1280, 720 , PROGRESSIVE, 3300, 2020, 750 , 30 , 22.5 , 30.0003, 74.25 },
294 [63 ] = {1920, 1080, PROGRESSIVE, 2200, 280 , 1125, 45 , 135 , 120.003, 297 },
295 [64 ] = {1920, 1080, PROGRESSIVE, 2640, 720 , 1125, 45 , 112.5 , 100 , 297 },
296 [65 ] = {1280, 720 , PROGRESSIVE, 3300, 2020, 750 , 30 , 18 , 24.0003, 59.4 },
297 [66 ] = {1280, 720 , PROGRESSIVE, 3960, 2680, 750 , 30 , 18.75 , 25 , 74.25 },
298 [67 ] = {1280, 720 , PROGRESSIVE, 3300, 2020, 750 , 30 , 22.5 , 30.0003, 74.25 },
299 [68 ] = {1280, 720 , PROGRESSIVE, 1980, 700 , 750 , 30 , 37.5 , 50 , 74.25 },
300 [69 ] = {1280, 720 , PROGRESSIVE, 1650, 370 , 750 , 30 , 45 , 60.0003, 74.25 },
301 [70 ] = {1280, 720 , PROGRESSIVE, 1980, 700 , 750 , 30 , 75 , 100 , 148.5 },
302 [71 ] = {1280, 720 , PROGRESSIVE, 1650, 370 , 750 , 30 , 90 , 120.003, 148.5 },
303 [72 ] = {1920, 1080, PROGRESSIVE, 2750, 830 , 1125, 45 , 27 , 24.0003, 74.25 },
304 [73 ] = {1920, 1080, PROGRESSIVE, 2640, 720 , 1125, 45 , 28.125 , 25 , 74.25 },
305 [74 ] = {1920, 1080, PROGRESSIVE, 2200, 280 , 1125, 45 , 33.75 , 30.0003, 74.25 },
306 [75 ] = {1920, 1080, PROGRESSIVE, 2640, 720 , 1125, 45 , 56.25 , 50 , 148.5 },
307 [76 ] = {1920, 1080, PROGRESSIVE, 2200, 280 , 1125, 45 , 67.5 , 60.0003, 148.5 },
308 [77 ] = {1920, 1080, PROGRESSIVE, 2640, 720 , 1125, 45 , 112.5 , 100 , 297 },
309 [78 ] = {1920, 1080, PROGRESSIVE, 2200, 280 , 1125, 45 , 135 , 120.003, 297 },
310 [79 ] = {1680, 720 , PROGRESSIVE, 3300, 1620, 750 , 30 , 18 , 24.0003, 59.4 },
311 [80 ] = {1680, 720 , PROGRESSIVE, 3168, 1488, 750 , 30 , 18.75 , 25 , 59.4 },
312 [81 ] = {1680, 720 , PROGRESSIVE, 2640, 960 , 750 , 30 , 22.5 , 30.0003, 59.4 },
313 [82 ] = {1680, 720 , PROGRESSIVE, 2200, 520 , 750 , 30 , 37.5 , 50 , 82.5 },
314 [83 ] = {1680, 720 , PROGRESSIVE, 2200, 520 , 750 , 30 , 45 , 60.0003, 99 },
315 [84 ] = {1680, 720 , PROGRESSIVE, 2000, 320 , 825 , 105 , 82.5 , 100 , 165 },
316 [85 ] = {1680, 720 , PROGRESSIVE, 2000, 320 , 825 , 105 , 99 , 120.003, 198 },
317 [86 ] = {2560, 1080, PROGRESSIVE, 3750, 1190, 1100, 20 , 26.4 , 24.0003, 99 },
318 [87 ] = {2560, 1080, PROGRESSIVE, 3200, 640 , 1125, 45 , 28.125 , 25 , 90 },
319 [88 ] = {2560, 1080, PROGRESSIVE, 3520, 960 , 1125, 45 , 33.75 , 30.0003, 118.8 },
320 [89 ] = {2560, 1080, PROGRESSIVE, 3300, 740 , 1125, 45 , 56.25 , 50 , 185.625 },
321 [90 ] = {2560, 1080, PROGRESSIVE, 3000, 440 , 1100, 20 , 66 , 60.0003, 198 },
322 [91 ] = {2560, 1080, PROGRESSIVE, 2970, 410 , 1250, 170 , 125 , 100 , 371.25 },
323 [92 ] = {2560, 1080, PROGRESSIVE, 3300, 740 , 1250, 170 , 150 , 120.003, 495 },
324 [93 ] = {3840, 2160, PROGRESSIVE, 5500, 1660, 2250, 90 , 54 , 24.0003, 297 },
325 [94 ] = {3840, 2160, PROGRESSIVE, 5280, 1440, 2250, 90 , 56.25 , 25 , 297 },
326 [95 ] = {3840, 2160, PROGRESSIVE, 4400, 560 , 2250, 90 , 67.5 , 30.0003, 297 },
327 [96 ] = {3840, 2160, PROGRESSIVE, 5280, 1440, 2250, 90 , 112.5 , 50 , 594 },
328 [97 ] = {3840, 2160, PROGRESSIVE, 4400, 560 , 2250, 90 , 135 , 60.0003, 594 },
329 [98 ] = {4096, 2160, PROGRESSIVE, 5500, 1404, 2250, 90 , 54 , 24.0003, 297 },
330 [99 ] = {4096, 2160, PROGRESSIVE, 5280, 1184, 2250, 90 , 56.25 , 25 , 297 },
331 [100] = {4096, 2160, PROGRESSIVE, 4400, 304 , 2250, 90 , 67.5 , 30.0003, 297 },
332 [101] = {4096, 2160, PROGRESSIVE, 5280, 1184, 2250, 90 , 112.5 , 50 , 594 },
333 [102] = {4096, 2160, PROGRESSIVE, 4400, 304 , 2250, 90 , 135 , 60.0003, 594 },
334 [103] = {3840, 2160, PROGRESSIVE, 5500, 1660, 2250, 90 , 54 , 24.0003, 297 },
335 [104] = {3840, 2160, PROGRESSIVE, 5280, 1440, 2250, 90 , 56.25 , 25 , 297 },
336 [105] = {3840, 2160, PROGRESSIVE, 4400, 560 , 2250, 90 , 67.5 , 30.0003, 297 },
337 [106] = {3840, 2160, PROGRESSIVE, 5280, 1440, 2250, 90 , 112.5 , 50 , 594 },
338 [107] = {3840, 2160, PROGRESSIVE, 4400, 560 , 2250, 90 , 135 , 60.0003, 594 },
342 struct __attribute__ (( packed )) xvidc_cea861_hdmi_vendor_specific_data_block {
343 struct xvidc_cea861_data_block_header header;
345 u8 ieee_registration_id[3]; /* LSB */
347 unsigned port_configuration_b : 4;
348 unsigned port_configuration_a : 4;
349 unsigned port_configuration_d : 4;
350 unsigned port_configuration_c : 4;
352 /* extension fields */
353 unsigned dvi_dual_link : 1;
355 unsigned yuv_444_supported : 1;
356 unsigned colour_depth_30_bit : 1;
357 unsigned colour_depth_36_bit : 1;
358 unsigned colour_depth_48_bit : 1;
359 unsigned audio_info_frame : 1;
361 u8 max_tmds_clock; /* = value * 5 */
364 unsigned interlaced_latency_fields : 1;
365 unsigned latency_fields : 1;
367 u8 video_latency; /* = (value - 1) * 2 */
368 u8 audio_latency; /* = (value - 1) * 2 */
369 u8 interlaced_video_latency;
370 u8 interlaced_audio_latency;
375 struct __attribute__ (( packed )) xvidc_cea861_hdmi_hf_vendor_specific_data_block {
376 struct xvidc_cea861_data_block_header header;
378 u8 ieee_registration_id[3]; /* LSB */
381 u8 max_tmds_char_rate;
383 unsigned osd_disparity_3d : 1;
384 unsigned dual_view_3d : 1;
385 unsigned independent_view_3d : 1;
386 unsigned lte_340mcsc_scramble : 1;
390 unsigned rr_capable : 1;
391 unsigned scdc_present : 1;
392 unsigned dc_30bit_yuv420 : 1;
393 unsigned dc_36bit_yuv420 : 1;
394 unsigned dc_48bit_yuv420 : 1;