diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 12dd56b99b4d7c7cea3daeefaa82518398ac2a4c..756917512cb9cb900213df54aad198fc1abce16b 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -1141,22 +1141,16 @@ hsw_dp_set_ddi_pll_sel(struct intel_crtc_state *pipe_config, int link_bw) } static int -intel_read_sink_rates(struct intel_dp *intel_dp, int *sink_rates) +intel_dp_sink_rates(struct intel_dp *intel_dp, const int **sink_rates) { - struct drm_device *dev = intel_dp_to_dev(intel_dp); - - if (INTEL_INFO(dev)->gen >= 9 && intel_dp->supported_rates[0]) { - /* - * Receiver supports only main-link rate selection by - * link rate table method, so read link rates from - * supported_link_rates - */ - memcpy(sink_rates, intel_dp->supported_rates, - sizeof(intel_dp->supported_rates)); - + if (intel_dp->num_supported_rates) { + *sink_rates = intel_dp->supported_rates; return intel_dp->num_supported_rates; } - return 0; + + *sink_rates = default_rates; + + return (intel_dp_max_link_bw(intel_dp) >> 3) + 1; } static int @@ -1266,12 +1260,12 @@ intel_dp_compute_config(struct intel_encoder *encoder, int max_clock; int bpp, mode_rate; int link_avail, link_clock; - int sink_rates[8]; + const int *sink_rates; int supported_rates[8] = {0}; const int *source_rates; int source_len, sink_len, supported_len; - sink_len = intel_read_sink_rates(intel_dp, sink_rates); + sink_len = intel_dp_sink_rates(intel_dp, &sink_rates); source_len = intel_dp_source_rates(intel_dp, &source_rates);