1 1.21 riastrad /* $NetBSD: hdmi.h,v 1.21 2022/07/09 18:18:36 riastradh Exp $ */ 2 1.1 riastrad 3 1.1 riastrad /*- 4 1.1 riastrad * Copyright (c) 2014 The NetBSD Foundation, Inc. 5 1.1 riastrad * All rights reserved. 6 1.1 riastrad * 7 1.1 riastrad * This code is derived from software contributed to The NetBSD Foundation 8 1.1 riastrad * by Taylor R. Campbell. 9 1.1 riastrad * 10 1.1 riastrad * Redistribution and use in source and binary forms, with or without 11 1.1 riastrad * modification, are permitted provided that the following conditions 12 1.1 riastrad * are met: 13 1.1 riastrad * 1. Redistributions of source code must retain the above copyright 14 1.1 riastrad * notice, this list of conditions and the following disclaimer. 15 1.1 riastrad * 2. Redistributions in binary form must reproduce the above copyright 16 1.1 riastrad * notice, this list of conditions and the following disclaimer in the 17 1.1 riastrad * documentation and/or other materials provided with the distribution. 18 1.1 riastrad * 19 1.1 riastrad * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 1.1 riastrad * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 1.1 riastrad * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 1.1 riastrad * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 1.1 riastrad * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 1.1 riastrad * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 1.1 riastrad * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 1.1 riastrad * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 1.1 riastrad * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 1.1 riastrad * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 1.1 riastrad * POSSIBILITY OF SUCH DAMAGE. 30 1.1 riastrad */ 31 1.1 riastrad 32 1.1 riastrad #ifndef _LINUX_HDMI_H_ 33 1.1 riastrad #define _LINUX_HDMI_H_ 34 1.1 riastrad 35 1.1 riastrad #include <sys/types.h> 36 1.1 riastrad 37 1.17 riastrad struct device; 38 1.17 riastrad 39 1.17 riastrad /* namespace */ 40 1.17 riastrad #define hdmi_audio_infoframe_init linux_hdmi_audio_infoframe_init 41 1.17 riastrad #define hdmi_audio_infoframe_pack linux_hdmi_audio_infoframe_pack 42 1.17 riastrad #define hdmi_avi_infoframe_check linux_hdmi_avi_infoframe_check 43 1.18 riastrad #define hdmi_avi_infoframe_init linux_hdmi_avi_infoframe_init 44 1.17 riastrad #define hdmi_avi_infoframe_pack linux_hdmi_avi_infoframe_pack 45 1.17 riastrad #define hdmi_drm_infoframe_check linux_hdmi_drm_infoframe_check 46 1.17 riastrad #define hdmi_drm_infoframe_init linux_hdmi_drm_infoframe_init 47 1.17 riastrad #define hdmi_drm_infoframe_pack linux_hdmi_drm_infoframe_pack 48 1.17 riastrad #define hdmi_drm_infoframe_pack_only linux_hdmi_drm_infoframe_pack_only 49 1.17 riastrad #define hdmi_infoframe_checksum linux_hdmi_infoframe_checksum 50 1.17 riastrad #define hdmi_infoframe_log linux_hdmi_infoframe_log 51 1.17 riastrad #define hdmi_infoframe_pack linux_hdmi_infoframe_pack 52 1.17 riastrad #define hdmi_infoframe_pack_only linux_hdmi_infoframe_pack_only 53 1.17 riastrad #define hdmi_infoframe_set_checksum linux_hdmi_infoframe_set_checksum 54 1.17 riastrad #define hdmi_infoframe_unpack linux_hdmi_infoframe_unpack 55 1.17 riastrad #define hdmi_spd_infoframe_check linux_hdmi_spd_infoframe_check 56 1.17 riastrad #define hdmi_spd_infoframe_init linux_hdmi_spd_infoframe_init 57 1.17 riastrad #define hdmi_spd_infoframe_pack linux_hdmi_spd_infoframe_pack 58 1.17 riastrad #define hdmi_vendor_infoframe_check linux_hdmi_vendor_infoframe_check 59 1.17 riastrad #define hdmi_vendor_infoframe_init linux_hdmi_vendor_infoframe_init 60 1.17 riastrad #define hdmi_vendor_infoframe_length linux_hdmi_vendor_infoframe_length 61 1.17 riastrad #define hdmi_vendor_infoframe_pack linux_hdmi_vendor_infoframe_pack 62 1.16 riastrad 63 1.1 riastrad enum hdmi_3d_structure { 64 1.14 riastrad HDMI_3D_STRUCTURE_INVALID = -1, 65 1.14 riastrad HDMI_3D_STRUCTURE_FRAME_PACKING = 0, 66 1.14 riastrad HDMI_3D_STRUCTURE_FIELD_ALTERNATIVE = 1, 67 1.14 riastrad HDMI_3D_STRUCTURE_LINE_ALTERNATIVE = 2, 68 1.14 riastrad HDMI_3D_STRUCTURE_SIDE_BY_SIDE_FULL = 3, 69 1.14 riastrad HDMI_3D_STRUCTURE_L_DEPTH = 4, 70 1.14 riastrad HDMI_3D_STRUCTURE_L_DEPTH_GFX_GFX_DEPTH = 5, 71 1.14 riastrad HDMI_3D_STRUCTURE_TOP_AND_BOTTOM = 6, 72 1.14 riastrad HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF = 8, 73 1.1 riastrad }; 74 1.1 riastrad 75 1.1 riastrad enum hdmi_active_aspect { 76 1.14 riastrad HDMI_ACTIVE_ASPECT_NONE = 0, 77 1.14 riastrad HDMI_ACTIVE_ASPECT_16_9_TOP = 2, 78 1.14 riastrad HDMI_ACTIVE_ASPECT_14_9_TOP = 3, 79 1.14 riastrad HDMI_ACTIVE_ASPECT_16_9_CENTER = 4, 80 1.14 riastrad HDMI_ACTIVE_ASPECT_PICTURE = 8, 81 1.14 riastrad HDMI_ACTIVE_ASPECT_4_3 = 9, 82 1.14 riastrad HDMI_ACTIVE_ASPECT_16_9 = 10, 83 1.14 riastrad HDMI_ACTIVE_ASPECT_14_9 = 11, 84 1.14 riastrad HDMI_ACTIVE_ASPECT_4_3_SP_14_9 = 13, 85 1.14 riastrad HDMI_ACTIVE_ASPECT_16_9_SP_14_9 = 14, 86 1.14 riastrad HDMI_ACTIVE_ASPECT_16_9_SP_4_3 = 15, 87 1.1 riastrad }; 88 1.1 riastrad 89 1.2 riastrad enum hdmi_audio_coding_type { 90 1.2 riastrad HDMI_AUDIO_CODING_TYPE_STREAM = 0, 91 1.2 riastrad HDMI_AUDIO_CODING_TYPE_PCM = 1, 92 1.2 riastrad HDMI_AUDIO_CODING_TYPE_AC3 = 2, 93 1.2 riastrad HDMI_AUDIO_CODING_TYPE_MPEG1 = 3, 94 1.2 riastrad HDMI_AUDIO_CODING_TYPE_MP3 = 4, 95 1.2 riastrad HDMI_AUDIO_CODING_TYPE_MPEG2 = 5, 96 1.2 riastrad HDMI_AUDIO_CODING_TYPE_AAC_LC = 6, 97 1.2 riastrad HDMI_AUDIO_CODING_TYPE_DTS = 7, 98 1.2 riastrad HDMI_AUDIO_CODING_TYPE_ATRAC = 8, 99 1.2 riastrad HDMI_AUDIO_CODING_TYPE_DSD = 9, 100 1.2 riastrad HDMI_AUDIO_CODING_TYPE_EAC3 = 10, 101 1.2 riastrad HDMI_AUDIO_CODING_TYPE_DTS_HD = 11, 102 1.2 riastrad HDMI_AUDIO_CODING_TYPE_MLP = 12, 103 1.2 riastrad HDMI_AUDIO_CODING_TYPE_DST = 13, 104 1.2 riastrad HDMI_AUDIO_CODING_TYPE_WMA_PRO = 14, 105 1.2 riastrad }; 106 1.2 riastrad 107 1.2 riastrad enum hdmi_audio_coding_type_ext { 108 1.2 riastrad HDMI_AUDIO_CODING_TYPE_EXT_STREAM = 0, 109 1.2 riastrad HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC = 1, 110 1.2 riastrad HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC_V2 = 2, 111 1.2 riastrad HDMI_AUDIO_CODING_TYPE_EXT_MPEG_SURROUND = 3, 112 1.2 riastrad }; 113 1.2 riastrad 114 1.2 riastrad enum hdmi_audio_sample_frequency { 115 1.2 riastrad HDMI_AUDIO_SAMPLE_FREQUENCY_STREAM = 0, 116 1.2 riastrad HDMI_AUDIO_SAMPLE_FREQUENCY_32000 = 1, 117 1.2 riastrad HDMI_AUDIO_SAMPLE_FREQUENCY_44100 = 2, 118 1.2 riastrad HDMI_AUDIO_SAMPLE_FREQUENCY_48000 = 3, 119 1.2 riastrad HDMI_AUDIO_SAMPLE_FREQUENCY_88200 = 4, 120 1.2 riastrad HDMI_AUDIO_SAMPLE_FREQUENCY_96000 = 5, 121 1.2 riastrad HDMI_AUDIO_SAMPLE_FREQUENCY_176400 = 6, 122 1.2 riastrad HDMI_AUDIO_SAMPLE_FREQUENCY_192000 = 7, 123 1.2 riastrad }; 124 1.2 riastrad 125 1.2 riastrad enum hdmi_audio_sample_size { 126 1.2 riastrad HDMI_AUDIO_SAMPLE_SIZE_STREAM = 0, 127 1.2 riastrad HDMI_AUDIO_SAMPLE_SIZE_16 = 1, 128 1.2 riastrad HDMI_AUDIO_SAMPLE_SIZE_20 = 2, 129 1.2 riastrad HDMI_AUDIO_SAMPLE_SIZE_24 = 3, 130 1.2 riastrad }; 131 1.2 riastrad 132 1.1 riastrad enum hdmi_colorimetry { 133 1.1 riastrad HDMI_COLORIMETRY_NONE = 0, 134 1.1 riastrad HDMI_COLORIMETRY_ITU_601 = 1, 135 1.1 riastrad HDMI_COLORIMETRY_ITU_709 = 2, 136 1.1 riastrad HDMI_COLORIMETRY_EXTENDED = 3, 137 1.1 riastrad }; 138 1.1 riastrad 139 1.1 riastrad enum hdmi_colorspace { 140 1.1 riastrad HDMI_COLORSPACE_RGB = 0, 141 1.1 riastrad HDMI_COLORSPACE_YUV422 = 1, 142 1.1 riastrad HDMI_COLORSPACE_YUV444 = 2, 143 1.14 riastrad HDMI_COLORSPACE_YUV420 = 3, 144 1.14 riastrad HDMI_COLORSPACE_IDO_DEFINED = 7, 145 1.1 riastrad }; 146 1.1 riastrad 147 1.1 riastrad enum hdmi_content_type { 148 1.7 riastrad HDMI_CONTENT_TYPE_GRAPHICS = 0, 149 1.1 riastrad HDMI_CONTENT_TYPE_PHOTO = 1, 150 1.1 riastrad HDMI_CONTENT_TYPE_CINEMA = 2, 151 1.1 riastrad HDMI_CONTENT_TYPE_GAME = 3, 152 1.1 riastrad }; 153 1.1 riastrad 154 1.1 riastrad enum hdmi_extended_colorimetry { 155 1.1 riastrad HDMI_EXTENDED_COLORIMETRY_XV_YCC_601 = 0, 156 1.1 riastrad HDMI_EXTENDED_COLORIMETRY_XV_YCC_709 = 1, 157 1.1 riastrad HDMI_EXTENDED_COLORIMETRY_S_YCC_601 = 2, 158 1.14 riastrad HDMI_EXTENDED_COLORIMETRY_OPYCC_601 = 3, 159 1.14 riastrad HDMI_EXTENDED_COLORIMETRY_OPRGB = 4, 160 1.1 riastrad }; 161 1.1 riastrad 162 1.1 riastrad enum hdmi_nups { 163 1.1 riastrad HDMI_NUPS_UNKNOWN = 0, 164 1.1 riastrad HDMI_NUPS_HORIZONTAL = 1, 165 1.1 riastrad HDMI_NUPS_VERTICAL = 2, 166 1.1 riastrad HDMI_NUPS_BOTH = 3, 167 1.1 riastrad }; 168 1.1 riastrad 169 1.1 riastrad enum hdmi_picture_aspect { 170 1.1 riastrad HDMI_PICTURE_ASPECT_NONE = 0, 171 1.1 riastrad HDMI_PICTURE_ASPECT_4_3 = 1, 172 1.1 riastrad HDMI_PICTURE_ASPECT_16_9 = 2, 173 1.7 riastrad HDMI_PICTURE_ASPECT_64_27 = 3, 174 1.7 riastrad HDMI_PICTURE_ASPECT_256_135 = 4, 175 1.7 riastrad HDMI_PICTURE_ASPECT_RESERVED = 5, 176 1.1 riastrad }; 177 1.1 riastrad 178 1.1 riastrad enum hdmi_quantization_range { 179 1.1 riastrad HDMI_QUANTIZATION_RANGE_DEFAULT = 0, 180 1.1 riastrad HDMI_QUANTIZATION_RANGE_LIMITED = 1, 181 1.1 riastrad HDMI_QUANTIZATION_RANGE_FULL = 2, 182 1.1 riastrad }; 183 1.1 riastrad 184 1.1 riastrad enum hdmi_scan_mode { 185 1.1 riastrad HDMI_SCAN_MODE_NONE = 0, 186 1.1 riastrad HDMI_SCAN_MODE_OVERSCAN = 1, 187 1.1 riastrad HDMI_SCAN_MODE_UNDERSCAN = 2, 188 1.1 riastrad }; 189 1.1 riastrad 190 1.1 riastrad enum hdmi_ycc_quantization_range { 191 1.1 riastrad HDMI_YCC_QUANTIZATION_RANGE_LIMITED = 0, 192 1.1 riastrad HDMI_YCC_QUANTIZATION_RANGE_FULL = 1, 193 1.1 riastrad }; 194 1.1 riastrad 195 1.10 riastrad enum hdmi_packet_type { 196 1.10 riastrad HDMI_PACKET_TYPE_NULL = 0x00, 197 1.10 riastrad HDMI_PACKET_TYPE_AUDIO_CLOCK_REGEN = 0x01, 198 1.10 riastrad HDMI_PACKET_TYPE_AUDIO_SAMPLE = 0x02, 199 1.10 riastrad HDMI_PACKET_TYPE_GENERAL_CONTROL = 0x03, 200 1.10 riastrad HDMI_PACKET_TYPE_ACP = 0x04, 201 1.10 riastrad HDMI_PACKET_TYPE_ISRC1 = 0x05, 202 1.10 riastrad HDMI_PACKET_TYPE_ISRC2 = 0x06, 203 1.10 riastrad HDMI_PACKET_TYPE_ONE_BIT_AUDIO_SAMPLE = 0x07, 204 1.10 riastrad HDMI_PACKET_TYPE_DST_AUDIO = 0x08, 205 1.10 riastrad HDMI_PACKET_TYPE_HBR_AUDIO_STREAM = 0x09, 206 1.10 riastrad HDMI_PACKET_TYPE_GAMUT_METADATA = 0x0a, 207 1.10 riastrad }; 208 1.10 riastrad 209 1.1 riastrad enum hdmi_infoframe_type { 210 1.1 riastrad HDMI_INFOFRAME_TYPE_VENDOR = 0x81, 211 1.1 riastrad HDMI_INFOFRAME_TYPE_AVI = 0x82, 212 1.1 riastrad HDMI_INFOFRAME_TYPE_SPD = 0x83, 213 1.1 riastrad HDMI_INFOFRAME_TYPE_AUDIO = 0x84, 214 1.10 riastrad HDMI_INFOFRAME_TYPE_DRM = 0x87, 215 1.1 riastrad }; 216 1.1 riastrad 217 1.9 riastrad enum hdmi_eotf { 218 1.14 riastrad HDMI_EOTF_TRADITIONAL_GAMMA_SDR = 0, 219 1.14 riastrad HDMI_EOTF_TRADITIONAL_GAMMA_HDR = 1, 220 1.14 riastrad HDMI_EOTF_SMPTE_ST2084 = 2, 221 1.14 riastrad HDMI_EOTF_BT_2100_HLG = 3, 222 1.9 riastrad }; 223 1.9 riastrad 224 1.9 riastrad enum hdmi_metadata_type { 225 1.14 riastrad HDMI_STATIC_METADATA_TYPE1 = 1, 226 1.9 riastrad }; 227 1.9 riastrad 228 1.11 riastrad struct hdmi_type1 { 229 1.11 riastrad enum hdmi_eotf eotf; 230 1.11 riastrad enum hdmi_metadata_type metadata_type; 231 1.11 riastrad uint16_t min_cll; 232 1.11 riastrad uint16_t max_cll; 233 1.11 riastrad uint16_t max_fall; 234 1.11 riastrad }; 235 1.11 riastrad 236 1.11 riastrad struct hdr_sink_metadata { 237 1.11 riastrad struct hdmi_type1 hdmi_type1; 238 1.11 riastrad }; 239 1.11 riastrad 240 1.1 riastrad #define HDMI_INFOFRAME_SIZE(TYPE) \ 241 1.1 riastrad (HDMI_INFOFRAME_HEADER_SIZE + HDMI_##TYPE##_INFOFRAME_SIZE) 242 1.1 riastrad 243 1.1 riastrad #define HDMI_INFOFRAME_HEADER_SIZE 4 244 1.1 riastrad struct hdmi_infoframe_header { 245 1.1 riastrad enum hdmi_infoframe_type type; 246 1.1 riastrad uint8_t version; 247 1.1 riastrad uint8_t length; 248 1.1 riastrad /* checksum */ 249 1.1 riastrad }; 250 1.1 riastrad 251 1.2 riastrad #define HDMI_AUDIO_INFOFRAME_SIZE 10 252 1.2 riastrad struct hdmi_audio_infoframe { 253 1.2 riastrad struct hdmi_infoframe_header header; 254 1.2 riastrad uint8_t channels; 255 1.2 riastrad enum hdmi_audio_coding_type coding_type; 256 1.2 riastrad enum hdmi_audio_sample_size sample_size; 257 1.2 riastrad enum hdmi_audio_sample_frequency sample_frequency; 258 1.2 riastrad enum hdmi_audio_coding_type_ext coding_type_ext; 259 1.2 riastrad uint8_t channel_allocation; 260 1.2 riastrad uint8_t level_shift_value; 261 1.2 riastrad bool downmix_inhibit; 262 1.2 riastrad }; 263 1.2 riastrad 264 1.1 riastrad #define HDMI_AVI_INFOFRAME_SIZE 13 265 1.1 riastrad struct hdmi_avi_infoframe { 266 1.1 riastrad struct hdmi_infoframe_header header; 267 1.1 riastrad enum hdmi_colorspace colorspace; 268 1.1 riastrad enum hdmi_scan_mode scan_mode; 269 1.1 riastrad enum hdmi_colorimetry colorimetry; 270 1.1 riastrad enum hdmi_picture_aspect picture_aspect; 271 1.1 riastrad enum hdmi_active_aspect active_aspect; 272 1.1 riastrad bool itc; 273 1.1 riastrad enum hdmi_extended_colorimetry extended_colorimetry; 274 1.1 riastrad enum hdmi_quantization_range quantization_range; 275 1.1 riastrad enum hdmi_nups nups; 276 1.1 riastrad uint8_t video_code; 277 1.1 riastrad enum hdmi_ycc_quantization_range ycc_quantization_range; 278 1.1 riastrad enum hdmi_content_type content_type; 279 1.1 riastrad uint8_t pixel_repeat; 280 1.1 riastrad uint16_t top_bar; 281 1.1 riastrad uint16_t bottom_bar; 282 1.1 riastrad uint16_t left_bar; 283 1.1 riastrad uint16_t right_bar; 284 1.1 riastrad }; 285 1.1 riastrad 286 1.14 riastrad #define HDMI_DRM_INFOFRAME_SIZE 26 287 1.14 riastrad struct hdmi_drm_infoframe { 288 1.14 riastrad struct hdmi_infoframe_header header; 289 1.14 riastrad enum hdmi_eotf eotf; 290 1.14 riastrad enum hdmi_metadata_type metadata_type; 291 1.14 riastrad struct { 292 1.14 riastrad uint16_t x, y; 293 1.14 riastrad } display_primaries[3]; 294 1.14 riastrad struct { 295 1.14 riastrad uint16_t x, y; 296 1.14 riastrad } white_point; 297 1.14 riastrad uint16_t max_display_mastering_luminance; 298 1.14 riastrad uint16_t min_display_mastering_luminance; 299 1.14 riastrad uint16_t max_cll; 300 1.14 riastrad uint16_t max_fall; 301 1.14 riastrad }; 302 1.14 riastrad 303 1.1 riastrad #define HDMI_SPD_INFOFRAME_SIZE 25 304 1.1 riastrad struct hdmi_spd_infoframe { 305 1.1 riastrad struct hdmi_infoframe_header header; 306 1.1 riastrad char vendor[8]; 307 1.1 riastrad char product[16]; 308 1.1 riastrad enum hdmi_spd_sdi { 309 1.1 riastrad HDMI_SPD_SDI_UNKNOWN = 0, 310 1.1 riastrad HDMI_SPD_SDI_DSTB = 1, 311 1.1 riastrad HDMI_SPD_SDI_DVDP = 2, 312 1.1 riastrad HDMI_SPD_SDI_DVHS = 3, 313 1.1 riastrad HDMI_SPD_SDI_HDDVR = 4, 314 1.1 riastrad HDMI_SPD_SDI_DVC = 5, 315 1.1 riastrad HDMI_SPD_SDI_DSC = 6, 316 1.1 riastrad HDMI_SPD_SDI_VCD = 7, 317 1.1 riastrad HDMI_SPD_SDI_GAME = 8, 318 1.1 riastrad HDMI_SPD_SDI_PC = 9, 319 1.1 riastrad HDMI_SPD_SDI_BD = 10, 320 1.1 riastrad HDMI_SPD_SDI_SACD = 11, 321 1.1 riastrad HDMI_SPD_SDI_HDDVD = 12, 322 1.1 riastrad HDMI_SPD_SDI_PMP = 13, 323 1.1 riastrad } sdi; 324 1.1 riastrad }; 325 1.1 riastrad 326 1.7 riastrad #define HDMI_IEEE_OUI 0x000c03 327 1.7 riastrad #define HDMI_FORUM_IEEE_OUI 0xc45dd8 328 1.1 riastrad 329 1.1 riastrad struct hdmi_vendor_infoframe { 330 1.1 riastrad struct hdmi_infoframe_header header; 331 1.1 riastrad uint32_t oui; 332 1.1 riastrad uint8_t vic; 333 1.1 riastrad enum hdmi_3d_structure s3d_struct; 334 1.1 riastrad unsigned s3d_ext_data; 335 1.1 riastrad }; 336 1.1 riastrad 337 1.1 riastrad union hdmi_vendor_any_infoframe { 338 1.1 riastrad struct { 339 1.1 riastrad struct hdmi_infoframe_header header; 340 1.1 riastrad uint32_t oui; 341 1.1 riastrad } any; 342 1.1 riastrad struct hdmi_vendor_infoframe hdmi; 343 1.1 riastrad }; 344 1.1 riastrad 345 1.1 riastrad union hdmi_infoframe { 346 1.1 riastrad struct hdmi_infoframe_header any; 347 1.1 riastrad struct hdmi_avi_infoframe avi; 348 1.20 riastrad struct hdmi_spd_infoframe spd; 349 1.20 riastrad struct hdmi_audio_infoframe audio; 350 1.11 riastrad struct hdmi_drm_infoframe drm; 351 1.1 riastrad union hdmi_vendor_any_infoframe vendor; 352 1.1 riastrad }; 353 1.1 riastrad 354 1.17 riastrad int hdmi_audio_infoframe_init(struct hdmi_audio_infoframe *); 355 1.17 riastrad ssize_t hdmi_audio_infoframe_pack(const struct hdmi_audio_infoframe *, void *, 356 1.17 riastrad size_t); 357 1.17 riastrad 358 1.17 riastrad int hdmi_avi_infoframe_init(struct hdmi_avi_infoframe *); 359 1.17 riastrad int hdmi_avi_infoframe_check(const struct hdmi_avi_infoframe *); 360 1.17 riastrad ssize_t hdmi_avi_infoframe_pack(const struct hdmi_avi_infoframe *, void *, 361 1.17 riastrad size_t); 362 1.17 riastrad 363 1.17 riastrad int hdmi_drm_infoframe_init(struct hdmi_drm_infoframe *); 364 1.17 riastrad int hdmi_drm_infoframe_check(const struct hdmi_drm_infoframe *); 365 1.21 riastrad ssize_t hdmi_drm_infoframe_pack(const struct hdmi_drm_infoframe *, void *, 366 1.21 riastrad size_t); 367 1.17 riastrad int hdmi_drm_infoframe_pack_only(const struct hdmi_drm_infoframe *, void *, 368 1.17 riastrad size_t); 369 1.17 riastrad 370 1.17 riastrad int hdmi_spd_infoframe_init(struct hdmi_spd_infoframe *, const char *, 371 1.17 riastrad const char *); 372 1.17 riastrad int hdmi_spd_infoframe_check(const struct hdmi_spd_infoframe *); 373 1.17 riastrad ssize_t hdmi_spd_infoframe_pack(const struct hdmi_spd_infoframe *, void *, 374 1.17 riastrad size_t); 375 1.17 riastrad 376 1.17 riastrad int hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe *); 377 1.17 riastrad int hdmi_vendor_infoframe_check(const struct hdmi_vendor_infoframe *); 378 1.21 riastrad ssize_t hdmi_vendor_infoframe_pack(const struct hdmi_vendor_infoframe *, 379 1.21 riastrad void *, size_t); 380 1.17 riastrad 381 1.17 riastrad ssize_t hdmi_infoframe_pack(const union hdmi_infoframe *, void *, size_t); 382 1.17 riastrad ssize_t hdmi_infoframe_pack_only(const union hdmi_infoframe *, void *, size_t); 383 1.17 riastrad int hdmi_infoframe_unpack(union hdmi_infoframe *, const void *, size_t); 384 1.17 riastrad void hdmi_infoframe_log(const char *, struct device *, 385 1.17 riastrad const union hdmi_infoframe *); 386 1.10 riastrad 387 1.1 riastrad #endif /* _LINUX_HDMI_H_ */ 388