diff options
author | Hans Verkuil <hverkuil-cisco@xs4all.nl> | 2021-06-26 10:37:04 +0200 |
---|---|---|
committer | Hans Verkuil <hverkuil-cisco@xs4all.nl> | 2021-06-26 10:37:04 +0200 |
commit | b68fa01af15c31a794cfb60d1865a0b694ad3225 (patch) | |
tree | 7086827ff4588ed169f617ea99f95cba43c37104 | |
parent | eb7831ef61e22dc5be20f9da50e804917aa54f8f (diff) |
edid-decode: drop block revision for Type 10 timings
The use of block_rev = 1 for Type 10 timings was a mistake in the E8
errata and should be dropped. Only block_rev 0 is to be used.
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
-rw-r--r-- | edid-decode.h | 2 | ||||
-rw-r--r-- | parse-cta-block.cpp | 7 | ||||
-rw-r--r-- | parse-displayid-block.cpp | 13 |
3 files changed, 7 insertions, 15 deletions
diff --git a/edid-decode.h b/edid-decode.h index 234a7b5..612d22a 100644 --- a/edid-decode.h +++ b/edid-decode.h @@ -388,7 +388,7 @@ struct edid_state { void parse_displayid_dynamic_video_timings_range_limits(const unsigned char *x); void parse_displayid_ContainerID(const unsigned char *x); void parse_displayid_type_10_timing(const unsigned char *x, unsigned sz, - unsigned block_rev, bool is_cta = false); + bool is_cta = false); void preparse_displayid_block(const unsigned char *x); void parse_displayid_block(const unsigned char *x); void parse_displayid_vesa(const unsigned char *x); diff --git a/parse-cta-block.cpp b/parse-cta-block.cpp index fed3625..bee4015 100644 --- a/parse-cta-block.cpp +++ b/parse-cta-block.cpp @@ -1898,10 +1898,7 @@ void edid_state::cta_displayid_type_8(const unsigned char *x, unsigned length) void edid_state::cta_displayid_type_10(const unsigned char *x, unsigned length) { - if (x[0] & 7) - check_displayid_datablock_revision(x[0], 0x70, 1); - else - check_displayid_datablock_revision(x[0], 0x70); + check_displayid_datablock_revision(x[0], 0x70); if (length < 7U + ((x[0] & 0x70) >> 4)) { fail("Empty Data Block with length %u.\n", length); return; @@ -1911,7 +1908,7 @@ void edid_state::cta_displayid_type_10(const unsigned char *x, unsigned length) x++; length--; for (unsigned i = 0; i < length / sz; i++) - parse_displayid_type_10_timing(x + i * sz, sz, x[0] & 7, true); + parse_displayid_type_10_timing(x + i * sz, sz, true); } static void cta_hdmi_audio_block(const unsigned char *x, unsigned length) diff --git a/parse-displayid-block.cpp b/parse-displayid-block.cpp index 606d16e..9713c46 100644 --- a/parse-displayid-block.cpp +++ b/parse-displayid-block.cpp @@ -1367,8 +1367,7 @@ void edid_state::parse_displayid_ContainerID(const unsigned char *x) // tag 0x32 void edid_state::parse_displayid_type_10_timing(const unsigned char *x, - unsigned sz, unsigned block_rev, - bool is_cta) + unsigned sz, bool is_cta) { struct timings t = {}; std::string s("aspect "); @@ -1422,7 +1421,7 @@ void edid_state::parse_displayid_type_10_timing(const unsigned char *x, unsigned refresh = 1 + x[5] + (sz == 6 ? 0 : ((x[6] & 3) << 8)); double add_vert_time = 0; - if (sz > 6 && block_rev > 0 && rb == RB_CVT_V3) { + if (sz > 6 && rb == RB_CVT_V3) { unsigned delta_hblank = (x[6] >> 2) & 7; if (rb_h_blank == 80) @@ -1847,13 +1846,9 @@ void edid_state::parse_displayid_block(const unsigned char *x) case 0x32: { unsigned sz = 6 + ((x[offset + 1] & 0x70) >> 4); - if (block_rev) - check_displayid_datablock_revision(x[offset + 1], 0x70, 1); - else - check_displayid_datablock_revision(x[offset + 1], 0x70); + check_displayid_datablock_revision(x[offset + 1], 0x70); for (i = 0; i < len / sz; i++) - parse_displayid_type_10_timing(&x[offset + 3 + i * sz], - sz, block_rev); + parse_displayid_type_10_timing(&x[offset + 3 + i * sz], sz); break; } case 0x81: parse_displayid_cta_data_block(x + offset); break; |