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

Reply via email to