Start searching for Vswing / Preemphasis Override Block during VBT parsing at init_bdb_blocks().
Check for failure since pre-ICL GOPs do not contain the block. Check also if VBT version is appropriately up-to-date. Issue a debug message when port requests to override VS/PE and parsing VBT #57 for the platform has not yet been implemented. v3->v4 - add Bspec (Suraj) Bspec: 32063 Signed-off-by: Michał Grzelak <[email protected]> Reviewed-by: Suraj Kandpal <[email protected]> --- drivers/gpu/drm/i915/display/intel_bios.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c index b6fe87c29aa7c..420b09b4d01ef 100644 --- a/drivers/gpu/drm/i915/display/intel_bios.c +++ b/drivers/gpu/drm/i915/display/intel_bios.c @@ -200,6 +200,8 @@ static const struct { .min_size = sizeof(struct bdb_mipi_sequence) }, { .section_id = BDB_COMPRESSION_PARAMETERS, .min_size = sizeof(struct bdb_compression_parameters), }, + { .section_id = BDB_VSWING_PREEMPH, + .min_size = sizeof(struct bdb_vswing_preemph), }, { .section_id = BDB_GENERIC_DTD, .min_size = sizeof(struct bdb_generic_dtd), }, }; @@ -2183,6 +2185,23 @@ parse_compression_parameters(struct intel_display *display) } } +static void +parse_vswing_preemph_override(struct intel_display *display) +{ + const struct bdb_vswing_preemph *block; + + if (display->vbt.version < 218) + return; + + block = bdb_find_section(display, BDB_VSWING_PREEMPH); + + /* pre-ICL GOPs don't have VBT #57 */ + if (!block) + return; + + drm_dbg_kms(display->drm, "valid VS/PE-O request but not yet supported\n"); +} + static u8 translate_iboost(struct intel_display *display, u8 val) { static const u8 mapping[] = { 1, 3, 7 }; /* See VBT spec */ @@ -3274,6 +3293,7 @@ void intel_bios_init(struct intel_display *display) /* Depends on child device list */ parse_compression_parameters(display); + parse_vswing_preemph_override(display); out: if (!vbt) { -- 2.45.2
