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.

v6->v7
- parse VBT#57 before blocks dependent on child device list (Jani)
- remove debug message (Suraj)

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 | 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 b6fe87c29aa7..0c7385a3bb75 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,21 @@ 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;
+}
+
 static u8 translate_iboost(struct intel_display *display, u8 val)
 {
        static const u8 mapping[] = { 1, 3, 7 }; /* See VBT spec */
@@ -3271,6 +3288,7 @@ void intel_bios_init(struct intel_display *display)
        parse_general_features(display);
        parse_general_definitions(display);
        parse_driver_features(display);
+       parse_vswing_preemph_override(display);
 
        /* Depends on child device list */
        parse_compression_parameters(display);
-- 
2.45.2

Reply via email to