Every devdata needs a separate intel_ddi_buf_trans since each port can
request an override. Add buffer's pointer into intel_bios_encoder_data.

Initialize the pointer to NULL when no VBT was provided.

Signed-off-by: Michał Grzelak <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c 
b/drivers/gpu/drm/i915/display/intel_bios.c
index 6ac8dd16ea7b8..a3f0334c3a582 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -73,6 +73,7 @@
 struct intel_bios_encoder_data {
        struct intel_display *display;
 
+       struct intel_ddi_buf_trans *buf_trans;
        struct child_device_config child;
        struct dsc_compression_parameters_entry *dsc;
        struct list_head node;
@@ -2656,6 +2657,11 @@ static void sanitize_hdmi_level_shift(struct 
intel_bios_encoder_data *devdata,
        }
 }
 
+static void override_vswing_preemph(struct intel_bios_encoder_data *devdata)
+{
+       devdata->buf_trans = NULL;
+}
+
 static bool
 intel_bios_encoder_supports_crt(const struct intel_bios_encoder_data *devdata)
 {
@@ -2847,6 +2853,7 @@ static void parse_ddi_port(struct intel_bios_encoder_data 
*devdata)
        sanitize_dedicated_external(devdata, port);
        sanitize_device_type(devdata, port);
        sanitize_hdmi_level_shift(devdata, port);
+       override_vswing_preemph(devdata);
 }
 
 static bool has_ddi_port_info(struct intel_display *display)
@@ -3057,6 +3064,7 @@ init_vbt_missing_defaults(struct intel_display *display)
                        break;
 
                devdata->display = display;
+               devdata->buf_trans = NULL;
                child = &devdata->child;
 
                if (port == PORT_F)
-- 
2.45.2

Reply via email to