summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_dp.c
diff options
context:
space:
mode:
authorVille Syrjälä2015-03-12 16:10:34 +0100
committerDaniel Vetter2015-03-20 11:48:07 +0100
commit50fec21a7db84a5c40e27c83bd55a5c9b435efbf (patch)
treee900b8ccb691355181fc24511e48d3a9aeeb9a50 /drivers/gpu/drm/i915/intel_dp.c
parentdrm/i915: Hide the source vs. sink rate handling from intel_dp_compute_config() (diff)
downloadkernel-qcow2-linux-50fec21a7db84a5c40e27c83bd55a5c9b435efbf.tar.gz
kernel-qcow2-linux-50fec21a7db84a5c40e27c83bd55a5c9b435efbf.tar.xz
kernel-qcow2-linux-50fec21a7db84a5c40e27c83bd55a5c9b435efbf.zip
drm/i915: Fix max link rate in intel_dp_mode_valid()
Consider the link rates reported by the sink via DP_SUPPORTED_LINK_RATES when checking modes against the max link rate. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Sonika Jindal <sonika.jindal@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dp.c')
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 45c35681eb48..5d8ec3a33502 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -206,7 +206,7 @@ intel_dp_mode_valid(struct drm_connector *connector,
target_clock = fixed_mode->clock;
}
- max_link_clock = drm_dp_bw_code_to_link_rate(intel_dp_max_link_bw(intel_dp));
+ max_link_clock = intel_dp_max_link_rate(intel_dp);
max_lanes = intel_dp_max_lane_count(intel_dp);
max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes);
@@ -1242,6 +1242,19 @@ static int rate_to_index(int find, const int *rates)
return i;
}
+int
+intel_dp_max_link_rate(struct intel_dp *intel_dp)
+{
+ int rates[DP_MAX_SUPPORTED_RATES] = {};
+ int len;
+
+ len = intel_supported_rates(intel_dp, rates);
+ if (WARN_ON(len <= 0))
+ return 162000;
+
+ return rates[rate_to_index(0, rates) - 1];
+}
+
bool
intel_dp_compute_config(struct intel_encoder *encoder,
struct intel_crtc_state *pipe_config)