This is an automatic generated email to let you know that the following patch were queued:
Subject: edid-decode: update DisplayID Type X Author: Hans Verkuil <[email protected]> Date: Wed Nov 3 10:08:09 2021 +0100 Add support for EVS and Additional_Vertical_Blank_Time as per CTA-861.6. Signed-off-by: Hans Verkuil <[email protected]> parse-displayid-block.cpp | 49 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) --- diff --git a/parse-displayid-block.cpp b/parse-displayid-block.cpp index 31bdcb68a28f..12fce07aafd2 100644 --- a/parse-displayid-block.cpp +++ b/parse-displayid-block.cpp @@ -1482,6 +1482,8 @@ void edid_state::parse_displayid_type_10_timing(const unsigned char *x, unsigned rb = t.rb; unsigned rb_h_blank = rb == RB_CVT_V3 ? 80 : 0; + unsigned rb_v_blank = 460; + bool early_vsync_rqd = false; if (x[0] & 0x10) { if (rb == RB_CVT_V2) { @@ -1498,25 +1500,42 @@ void edid_state::parse_displayid_type_10_timing(const unsigned char *x, if (x[0] & 0x80) s += ", YCbCr 4:2:0"; + if (x[0] & 0x08) { + if (rb == RB_CVT_V3) { + early_vsync_rqd = true; + s += ", early-vsync"; + } else { + fail("EVS must be 0.\n"); + } + } + unsigned refresh = 1 + x[5] + (sz == 6 ? 0 : ((x[6] & 3) << 8)); - if (sz > 6 && rb == RB_CVT_V3) { - unsigned delta_hblank = (x[6] >> 2) & 7; - - if ((x[6] >> 5) & 7) - fail("Bits 5-7 of byte 6 must be 0.\n"); - if (rb != RB_CVT_V3) { - if ((x[6] >> 2) & 7) - fail("Bits 2-4 of byte 6 must be 0.\n"); - } else if (rb_h_blank == 80) - rb_h_blank = 80 + 8 * delta_hblank; - else if (delta_hblank <= 5) - rb_h_blank = 160 + 8 * delta_hblank; - else - rb_h_blank = 160 - (delta_hblank - 5) * 8; + if (sz > 6) { + if (rb == RB_CVT_V3) { + unsigned delta_hblank = (x[6] >> 2) & 7; + + if (rb_h_blank == 80) + rb_h_blank = 80 + 8 * delta_hblank; + else if (delta_hblank <= 5) + rb_h_blank = 160 + 8 * delta_hblank; + else + rb_h_blank = 160 - (delta_hblank - 5) * 8; + if (delta_hblank) + s += ", delta-hblank=" + std::to_string(delta_hblank); + + rb_v_blank += ((x[6] >> 5) & 7) * 35; + if (rb_v_blank > 460) + s += ", add-vblank=" + std::to_string(rb_v_blank - 460); + } else { + if (x[6] & 0xe0) + fail("Additional_Vertical_Blank_Time must be 0.\n"); + if (x[6] & 0x1c) + fail("Delta_Horizontal_Blank must be 0.\n"); + } } - edid_cvt_mode(refresh, t, rb_h_blank); + edid_cvt_mode(refresh, t, rb_h_blank, rb_v_blank, early_vsync_rqd); print_timings(" ", &t, name.c_str(), s.c_str()); if (is_cta) { _______________________________________________ linuxtv-commits mailing list [email protected] https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits
