}
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
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);