From: Ville Syrjälä <ville.syrj...@linux.intel.com>

Disable eDP DSC usage when instructed to do so by the VBT.

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c          | 4 ++++
 drivers/gpu/drm/i915/display/intel_display_types.h | 1 +
 drivers/gpu/drm/i915/display/intel_dp.c            | 4 ++++
 3 files changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c 
b/drivers/gpu/drm/i915/display/intel_bios.c
index b0a49b2f957f..97c6fcf0fe2b 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -1512,6 +1512,10 @@ parse_edp(struct drm_i915_private *i915,
        if (i915->display.vbt.version >= 244)
                panel->vbt.edp.max_link_rate =
                        edp->edp_max_port_link_rate[panel_type] * 20;
+
+       if (i915->display.vbt.version >= 251)
+               panel->vbt.edp.dsc_disable =
+                       panel_bool(edp->edp_dsc_disable, panel_type);
 }
 
 static void
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
b/drivers/gpu/drm/i915/display/intel_display_types.h
index 9678c2b157f6..5e0372c14643 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -329,6 +329,7 @@ struct intel_vbt_panel_data {
                u8 drrs_msa_timing_delay;
                bool low_vswing;
                bool hobl;
+               bool dsc_disable;
        } edp;
 
        struct {
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index a15ef6c015c8..af298d5017d9 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1230,6 +1230,10 @@ bool intel_dp_has_dsc(struct intel_connector *connector)
        if (connector->mst_port && !HAS_DSC_MST(i915))
                return false;
 
+       if (connector->base.connector_type == DRM_MODE_CONNECTOR_eDP &&
+           connector->panel.vbt.edp.dsc_disable)
+               return false;
+
        if (!drm_dp_sink_supports_dsc(connector->dp.dsc_dpcd))
                return false;
 
-- 
2.44.1

Reply via email to