diff options
author | Jani Nikula <jani.nikula@intel.com> | 2017-05-18 07:10:25 -0400 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2017-05-29 06:43:47 -0400 |
commit | b31e85eda38c58cae986162ae2c462b53b0a2065 (patch) | |
tree | 5f7c60ad4e74c0d7c53d089b9f712ae6bd8d63f4 /drivers/gpu/drm/i915/intel_dp_mst.c | |
parent | 76fa998acd86b6b40d0217e12af39c2406bdcd2b (diff) |
drm/i915: Detect USB-C specific dongles before reducing M and N
The Analogix 7737 DP to HDMI converter requires reduced M and N values
when to operate correctly at HBR2. We tried to reduce the M/N values for
all devices in commit 9a86cda07af2 ("drm/i915/dp: reduce link M/N
parameters"), but that regressed some other sinks. Detect this IC by its
OUI value of 0x0022B9 via the DPCD quirk list, and only reduce the M/N
values for that.
v2 by Jani: Rebased on the DP quirk database
v3 by Jani: Rebased on the reworked DP quirk database
v4 by Jani: Improve commit message (Daniel)
Fixes: 9a86cda07af2 ("drm/i915/dp: reduce link M/N parameters")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93578
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100755
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/2d2e30f8f47d3f28c9b74ca2612336a54585c3ec.1495105635.git.jani.nikula@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dp_mst.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp_mst.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index c1f62eb07c07..989e25577ac0 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c | |||
@@ -44,6 +44,8 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder, | |||
44 | int lane_count, slots; | 44 | int lane_count, slots; |
45 | const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode; | 45 | const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode; |
46 | int mst_pbn; | 46 | int mst_pbn; |
47 | bool reduce_m_n = drm_dp_has_quirk(&intel_dp->desc, | ||
48 | DP_DPCD_QUIRK_LIMITED_M_N); | ||
47 | 49 | ||
48 | pipe_config->has_pch_encoder = false; | 50 | pipe_config->has_pch_encoder = false; |
49 | bpp = 24; | 51 | bpp = 24; |
@@ -75,7 +77,8 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder, | |||
75 | intel_link_compute_m_n(bpp, lane_count, | 77 | intel_link_compute_m_n(bpp, lane_count, |
76 | adjusted_mode->crtc_clock, | 78 | adjusted_mode->crtc_clock, |
77 | pipe_config->port_clock, | 79 | pipe_config->port_clock, |
78 | &pipe_config->dp_m_n); | 80 | &pipe_config->dp_m_n, |
81 | reduce_m_n); | ||
79 | 82 | ||
80 | pipe_config->dp_m_n.tu = slots; | 83 | pipe_config->dp_m_n.tu = slots; |
81 | 84 | ||