On Tue, 19 May 2026, "Kandpal, Suraj" <[email protected]> wrote:
>> -----Original Message-----
>> From: Grzelak, Michal <[email protected]>
>> Sent: Thursday, May 7, 2026 7:01 AM
>> To: [email protected]; [email protected]
>> Cc: Nikula, Jani <[email protected]>; Kandpal, Suraj
>> <[email protected]>; Grzelak, Michal <[email protected]>
>> Subject: [PATCH v3 04/31] drm/i915/bios: store VBT #57's metadata in
>> intel_vbt_data
>>
>> Store number of rows and number of tables in intel_vbt_data when search for
>> the VBT #57 succeeded.
>>
>> Display version determines number of rows present in each table. pre-MTL
>> platforms should have 10 rows while MTL+ should have 16 rows.
>>
>> Signed-off-by: Michał Grzelak <[email protected]>
>> ---
>> drivers/gpu/drm/i915/display/intel_bios.c | 7 +++++++
>> drivers/gpu/drm/i915/display/intel_display_core.h | 3 +++
>> 2 files changed, 10 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c
>> b/drivers/gpu/drm/i915/display/intel_bios.c
>> index 3f9e4d31c7375..d64668c1022a7 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bios.c
>> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
>> @@ -2200,6 +2200,9 @@ parse_vswing_preemph_override(struct
>> intel_display *display)
>> return;
>>
>> drm_dbg_kms(display->drm, "VS/PE-O parsing not yet supported\n");
>> +
>> + display->vbt.num_tables = block->num_tables;
>> + display->vbt.num_rows = DISPLAY_VER(display) >= 14 ? 16 : 10;
>
> Where did you get these numbers from. Bspec reference maybe.
> I also see you harcoding this in the next patches maybe you need a helper
> that can be used.
> Also DG2 also uses 16 rows from what I can see
>
>> }
>>
>> static u8 translate_iboost(struct intel_display *display, u8 val) @@ -2997,6
>> +3000,10 @@ init_vbt_defaults(struct intel_display *display)
>>
>> !HAS_PCH_SPLIT(display));
>> drm_dbg_kms(display->drm, "Set default to SSC at %d kHz\n",
>> display->vbt.lvds_ssc_freq);
>> +
>> + /* Vswing / Preemphasis Override */
>> + display->vbt.num_tables = 0;
>> + display->vbt.num_rows = 0;
>
> Why expilicitly make the 0 now vbt gets initialized with everything 0'd out.
> As intel_display is kazalloc'd
>
>> }
>>
>> /* Common defaults which may be overridden by VBT. */ diff --git
>> a/drivers/gpu/drm/i915/display/intel_display_core.h
>> b/drivers/gpu/drm/i915/display/intel_display_core.h
>> index 76745ce6a716e..36ea4873deeb0 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
>> @@ -242,6 +242,9 @@ struct intel_vbt_data {
>> struct list_head display_devices;
>> struct list_head bdb_blocks;
>>
>> + int num_tables;
>> + int num_rows;
>
> Lets keep this u8 here too for consistency
Why? IMO always use int *unless* there's a reason not to.
> Also maybe num_vswing_tables,
> num_vswing_rows_per_table.
I'd rather see a sub-struct.
BR,
Jani.
>
> Regards,
> Suraj Kandpal
>
>> +
>> struct sdvo_device_mapping {
>> u8 initialized;
>> u8 dvo_port;
>> --
>> 2.45.2
>
--
Jani Nikula, Intel