From: Ville Syrjälä Date: Fri, 17 May 2024 14:53:55 +0000 (+0300) Subject: drm/i915: Utilize edp_disable_dsc from VBT X-Git-Tag: v6.11-rc1~141^2~20^2~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b47e62b1ed1306a5fd7ad5d2419ef865fd322851;p=thirdparty%2Flinux.git 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ä Link: https://patchwork.freedesktop.org/patch/msgid/20240517145356.26103-7-ville.syrjala@linux.intel.com Reviewed-by: Jani Nikula --- diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c index def2ade619548..ec1e3a3803601 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 02ebe6f3e765d..46b3cbeb4a823 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 926b0beed666f..fda9a704cd80a 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;