From 1e711065ea8e96d06a4ad778db369f22395ea595 Mon Sep 17 00:00:00 2001 From: Simon Ser <simon.ser@intel.com> Date: Tue, 2 Jul 2019 13:03:07 +0300 Subject: [PATCH] lib/igt_edid: add support for native DTDs in CEA extension blocks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Native Detailed Timing Descriptors follow the Data Block Collection in the CEA extension. Signed-off-by: Simon Ser <simon.ser@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> --- lib/igt_edid.c | 6 ++++-- lib/igt_edid.h | 2 +- lib/igt_kms.c | 3 +-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/igt_edid.c b/lib/igt_edid.c index 096668e68..d1aebf32c 100644 --- a/lib/igt_edid.c +++ b/lib/igt_edid.c @@ -404,15 +404,17 @@ size_t edid_cea_data_block_set_speaker_alloc(struct edid_cea_data_block *block, } void edid_ext_set_cea(struct edid_ext *ext, size_t data_blocks_size, - uint8_t flags) + uint8_t num_native_dtds, uint8_t flags) { struct edid_cea *cea = &ext->data.cea; ext->tag = EDID_EXT_CEA; + assert(num_native_dtds <= 0x0F); + assert((flags & 0x0F) == 0); cea->revision = 3; cea->dtd_start = 4 + data_blocks_size; - cea->misc = flags; /* just flags, no DTD */ + cea->misc = flags | num_native_dtds; } void edid_ext_update_cea_checksum(struct edid_ext *ext) diff --git a/lib/igt_edid.h b/lib/igt_edid.h index 7907baee0..cbd77ab63 100644 --- a/lib/igt_edid.h +++ b/lib/igt_edid.h @@ -362,6 +362,6 @@ size_t edid_cea_data_block_set_hdmi_vsdb(struct edid_cea_data_block *block, size_t edid_cea_data_block_set_speaker_alloc(struct edid_cea_data_block *block, const struct cea_speaker_alloc *speakers); void edid_ext_set_cea(struct edid_ext *ext, size_t data_blocks_size, - uint8_t flags); + uint8_t num_native_dtds, uint8_t flags); #endif diff --git a/lib/igt_kms.c b/lib/igt_kms.c index 36e3b8212..424c83159 100644 --- a/lib/igt_kms.c +++ b/lib/igt_kms.c @@ -226,8 +226,7 @@ generate_audio_edid(unsigned char raw_edid[static AUDIO_EDID_LENGTH], assert(cea_data_size <= sizeof(edid_cea->data)); - edid_ext_set_cea(edid_ext, cea_data_size, - EDID_CEA_BASIC_AUDIO); + edid_ext_set_cea(edid_ext, cea_data_size, 0, EDID_CEA_BASIC_AUDIO); edid_update_checksum(edid); edid_ext_update_cea_checksum(edid_ext); -- GitLab