summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSimon Ser <simon.ser@intel.com>2019-07-02 13:03:07 +0300
committerSimon Ser <simon.ser@intel.com>2019-07-05 16:06:40 +0300
commit1e711065ea8e96d06a4ad778db369f22395ea595 (patch)
treefc257f3d4e6183cd06c265a3bc8671ab967612c5 /lib
parent4a8461f0bea8edbaa9f18a6e554dd36be7bdb3ee (diff)
lib/igt_edid: add support for native DTDs in CEA extension blocks
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>
Diffstat (limited to 'lib')
-rw-r--r--lib/igt_edid.c6
-rw-r--r--lib/igt_edid.h2
-rw-r--r--lib/igt_kms.c3
3 files changed, 6 insertions, 5 deletions
diff --git a/lib/igt_edid.c b/lib/igt_edid.c
index 096668e6..d1aebf32 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 7907baee..cbd77ab6 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 36e3b821..424c8315 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);