Search for VBT #57. 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.

Signed-off-by: Michał Grzelak <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c 
b/drivers/gpu/drm/i915/display/intel_bios.c
index 5700de438fdfd..3f9e4d31c7375 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -2185,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 GOP don't have VBT #57 */
+       if (!block)
+               return;
+
+       drm_dbg_kms(display->drm, "VS/PE-O parsing not yet supported\n");
+}
+
 static u8 translate_iboost(struct intel_display *display, u8 val)
 {
        static const u8 mapping[] = { 1, 3, 7 }; /* See VBT spec */
@@ -3276,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

Reply via email to