On Tue, 19 May 2026, "Kandpal, Suraj" <[email protected]> wrote:
>> 
>> Add into intel_encoder constant pointer to intel_ddi_buf_trans. Track with it
>> VS/PE-O buffer from corresponding BIOS encoder.
>> 
>> Add helper function into intel_bios.[ch] to extract port's 
>> intel_ddi_buf_trans
>> pointer. Cache the pointer by default into each intel_encoder during
>> intel_ddi_init().
>> 
>> This is needed as devdata->buf_trans has been allocated per each port during
>> parsing DDI ports in intel_bios.c. Meanwhile every encoder will need to know
>> if VS/PE overriding is requested during intel_ddi_buf_trans_init().
>> 
>> Signed-off-by: Michał Grzelak <[email protected]>
>> ---
>>  drivers/gpu/drm/i915/display/intel_bios.c          | 6 ++++++
>>  drivers/gpu/drm/i915/display/intel_bios.h          | 2 ++
>>  drivers/gpu/drm/i915/display/intel_ddi.c           | 1 +
>>  drivers/gpu/drm/i915/display/intel_display_types.h | 1 +
>>  4 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 1b813a3dff245..6893aa9f01aec 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bios.c
>> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
>> @@ -3851,6 +3851,12 @@ bool intel_bios_encoder_supports_tbt(const
>> struct intel_bios_encoder_data *devda
>>      return devdata->display->vbt.version >= 209 && devdata->child.tbt;  }
>> 
>> +const struct intel_ddi_buf_trans *
>> +intel_bios_encoder_extract_vswing(const struct intel_bios_encoder_data
>> +*devdata) {
>> +    return devdata->buf_trans;
>> +}
>> +
>>  bool intel_bios_encoder_overrides_vswing(const struct
>> intel_bios_encoder_data *devdata)  {
>>      return devdata->display->vbt.version >= 218 && diff --git
>> a/drivers/gpu/drm/i915/display/intel_bios.h
>> b/drivers/gpu/drm/i915/display/intel_bios.h
>> index 50c8fc91fbe85..cf040b9b7915b 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bios.h
>> +++ b/drivers/gpu/drm/i915/display/intel_bios.h
>> @@ -73,6 +73,8 @@ bool intel_bios_get_dsc_params(struct intel_encoder
>> *encoder,  const struct intel_bios_encoder_data *
>> intel_bios_encoder_data_lookup(struct intel_display *display, enum port
>> port);
>> 
>> +const struct intel_ddi_buf_trans *
>> +intel_bios_encoder_extract_vswing(const struct intel_bios_encoder_data
>> +*devdata);
>>  bool intel_bios_encoder_overrides_vswing(const struct
>> intel_bios_encoder_data *devdata);  bool
>> intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data
>> *devdata);  bool intel_bios_encoder_supports_hdmi(const struct
>> intel_bios_encoder_data *devdata); diff --git
>> a/drivers/gpu/drm/i915/display/intel_ddi.c
>> b/drivers/gpu/drm/i915/display/intel_ddi.c
>> index 2681940a5cfe3..eb188b27ec96b 100644
>> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
>> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
>> @@ -5249,6 +5249,7 @@ void intel_ddi_init(struct intel_display *display,
>> 
>>      encoder = &dig_port->base;
>>      encoder->devdata = devdata;
>> +    encoder->vspeo = intel_bios_encoder_extract_vswing(devdata);
>> 
>>      drm_encoder_init(display->drm, &encoder->base, &intel_ddi_funcs,
>>                       DRM_MODE_ENCODER_TMDS, "%s",
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
>> b/drivers/gpu/drm/i915/display/intel_display_types.h
>> index 26e59110e7435..0f27bcfb69223 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
>> @@ -297,6 +297,7 @@ struct intel_encoder {
>> 
>>      /* VBT information for this encoder (may be NULL for older platforms)
>> */
>>      const struct intel_bios_encoder_data *devdata;
>> +    const struct intel_ddi_buf_trans *vspeo;
>
> I don’t get why this is really needed you have devdata available you can get 
> this data on fly why the helper and caching . Even after caching it points to 
> same table.

Agreed.

>
> Regards,
> Suraj Kandpal
>
>>  };
>> 
>>  struct intel_panel_bl_funcs {
>> --
>> 2.45.2
>

-- 
Jani Nikula, Intel

Reply via email to