aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVille Syrjälä <[email protected]>2024-05-17 17:53:55 +0300
committerVille Syrjälä <[email protected]>2024-06-14 20:28:38 +0300
commitb47e62b1ed1306a5fd7ad5d2419ef865fd322851 (patch)
tree7e1e0e32112559a33b38d33cf888179b601e4233
parentcf235914f0e75eaa791ecfede2010fb701184bba (diff)
drm/i915: Utilize edp_disable_dsc from VBT
Disable eDP DSC usage when instructed to do so by the VBT. Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Jani Nikula <[email protected]>
-rw-r--r--drivers/gpu/drm/i915/display/intel_bios.c4
-rw-r--r--drivers/gpu/drm/i915/display/intel_display_types.h1
-rw-r--r--drivers/gpu/drm/i915/display/intel_dp.c4
3 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index def2ade61954..ec1e3a380360 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -1525,6 +1525,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 02ebe6f3e765..46b3cbeb4a82 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -335,6 +335,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 926b0beed666..fda9a704cd80 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1181,6 +1181,10 @@ bool intel_dp_has_dsc(const 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;