.. | .. |
---|
27 | 27 | #include <linux/types.h> |
---|
28 | 28 | #include <linux/device.h> |
---|
29 | 29 | |
---|
| 30 | +enum hdmi_packet_type { |
---|
| 31 | + HDMI_PACKET_TYPE_NULL = 0x00, |
---|
| 32 | + HDMI_PACKET_TYPE_AUDIO_CLOCK_REGEN = 0x01, |
---|
| 33 | + HDMI_PACKET_TYPE_AUDIO_SAMPLE = 0x02, |
---|
| 34 | + HDMI_PACKET_TYPE_GENERAL_CONTROL = 0x03, |
---|
| 35 | + HDMI_PACKET_TYPE_ACP = 0x04, |
---|
| 36 | + HDMI_PACKET_TYPE_ISRC1 = 0x05, |
---|
| 37 | + HDMI_PACKET_TYPE_ISRC2 = 0x06, |
---|
| 38 | + HDMI_PACKET_TYPE_ONE_BIT_AUDIO_SAMPLE = 0x07, |
---|
| 39 | + HDMI_PACKET_TYPE_DST_AUDIO = 0x08, |
---|
| 40 | + HDMI_PACKET_TYPE_HBR_AUDIO_STREAM = 0x09, |
---|
| 41 | + HDMI_PACKET_TYPE_GAMUT_METADATA = 0x0a, |
---|
| 42 | + /* + enum hdmi_infoframe_type */ |
---|
| 43 | +}; |
---|
| 44 | + |
---|
30 | 45 | enum hdmi_infoframe_type { |
---|
31 | 46 | HDMI_INFOFRAME_TYPE_VENDOR = 0x81, |
---|
32 | 47 | HDMI_INFOFRAME_TYPE_AVI = 0x82, |
---|
.. | .. |
---|
42 | 57 | #define HDMI_SPD_INFOFRAME_SIZE 25 |
---|
43 | 58 | #define HDMI_AUDIO_INFOFRAME_SIZE 10 |
---|
44 | 59 | #define HDMI_DRM_INFOFRAME_SIZE 26 |
---|
| 60 | +#define HDMI_VENDOR_INFOFRAME_SIZE 4 |
---|
45 | 61 | |
---|
46 | 62 | #define HDMI_INFOFRAME_SIZE(type) \ |
---|
47 | 63 | (HDMI_INFOFRAME_HEADER_SIZE + HDMI_ ## type ## _INFOFRAME_SIZE) |
---|
.. | .. |
---|
192 | 208 | u16 max_fall; |
---|
193 | 209 | }; |
---|
194 | 210 | |
---|
195 | | -int hdmi_avi_infoframe_init(struct hdmi_avi_infoframe *frame); |
---|
| 211 | +void hdmi_avi_infoframe_init(struct hdmi_avi_infoframe *frame); |
---|
196 | 212 | ssize_t hdmi_avi_infoframe_pack(struct hdmi_avi_infoframe *frame, void *buffer, |
---|
197 | 213 | size_t size); |
---|
198 | 214 | ssize_t hdmi_avi_infoframe_pack_only(const struct hdmi_avi_infoframe *frame, |
---|
.. | .. |
---|
204 | 220 | ssize_t hdmi_drm_infoframe_pack_only(const struct hdmi_drm_infoframe *frame, |
---|
205 | 221 | void *buffer, size_t size); |
---|
206 | 222 | int hdmi_drm_infoframe_check(struct hdmi_drm_infoframe *frame); |
---|
| 223 | +int hdmi_drm_infoframe_unpack_only(struct hdmi_drm_infoframe *frame, |
---|
| 224 | + const void *buffer, size_t size); |
---|
207 | 225 | |
---|
208 | 226 | enum hdmi_spd_sdi { |
---|
209 | 227 | HDMI_SPD_SDI_UNKNOWN, |
---|
.. | .. |
---|
352 | 370 | __u16 min_cll; |
---|
353 | 371 | }; |
---|
354 | 372 | |
---|
| 373 | +/** |
---|
| 374 | + * struct hdr_sink_metadata - HDR sink metadata |
---|
| 375 | + * |
---|
| 376 | + * Metadata Information read from Sink's EDID |
---|
| 377 | + */ |
---|
355 | 378 | struct hdr_sink_metadata { |
---|
| 379 | + /** |
---|
| 380 | + * @metadata_type: Static_Metadata_Descriptor_ID. |
---|
| 381 | + */ |
---|
356 | 382 | __u32 metadata_type; |
---|
| 383 | + /** |
---|
| 384 | + * @hdmi_type1: HDR Metadata Infoframe. |
---|
| 385 | + */ |
---|
357 | 386 | union { |
---|
358 | 387 | struct hdr_static_metadata hdmi_type1; |
---|
359 | 388 | }; |
---|
.. | .. |
---|
383 | 412 | * @spd: spd infoframe |
---|
384 | 413 | * @vendor: union of all vendor infoframes |
---|
385 | 414 | * @audio: audio infoframe |
---|
| 415 | + * @drm: Dynamic Range and Mastering infoframe |
---|
386 | 416 | * |
---|
387 | 417 | * This is used by the generic pack function. This works since all infoframes |
---|
388 | 418 | * have the same header which also indicates which type of infoframe should be |
---|
.. | .. |
---|
405 | 435 | int hdmi_infoframe_unpack(union hdmi_infoframe *frame, |
---|
406 | 436 | const void *buffer, size_t size); |
---|
407 | 437 | void hdmi_infoframe_log(const char *level, struct device *dev, |
---|
408 | | - union hdmi_infoframe *frame); |
---|
| 438 | + const union hdmi_infoframe *frame); |
---|
409 | 439 | |
---|
410 | 440 | #endif /* _DRM_HDMI_H */ |
---|