summaryrefslogtreecommitdiff
path: root/drm-i915-dp-Use-slow-and-wide-link-training-for-everything.patch
diff options
context:
space:
mode:
Diffstat (limited to 'drm-i915-dp-Use-slow-and-wide-link-training-for-everything.patch')
-rw-r--r--drm-i915-dp-Use-slow-and-wide-link-training-for-everything.patch116
1 files changed, 0 insertions, 116 deletions
diff --git a/drm-i915-dp-Use-slow-and-wide-link-training-for-everything.patch b/drm-i915-dp-Use-slow-and-wide-link-training-for-everything.patch
deleted file mode 100644
index 61a6117..0000000
--- a/drm-i915-dp-Use-slow-and-wide-link-training-for-everything.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From d290a24cb45e73e4f8d2700d5f47c2132d066fe2 Mon Sep 17 00:00:00 2001
-From: Kai-Heng Feng <kai.heng.feng@canonical.com>
-Date: Wed, 21 Apr 2021 13:20:31 +0800
-Subject: drm/i915/dp: Use slow and wide link training for everything
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Screen flickers on Innolux eDP 1.3 panel when clock rate 540000 is in use.
-
-According to the panel vendor, though clock rate 540000 is advertised,
-but the max clock rate it really supports is 270000.
-
-Ville Syrjälä mentioned that fast and narrow also breaks some eDP 1.4
-panel, so use slow and wide training for all panels to resolve the
-issue.
-
-User also confirmed that the new strategy doesn't introduce any
-regression on XPS 9380.
-
-v2:
- - Use slow and wide for everything.
-
-Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3384
-References: https://gitlab.freedesktop.org/drm/intel/-/issues/272
-Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
-Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20210421052054.1434718-1-kai.heng.feng@canonical.com
-(cherry picked from commit acca7762eb71bc05a8f28d29320d193150051f79)
-Fixes: 2bbd6dba84d4 ("drm/i915: Try to use fast+narrow link on eDP again and fall back to the old max strategy on failure")
-Cc: <stable@vger.kernel.org> # v5.12+
-Signed-off-by: Jani Nikula <jani.nikula@intel.com>
----
- drivers/gpu/drm/i915/display/intel_dp.c | 59 +++------------------------------
- 1 file changed, 5 insertions(+), 54 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
-index 775d89b6c3fc..5a5103632564 100644
---- a/drivers/gpu/drm/i915/display/intel_dp.c
-+++ b/drivers/gpu/drm/i915/display/intel_dp.c
-@@ -1174,44 +1174,6 @@ intel_dp_compute_link_config_wide(struct intel_dp *intel_dp,
- return -EINVAL;
- }
-
--/* Optimize link config in order: max bpp, min lanes, min clock */
--static int
--intel_dp_compute_link_config_fast(struct intel_dp *intel_dp,
-- struct intel_crtc_state *pipe_config,
-- const struct link_config_limits *limits)
--{
-- const struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode;
-- int bpp, clock, lane_count;
-- int mode_rate, link_clock, link_avail;
--
-- for (bpp = limits->max_bpp; bpp >= limits->min_bpp; bpp -= 2 * 3) {
-- int output_bpp = intel_dp_output_bpp(pipe_config->output_format, bpp);
--
-- mode_rate = intel_dp_link_required(adjusted_mode->crtc_clock,
-- output_bpp);
--
-- for (lane_count = limits->min_lane_count;
-- lane_count <= limits->max_lane_count;
-- lane_count <<= 1) {
-- for (clock = limits->min_clock; clock <= limits->max_clock; clock++) {
-- link_clock = intel_dp->common_rates[clock];
-- link_avail = intel_dp_max_data_rate(link_clock,
-- lane_count);
--
-- if (mode_rate <= link_avail) {
-- pipe_config->lane_count = lane_count;
-- pipe_config->pipe_bpp = bpp;
-- pipe_config->port_clock = link_clock;
--
-- return 0;
-- }
-- }
-- }
-- }
--
-- return -EINVAL;
--}
--
- static int intel_dp_dsc_compute_bpp(struct intel_dp *intel_dp, u8 dsc_max_bpc)
- {
- int i, num_bpc;
-@@ -1461,22 +1423,11 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
- intel_dp_can_bigjoiner(intel_dp))
- pipe_config->bigjoiner = true;
-
-- if (intel_dp_is_edp(intel_dp))
-- /*
-- * Optimize for fast and narrow. eDP 1.3 section 3.3 and eDP 1.4
-- * section A.1: "It is recommended that the minimum number of
-- * lanes be used, using the minimum link rate allowed for that
-- * lane configuration."
-- *
-- * Note that we fall back to the max clock and lane count for eDP
-- * panels that fail with the fast optimal settings (see
-- * intel_dp->use_max_params), in which case the fast vs. wide
-- * choice doesn't matter.
-- */
-- ret = intel_dp_compute_link_config_fast(intel_dp, pipe_config, &limits);
-- else
-- /* Optimize for slow and wide. */
-- ret = intel_dp_compute_link_config_wide(intel_dp, pipe_config, &limits);
-+ /*
-+ * Optimize for slow and wide for everything, because there are some
-+ * eDP 1.3 and 1.4 panels don't work well with fast and narrow.
-+ */
-+ ret = intel_dp_compute_link_config_wide(intel_dp, pipe_config, &limits);
-
- /* enable compression if the mode doesn't fit available BW */
- drm_dbg_kms(&i915->drm, "Force DSC en = %d\n", intel_dp->force_dsc_en);
---
-cgit v1.2.3-1-gf6bb5
-