On Thu, 04 Jun 2026, Michał Grzelak <[email protected]> wrote:
> 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);

This does not depend on the child device list
(display->vbt.display_devices) which is filled by
parse_general_definitions(). The call should be placed at the end of the
group above this.

BR,
Jani.

>  
>  out:
>       if (!vbt) {

-- 
Jani Nikula, Intel

Reply via email to