xref: /rk3399_rockchip-uboot/include/linux/hdmi.h (revision 21016d27c500da4326bdc59cd3505fcd85d236db)
1*21016d27SAlgea Cao /*
2*21016d27SAlgea Cao  * Copyright (C) 2012 Avionic Design GmbH
3*21016d27SAlgea Cao  * (C) Copyright 2008-2017 Fuzhou Rockchip Electronics Co., Ltd
4*21016d27SAlgea Cao  *
5*21016d27SAlgea Cao  * Permission is hereby granted, free of charge, to any person obtaining a
6*21016d27SAlgea Cao  * copy of this software and associated documentation files (the "Software"),
7*21016d27SAlgea Cao  * to deal in the Software without restriction, including without limitation
8*21016d27SAlgea Cao  * the rights to use, copy, modify, merge, publish, distribute, sub license,
9*21016d27SAlgea Cao  * and/or sell copies of the Software, and to permit persons to whom the
10*21016d27SAlgea Cao  * Software is furnished to do so, subject to the following conditions:
11*21016d27SAlgea Cao  *
12*21016d27SAlgea Cao  * The above copyright notice and this permission notice (including the
13*21016d27SAlgea Cao  * next paragraph) shall be included in all copies or substantial portions
14*21016d27SAlgea Cao  * of the Software.
15*21016d27SAlgea Cao  *
16*21016d27SAlgea Cao  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17*21016d27SAlgea Cao  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18*21016d27SAlgea Cao  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
19*21016d27SAlgea Cao  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20*21016d27SAlgea Cao  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21*21016d27SAlgea Cao  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22*21016d27SAlgea Cao  * DEALINGS IN THE SOFTWARE.
23*21016d27SAlgea Cao  */
24*21016d27SAlgea Cao 
25*21016d27SAlgea Cao #ifndef __LINUX_HDMI_H_
26*21016d27SAlgea Cao #define __LINUX_HDMI_H_
27*21016d27SAlgea Cao 
28*21016d27SAlgea Cao #include <linux/types.h>
29*21016d27SAlgea Cao 
30*21016d27SAlgea Cao enum hdmi_infoframe_type {
31*21016d27SAlgea Cao 	HDMI_INFOFRAME_TYPE_VENDOR = 0x81,
32*21016d27SAlgea Cao 	HDMI_INFOFRAME_TYPE_AVI = 0x82,
33*21016d27SAlgea Cao 	HDMI_INFOFRAME_TYPE_SPD = 0x83,
34*21016d27SAlgea Cao 	HDMI_INFOFRAME_TYPE_AUDIO = 0x84,
35*21016d27SAlgea Cao };
36*21016d27SAlgea Cao 
37*21016d27SAlgea Cao #define HDMI_IEEE_OUI 0x000c03
38*21016d27SAlgea Cao #define HDMI_FORUM_IEEE_OUI 0xc45dd8
39*21016d27SAlgea Cao #define HDMI_INFOFRAME_HEADER_SIZE  4
40*21016d27SAlgea Cao #define HDMI_AVI_INFOFRAME_SIZE    13
41*21016d27SAlgea Cao #define HDMI_SPD_INFOFRAME_SIZE    25
42*21016d27SAlgea Cao #define HDMI_AUDIO_INFOFRAME_SIZE  10
43*21016d27SAlgea Cao 
44*21016d27SAlgea Cao #define HDMI_INFOFRAME_SIZE(type)	\
45*21016d27SAlgea Cao 	(HDMI_INFOFRAME_HEADER_SIZE + HDMI_ ## type ## _INFOFRAME_SIZE)
46*21016d27SAlgea Cao 
47*21016d27SAlgea Cao struct hdmi_any_infoframe {
48*21016d27SAlgea Cao 	enum hdmi_infoframe_type type;
49*21016d27SAlgea Cao 	unsigned char version;
50*21016d27SAlgea Cao 	unsigned char length;
51*21016d27SAlgea Cao };
52*21016d27SAlgea Cao 
53*21016d27SAlgea Cao enum hdmi_colorspace {
54*21016d27SAlgea Cao 	HDMI_COLORSPACE_RGB,
55*21016d27SAlgea Cao 	HDMI_COLORSPACE_YUV422,
56*21016d27SAlgea Cao 	HDMI_COLORSPACE_YUV444,
57*21016d27SAlgea Cao 	HDMI_COLORSPACE_YUV420,
58*21016d27SAlgea Cao 	HDMI_COLORSPACE_RESERVED4,
59*21016d27SAlgea Cao 	HDMI_COLORSPACE_RESERVED5,
60*21016d27SAlgea Cao 	HDMI_COLORSPACE_RESERVED6,
61*21016d27SAlgea Cao 	HDMI_COLORSPACE_IDO_DEFINED,
62*21016d27SAlgea Cao };
63*21016d27SAlgea Cao 
64*21016d27SAlgea Cao enum hdmi_scan_mode {
65*21016d27SAlgea Cao 	HDMI_SCAN_MODE_NONE,
66*21016d27SAlgea Cao 	HDMI_SCAN_MODE_OVERSCAN,
67*21016d27SAlgea Cao 	HDMI_SCAN_MODE_UNDERSCAN,
68*21016d27SAlgea Cao 	HDMI_SCAN_MODE_RESERVED,
69*21016d27SAlgea Cao };
70*21016d27SAlgea Cao 
71*21016d27SAlgea Cao enum hdmi_colorimetry {
72*21016d27SAlgea Cao 	HDMI_COLORIMETRY_NONE,
73*21016d27SAlgea Cao 	HDMI_COLORIMETRY_ITU_601,
74*21016d27SAlgea Cao 	HDMI_COLORIMETRY_ITU_709,
75*21016d27SAlgea Cao 	HDMI_COLORIMETRY_EXTENDED,
76*21016d27SAlgea Cao };
77*21016d27SAlgea Cao 
78*21016d27SAlgea Cao enum hdmi_picture_aspect {
79*21016d27SAlgea Cao 	HDMI_PICTURE_ASPECT_NONE,
80*21016d27SAlgea Cao 	HDMI_PICTURE_ASPECT_4_3,
81*21016d27SAlgea Cao 	HDMI_PICTURE_ASPECT_16_9,
82*21016d27SAlgea Cao 	HDMI_PICTURE_ASPECT_64_27,
83*21016d27SAlgea Cao 	HDMI_PICTURE_ASPECT_256_135,
84*21016d27SAlgea Cao 	HDMI_PICTURE_ASPECT_RESERVED,
85*21016d27SAlgea Cao };
86*21016d27SAlgea Cao 
87*21016d27SAlgea Cao enum hdmi_active_aspect {
88*21016d27SAlgea Cao 	HDMI_ACTIVE_ASPECT_16_9_TOP = 2,
89*21016d27SAlgea Cao 	HDMI_ACTIVE_ASPECT_14_9_TOP = 3,
90*21016d27SAlgea Cao 	HDMI_ACTIVE_ASPECT_16_9_CENTER = 4,
91*21016d27SAlgea Cao 	HDMI_ACTIVE_ASPECT_PICTURE = 8,
92*21016d27SAlgea Cao 	HDMI_ACTIVE_ASPECT_4_3 = 9,
93*21016d27SAlgea Cao 	HDMI_ACTIVE_ASPECT_16_9 = 10,
94*21016d27SAlgea Cao 	HDMI_ACTIVE_ASPECT_14_9 = 11,
95*21016d27SAlgea Cao 	HDMI_ACTIVE_ASPECT_4_3_SP_14_9 = 13,
96*21016d27SAlgea Cao 	HDMI_ACTIVE_ASPECT_16_9_SP_14_9 = 14,
97*21016d27SAlgea Cao 	HDMI_ACTIVE_ASPECT_16_9_SP_4_3 = 15,
98*21016d27SAlgea Cao };
99*21016d27SAlgea Cao 
100*21016d27SAlgea Cao enum hdmi_extended_colorimetry {
101*21016d27SAlgea Cao 	HDMI_EXTENDED_COLORIMETRY_XV_YCC_601,
102*21016d27SAlgea Cao 	HDMI_EXTENDED_COLORIMETRY_XV_YCC_709,
103*21016d27SAlgea Cao 	HDMI_EXTENDED_COLORIMETRY_S_YCC_601,
104*21016d27SAlgea Cao 	HDMI_EXTENDED_COLORIMETRY_ADOBE_YCC_601,
105*21016d27SAlgea Cao 	HDMI_EXTENDED_COLORIMETRY_ADOBE_RGB,
106*21016d27SAlgea Cao 
107*21016d27SAlgea Cao 	/* The following EC values are only defined in CEA-861-F. */
108*21016d27SAlgea Cao 	HDMI_EXTENDED_COLORIMETRY_BT2020_CONST_LUM,
109*21016d27SAlgea Cao 	HDMI_EXTENDED_COLORIMETRY_BT2020,
110*21016d27SAlgea Cao 	HDMI_EXTENDED_COLORIMETRY_RESERVED,
111*21016d27SAlgea Cao };
112*21016d27SAlgea Cao 
113*21016d27SAlgea Cao enum hdmi_quantization_range {
114*21016d27SAlgea Cao 	HDMI_QUANTIZATION_RANGE_DEFAULT,
115*21016d27SAlgea Cao 	HDMI_QUANTIZATION_RANGE_LIMITED,
116*21016d27SAlgea Cao 	HDMI_QUANTIZATION_RANGE_FULL,
117*21016d27SAlgea Cao 	HDMI_QUANTIZATION_RANGE_RESERVED,
118*21016d27SAlgea Cao };
119*21016d27SAlgea Cao 
120*21016d27SAlgea Cao /* non-uniform picture scaling */
121*21016d27SAlgea Cao enum hdmi_nups {
122*21016d27SAlgea Cao 	HDMI_NUPS_UNKNOWN,
123*21016d27SAlgea Cao 	HDMI_NUPS_HORIZONTAL,
124*21016d27SAlgea Cao 	HDMI_NUPS_VERTICAL,
125*21016d27SAlgea Cao 	HDMI_NUPS_BOTH,
126*21016d27SAlgea Cao };
127*21016d27SAlgea Cao 
128*21016d27SAlgea Cao enum hdmi_ycc_quantization_range {
129*21016d27SAlgea Cao 	HDMI_YCC_QUANTIZATION_RANGE_LIMITED,
130*21016d27SAlgea Cao 	HDMI_YCC_QUANTIZATION_RANGE_FULL,
131*21016d27SAlgea Cao };
132*21016d27SAlgea Cao 
133*21016d27SAlgea Cao enum hdmi_content_type {
134*21016d27SAlgea Cao 	HDMI_CONTENT_TYPE_GRAPHICS,
135*21016d27SAlgea Cao 	HDMI_CONTENT_TYPE_PHOTO,
136*21016d27SAlgea Cao 	HDMI_CONTENT_TYPE_CINEMA,
137*21016d27SAlgea Cao 	HDMI_CONTENT_TYPE_GAME,
138*21016d27SAlgea Cao };
139*21016d27SAlgea Cao 
140*21016d27SAlgea Cao struct hdmi_avi_infoframe {
141*21016d27SAlgea Cao 	enum hdmi_infoframe_type type;
142*21016d27SAlgea Cao 	unsigned char version;
143*21016d27SAlgea Cao 	unsigned char length;
144*21016d27SAlgea Cao 	enum hdmi_colorspace colorspace;
145*21016d27SAlgea Cao 	enum hdmi_scan_mode scan_mode;
146*21016d27SAlgea Cao 	enum hdmi_colorimetry colorimetry;
147*21016d27SAlgea Cao 	enum hdmi_picture_aspect picture_aspect;
148*21016d27SAlgea Cao 	enum hdmi_active_aspect active_aspect;
149*21016d27SAlgea Cao 	bool itc;
150*21016d27SAlgea Cao 	enum hdmi_extended_colorimetry extended_colorimetry;
151*21016d27SAlgea Cao 	enum hdmi_quantization_range quantization_range;
152*21016d27SAlgea Cao 	enum hdmi_nups nups;
153*21016d27SAlgea Cao 	unsigned char video_code;
154*21016d27SAlgea Cao 	enum hdmi_ycc_quantization_range ycc_quantization_range;
155*21016d27SAlgea Cao 	enum hdmi_content_type content_type;
156*21016d27SAlgea Cao 	unsigned char pixel_repeat;
157*21016d27SAlgea Cao 	unsigned short top_bar;
158*21016d27SAlgea Cao 	unsigned short bottom_bar;
159*21016d27SAlgea Cao 	unsigned short left_bar;
160*21016d27SAlgea Cao 	unsigned short right_bar;
161*21016d27SAlgea Cao };
162*21016d27SAlgea Cao 
163*21016d27SAlgea Cao enum hdmi_spd_sdi {
164*21016d27SAlgea Cao 	HDMI_SPD_SDI_UNKNOWN,
165*21016d27SAlgea Cao 	HDMI_SPD_SDI_DSTB,
166*21016d27SAlgea Cao 	HDMI_SPD_SDI_DVDP,
167*21016d27SAlgea Cao 	HDMI_SPD_SDI_DVHS,
168*21016d27SAlgea Cao 	HDMI_SPD_SDI_HDDVR,
169*21016d27SAlgea Cao 	HDMI_SPD_SDI_DVC,
170*21016d27SAlgea Cao 	HDMI_SPD_SDI_DSC,
171*21016d27SAlgea Cao 	HDMI_SPD_SDI_VCD,
172*21016d27SAlgea Cao 	HDMI_SPD_SDI_GAME,
173*21016d27SAlgea Cao 	HDMI_SPD_SDI_PC,
174*21016d27SAlgea Cao 	HDMI_SPD_SDI_BD,
175*21016d27SAlgea Cao 	HDMI_SPD_SDI_SACD,
176*21016d27SAlgea Cao 	HDMI_SPD_SDI_HDDVD,
177*21016d27SAlgea Cao 	HDMI_SPD_SDI_PMP,
178*21016d27SAlgea Cao };
179*21016d27SAlgea Cao 
180*21016d27SAlgea Cao struct hdmi_spd_infoframe {
181*21016d27SAlgea Cao 	enum hdmi_infoframe_type type;
182*21016d27SAlgea Cao 	unsigned char version;
183*21016d27SAlgea Cao 	unsigned char length;
184*21016d27SAlgea Cao 	char vendor[8];
185*21016d27SAlgea Cao 	char product[16];
186*21016d27SAlgea Cao 	enum hdmi_spd_sdi sdi;
187*21016d27SAlgea Cao };
188*21016d27SAlgea Cao 
189*21016d27SAlgea Cao enum hdmi_audio_coding_type {
190*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_STREAM,
191*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_PCM,
192*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_AC3,
193*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_MPEG1,
194*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_MP3,
195*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_MPEG2,
196*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_AAC_LC,
197*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_DTS,
198*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_ATRAC,
199*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_DSD,
200*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EAC3,
201*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_DTS_HD,
202*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_MLP,
203*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_DST,
204*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_WMA_PRO,
205*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_CXT,
206*21016d27SAlgea Cao };
207*21016d27SAlgea Cao 
208*21016d27SAlgea Cao enum hdmi_audio_sample_size {
209*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_SIZE_STREAM,
210*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_SIZE_16,
211*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_SIZE_20,
212*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_SIZE_24,
213*21016d27SAlgea Cao };
214*21016d27SAlgea Cao 
215*21016d27SAlgea Cao enum hdmi_audio_sample_frequency {
216*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_FREQUENCY_STREAM,
217*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_FREQUENCY_32000,
218*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_FREQUENCY_44100,
219*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_FREQUENCY_48000,
220*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_FREQUENCY_88200,
221*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_FREQUENCY_96000,
222*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_FREQUENCY_176400,
223*21016d27SAlgea Cao 	HDMI_AUDIO_SAMPLE_FREQUENCY_192000,
224*21016d27SAlgea Cao };
225*21016d27SAlgea Cao 
226*21016d27SAlgea Cao enum hdmi_audio_coding_type_ext {
227*21016d27SAlgea Cao 	/* Refer to Audio Coding Type (CT) field in Data Byte 1 */
228*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EXT_CT,
229*21016d27SAlgea Cao 
230*21016d27SAlgea Cao 	/*
231*21016d27SAlgea Cao 	 * The next three CXT values are defined in CEA-861-E only.
232*21016d27SAlgea Cao 	 * They do not exist in older versions, and in CEA-861-F they are
233*21016d27SAlgea Cao 	 * defined as 'Not in use'.
234*21016d27SAlgea Cao 	 */
235*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC,
236*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC_V2,
237*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EXT_MPEG_SURROUND,
238*21016d27SAlgea Cao 
239*21016d27SAlgea Cao 	/* The following CXT values are only defined in CEA-861-F. */
240*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC,
241*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_V2,
242*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC,
243*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EXT_DRA,
244*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_SURROUND,
245*21016d27SAlgea Cao 	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC_SURROUND = 10,
246*21016d27SAlgea Cao };
247*21016d27SAlgea Cao 
248*21016d27SAlgea Cao struct hdmi_audio_infoframe {
249*21016d27SAlgea Cao 	enum hdmi_infoframe_type type;
250*21016d27SAlgea Cao 	unsigned char version;
251*21016d27SAlgea Cao 	unsigned char length;
252*21016d27SAlgea Cao 	unsigned char channels;
253*21016d27SAlgea Cao 	enum hdmi_audio_coding_type coding_type;
254*21016d27SAlgea Cao 	enum hdmi_audio_sample_size sample_size;
255*21016d27SAlgea Cao 	enum hdmi_audio_sample_frequency sample_frequency;
256*21016d27SAlgea Cao 	enum hdmi_audio_coding_type_ext coding_type_ext;
257*21016d27SAlgea Cao 	unsigned char channel_allocation;
258*21016d27SAlgea Cao 	unsigned char level_shift_value;
259*21016d27SAlgea Cao 	bool downmix_inhibit;
260*21016d27SAlgea Cao 
261*21016d27SAlgea Cao };
262*21016d27SAlgea Cao 
263*21016d27SAlgea Cao enum hdmi_3d_structure {
264*21016d27SAlgea Cao 	HDMI_3D_STRUCTURE_INVALID = -1,
265*21016d27SAlgea Cao 	HDMI_3D_STRUCTURE_FRAME_PACKING = 0,
266*21016d27SAlgea Cao 	HDMI_3D_STRUCTURE_FIELD_ALTERNATIVE,
267*21016d27SAlgea Cao 	HDMI_3D_STRUCTURE_LINE_ALTERNATIVE,
268*21016d27SAlgea Cao 	HDMI_3D_STRUCTURE_SIDE_BY_SIDE_FULL,
269*21016d27SAlgea Cao 	HDMI_3D_STRUCTURE_L_DEPTH,
270*21016d27SAlgea Cao 	HDMI_3D_STRUCTURE_L_DEPTH_GFX_GFX_DEPTH,
271*21016d27SAlgea Cao 	HDMI_3D_STRUCTURE_TOP_AND_BOTTOM,
272*21016d27SAlgea Cao 	HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF = 8,
273*21016d27SAlgea Cao };
274*21016d27SAlgea Cao 
275*21016d27SAlgea Cao struct hdmi_vendor_infoframe {
276*21016d27SAlgea Cao 	enum hdmi_infoframe_type type;
277*21016d27SAlgea Cao 	unsigned char version;
278*21016d27SAlgea Cao 	unsigned char length;
279*21016d27SAlgea Cao 	unsigned int oui;
280*21016d27SAlgea Cao 	u8 vic;
281*21016d27SAlgea Cao 	enum hdmi_3d_structure s3d_struct;
282*21016d27SAlgea Cao 	unsigned int s3d_ext_data;
283*21016d27SAlgea Cao };
284*21016d27SAlgea Cao 
285*21016d27SAlgea Cao union hdmi_vendor_any_infoframe {
286*21016d27SAlgea Cao 	struct {
287*21016d27SAlgea Cao 		enum hdmi_infoframe_type type;
288*21016d27SAlgea Cao 		unsigned char version;
289*21016d27SAlgea Cao 		unsigned char length;
290*21016d27SAlgea Cao 		unsigned int oui;
291*21016d27SAlgea Cao 	} any;
292*21016d27SAlgea Cao 	struct hdmi_vendor_infoframe hdmi;
293*21016d27SAlgea Cao };
294*21016d27SAlgea Cao 
295*21016d27SAlgea Cao /**
296*21016d27SAlgea Cao  * union hdmi_infoframe: overall union of all abstract infoframe representations
297*21016d27SAlgea Cao  * @any: generic infoframe
298*21016d27SAlgea Cao  * @avi: avi infoframe
299*21016d27SAlgea Cao  * @spd: spd infoframe
300*21016d27SAlgea Cao  * @vendor: union of all vendor infoframes
301*21016d27SAlgea Cao  * @audio: audio infoframe
302*21016d27SAlgea Cao  *
303*21016d27SAlgea Cao  * This is used by the generic pack function. This works since all infoframes
304*21016d27SAlgea Cao  * have the same header which also indicates which type of infoframe should be
305*21016d27SAlgea Cao  * packed.
306*21016d27SAlgea Cao  */
307*21016d27SAlgea Cao union hdmi_infoframe {
308*21016d27SAlgea Cao 	struct hdmi_any_infoframe any;
309*21016d27SAlgea Cao 	struct hdmi_avi_infoframe avi;
310*21016d27SAlgea Cao 	struct hdmi_spd_infoframe spd;
311*21016d27SAlgea Cao 	union hdmi_vendor_any_infoframe vendor;
312*21016d27SAlgea Cao 	struct hdmi_audio_infoframe audio;
313*21016d27SAlgea Cao };
314*21016d27SAlgea Cao 
315*21016d27SAlgea Cao ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame,
316*21016d27SAlgea Cao 				   void *buffer, size_t size);
317*21016d27SAlgea Cao int
318*21016d27SAlgea Cao drm_hdmi_vendor_infoframe_from_display_mode(struct hdmi_vendor_infoframe *frame,
319*21016d27SAlgea Cao 					    struct drm_display_mode *mode);
320*21016d27SAlgea Cao int
321*21016d27SAlgea Cao drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe *frame,
322*21016d27SAlgea Cao 					 struct drm_display_mode *mode,
323*21016d27SAlgea Cao 					 bool is_hdmi2_sink);
324*21016d27SAlgea Cao u8 drm_match_cea_mode(struct drm_display_mode *to_match);
325*21016d27SAlgea Cao 
326*21016d27SAlgea Cao #endif /* _DRM_HDMI_H */
327