aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil-cisco@xs4all.nl>2021-06-26 10:37:04 +0200
committerHans Verkuil <hverkuil-cisco@xs4all.nl>2021-06-26 10:37:04 +0200
commitb68fa01af15c31a794cfb60d1865a0b694ad3225 (patch)
tree7086827ff4588ed169f617ea99f95cba43c37104
parenteb7831ef61e22dc5be20f9da50e804917aa54f8f (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.h2
-rw-r--r--parse-cta-block.cpp7
-rw-r--r--parse-displayid-block.cpp13
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;

Privacy Policy