Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8a08886 authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/dp: limit sink rates based on rate



Get rid of redundant intel_dp_num_rates(). We can simply look at the
rate and limit based on that.

Cc: Manasi Navare <manasi.d.navare@intel.com>
Reviewed-by: default avatar <manasi.d.navare@intel.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171009092959.29021-3-jani.nikula@intel.com
parent fc603ca7
Loading
Loading
Loading
Loading
+7 −19
Original line number Diff line number Diff line
@@ -137,32 +137,20 @@ static void vlv_steal_power_sequencer(struct drm_device *dev,
				      enum pipe pipe);
static void intel_dp_unset_edid(struct intel_dp *intel_dp);

static int intel_dp_num_rates(u8 link_bw_code)
{
	switch (link_bw_code) {
	default:
		WARN(1, "invalid max DP link bw val %x, using 1.62Gbps\n",
		     link_bw_code);
	case DP_LINK_BW_1_62:
		return 1;
	case DP_LINK_BW_2_7:
		return 2;
	case DP_LINK_BW_5_4:
		return 3;
	}
}

/* update sink rates from dpcd */
static void intel_dp_set_sink_rates(struct intel_dp *intel_dp)
{
	int i, num_rates;
	int i, max_rate;

	num_rates = intel_dp_num_rates(intel_dp->dpcd[DP_MAX_LINK_RATE]);
	max_rate = drm_dp_bw_code_to_link_rate(intel_dp->dpcd[DP_MAX_LINK_RATE]);

	for (i = 0; i < num_rates; i++)
	for (i = 0; i < ARRAY_SIZE(default_rates); i++) {
		if (default_rates[i] > max_rate)
			break;
		intel_dp->sink_rates[i] = default_rates[i];
	}

	intel_dp->num_sink_rates = num_rates;
	intel_dp->num_sink_rates = i;
}

/* Theoretical max between source and sink */