[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210804152408.584823-1-kai.heng.feng@canonical.com>
Date: Wed, 4 Aug 2021 23:24:02 +0800
From: Kai-Heng Feng <kai.heng.feng@...onical.com>
To: jani.nikula@...ux.intel.com, joonas.lahtinen@...ux.intel.com,
rodrigo.vivi@...el.com, ville.syrjala@...ux.intel.com
Cc: Kai-Heng Feng <kai.heng.feng@...onical.com>,
David Airlie <airlied@...ux.ie>,
Daniel Vetter <daniel@...ll.ch>,
Imre Deak <imre.deak@...el.com>,
Uma Shankar <uma.shankar@...el.com>,
Manasi Navare <manasi.d.navare@...el.com>,
Ankit Nautiyal <ankit.k.nautiyal@...el.com>,
José Roberto de Souza <jose.souza@...el.com>,
Sean Paul <seanpaul@...omium.org>,
intel-gfx@...ts.freedesktop.org,
dri-devel@...ts.freedesktop.org (open list:DRM DRIVERS),
linux-kernel@...r.kernel.org (open list)
Subject: [PATCH] drm/i915/dp: Use max params for older panels
Users reported that after commit 2bbd6dba84d4 ("drm/i915: Try to use
fast+narrow link on eDP again and fall back to the old max strategy on
failure"), the screen starts to have wobbly effect.
Commit a5c936add6a2 ("drm/i915/dp: Use slow and wide link training for
everything") doesn't help either, that means the affected panels only
work with max params.
The panels are all DP 1.1 ones, so apply max params to them to resolve
the issue.
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3714
Fixes: 2bbd6dba84d4 ("drm/i915: Try to use fast+narrow link on eDP again and fall back to the old max strategy on failure")
Fixes: a5c936add6a2 ("drm/i915/dp: Use slow and wide link training for everything")
Signed-off-by: Kai-Heng Feng <kai.heng.feng@...onical.com>
---
drivers/gpu/drm/i915/display/intel_dp.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 75d4ebc669411..e64bab4b016e1 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1330,14 +1330,16 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
limits.min_bpp = intel_dp_min_bpp(pipe_config->output_format);
limits.max_bpp = intel_dp_max_bpp(intel_dp, pipe_config);
- if (intel_dp->use_max_params) {
+ if (intel_dp->use_max_params ||
+ intel_dp->dpcd[DP_DPCD_REV] <= DP_DPCD_REV_11) {
/*
* Use the maximum clock and number of lanes the eDP panel
* advertizes being capable of in case the initial fast
- * optimal params failed us. The panels are generally
- * designed to support only a single clock and lane
- * configuration, and typically on older panels these
- * values correspond to the native resolution of the panel.
+ * optimal params failed us or the panel is DP 1.1 or earlier.
+ * The panels are generally designed to support only a single
+ * clock and lane configuration, and typically on older panels
+ * these values correspond to the native resolution of the
+ * panel.
*/
limits.min_lane_count = limits.max_lane_count;
limits.min_clock = limits.max_clock;
--
2.31.1
Powered by blists - more mailing lists