> Subject: [PATCH v7 2/8] drm/i915/bios: store VBT #57's metadata in
> intel_vbt_data
> 
> Store tables, number of tables, number of rows and number of columns in
> intel_vbt_data when search for the VBT #57 has succeeded. Structurize all
> VS/PE-O relevant metadata inside anonymous struct named as vspeo.
> 
> Presence of C20 or newer PHY causes each table to contain 16 rows. Each
> table contains 10 rows in case C20 PHY is absent. Use display version to
> determine number of rows since there is no helper in intel_bios.c to check
> presence of any C20+ PHY. pre-MTL platforms should have 10 rows while
> MTL+ should have 16 rows.
> 
> v5->v6
> - add Bspec (Suraj)
> 
> v3->v4
> - remove unnecessary init of VS/PE-O metadata (Suraj)
> - add helper for computing number of rows (Suraj)
> - fix num_rows's type (Jani, Suraj)
> - declare num_rows (Suraj)
> 
> Bspec: 68963
> Signed-off-by: Michał Grzelak <[email protected]>

LGTM,
Reviewed-by: Suraj Kandpal <[email protected]>

> ---
>  drivers/gpu/drm/i915/display/intel_bios.c         | 10 ++++++++++
>  drivers/gpu/drm/i915/display/intel_display_core.h |  7 +++++++
>  2 files changed, 17 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c
> b/drivers/gpu/drm/i915/display/intel_bios.c
> index 0c7385a3bb75..6c22853b535f 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -2185,6 +2185,11 @@ parse_compression_parameters(struct
> intel_display *display)
>       }
>  }
> 
> +static int vswing_preemph_num_rows(struct intel_display *display) {
> +     return DISPLAY_VER(display) >= 14 ? 16 : 10; }
> +
>  static void
>  parse_vswing_preemph_override(struct intel_display *display)  { @@ -2198,6
> +2203,11 @@ parse_vswing_preemph_override(struct intel_display *display)
>       /* pre-ICL GOPs don't have VBT #57 */
>       if (!block)
>               return;
> +
> +     display->vbt.vspeo.tables = block->tables;
> +     display->vbt.vspeo.num_tables = block->num_tables;
> +     display->vbt.vspeo.num_columns = block->num_columns;
> +     display->vbt.vspeo.num_rows = vswing_preemph_num_rows(display);
>  }
> 
>  static u8 translate_iboost(struct intel_display *display, u8 val) diff --git
> a/drivers/gpu/drm/i915/display/intel_display_core.h
> b/drivers/gpu/drm/i915/display/intel_display_core.h
> index 09ce25a6d4b1..061bf479458f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -242,6 +242,13 @@ struct intel_vbt_data {
>       struct list_head display_devices;
>       struct list_head bdb_blocks;
> 
> +     struct {
> +             const u32 *tables;
> +             int num_tables;
> +             int num_columns;
> +             int num_rows;
> +     } vspeo;
> +
>       struct sdvo_device_mapping {
>               u8 initialized;
>               u8 dvo_port;
> --
> 2.45.2

Reply via email to