aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2017-04-06 09:44:11 -0400
committerJani Nikula <jani.nikula@intel.com>2017-04-11 09:54:30 -0400
commitb1810a74a0513993e02ba13e60a29c5f01ea3bf0 (patch)
tree7a18e13f5e8a378e5670d84345783906f3b2d59f /drivers
parent975ee5fca10b713aff92cee87e1789e5e2e6c1da (diff)
drm/i915/dp: do not limit rate seek when not needed
In link training fallback, we're trying to find a rate that we know is in a sorted array of common link rates. We don't need to limit the array using the max rate. For test request, the DP CTS doesn't say we should limit the rate based on earlier fallback. This lets us get rid of intel_dp_link_rate_index() and use intel_dp_rate_index() instead. Cc: Manasi Navare <manasi.d.navare@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Manasi Navare <manasi.d.navare@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/33cab481a3228f31e938b5891a6285d892dcf272.1491485983.git.jani.nikula@intel.com
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c31
1 files changed, 12 insertions, 19 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 1808af6d635d..8c061c54d481 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -317,25 +317,16 @@ static int intel_dp_common_len_rate_limit(struct intel_dp *intel_dp,
317 return 0; 317 return 0;
318} 318}
319 319
320static int intel_dp_link_rate_index(struct intel_dp *intel_dp, int link_rate)
321{
322 int common_len;
323
324 common_len = intel_dp_common_len_rate_limit(intel_dp,
325 intel_dp->max_sink_link_rate);
326
327 return intel_dp_rate_index(intel_dp->common_rates, common_len, link_rate);
328}
329
330int intel_dp_get_link_train_fallback_values(struct intel_dp *intel_dp, 320int intel_dp_get_link_train_fallback_values(struct intel_dp *intel_dp,
331 int link_rate, uint8_t lane_count) 321 int link_rate, uint8_t lane_count)
332{ 322{
333 const int *common_rates = intel_dp->common_rates; 323 int index;
334 int link_rate_index;
335 324
336 link_rate_index = intel_dp_link_rate_index(intel_dp, link_rate); 325 index = intel_dp_rate_index(intel_dp->common_rates,
337 if (link_rate_index > 0) { 326 intel_dp->num_common_rates,
338 intel_dp->max_sink_link_rate = common_rates[link_rate_index - 1]; 327 link_rate);
328 if (index > 0) {
329 intel_dp->max_sink_link_rate = intel_dp->common_rates[index - 1];
339 intel_dp->max_sink_lane_count = lane_count; 330 intel_dp->max_sink_lane_count = lane_count;
340 } else if (lane_count > 1) { 331 } else if (lane_count > 1) {
341 intel_dp->max_sink_link_rate = intel_dp_max_sink_rate(intel_dp); 332 intel_dp->max_sink_link_rate = intel_dp_max_sink_rate(intel_dp);
@@ -1685,8 +1676,9 @@ intel_dp_compute_config(struct intel_encoder *encoder,
1685 1676
1686 /* Use values requested by Compliance Test Request */ 1677 /* Use values requested by Compliance Test Request */
1687 if (intel_dp->compliance.test_type == DP_TEST_LINK_TRAINING) { 1678 if (intel_dp->compliance.test_type == DP_TEST_LINK_TRAINING) {
1688 link_rate_index = intel_dp_link_rate_index(intel_dp, 1679 link_rate_index = intel_dp_rate_index(intel_dp->common_rates,
1689 intel_dp->compliance.test_link_rate); 1680 intel_dp->num_common_rates,
1681 intel_dp->compliance.test_link_rate);
1690 if (link_rate_index >= 0) 1682 if (link_rate_index >= 0)
1691 min_clock = max_clock = link_rate_index; 1683 min_clock = max_clock = link_rate_index;
1692 min_lane_count = max_lane_count = intel_dp->compliance.test_lane_count; 1684 min_lane_count = max_lane_count = intel_dp->compliance.test_lane_count;
@@ -3988,8 +3980,9 @@ static uint8_t intel_dp_autotest_link_training(struct intel_dp *intel_dp)
3988 } 3980 }
3989 /* Validate the requested link rate */ 3981 /* Validate the requested link rate */
3990 test_link_rate = drm_dp_bw_code_to_link_rate(test_link_bw); 3982 test_link_rate = drm_dp_bw_code_to_link_rate(test_link_bw);
3991 link_rate_index = intel_dp_link_rate_index(intel_dp, 3983 link_rate_index = intel_dp_rate_index(intel_dp->common_rates,
3992 test_link_rate); 3984 intel_dp->num_common_rates,
3985 test_link_rate);
3993 if (link_rate_index < 0) 3986 if (link_rate_index < 0)
3994 return DP_TEST_NAK; 3987 return DP_TEST_NAK;
3995 3988