Commit 0c63fd3d authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

drm/i915/dp: Reuse intel_hdmi_tmds_clock()

parent 5d488786
Loading
Loading
Loading
Loading
+5 −15
Original line number Diff line number Diff line
@@ -886,9 +886,8 @@ intel_dp_mode_valid_downstream(struct intel_connector *connector,
		return MODE_CLOCK_HIGH;

	/* Assume 8bpc for the DP++/HDMI/DVI TMDS clock check */
	tmds_clock = target_clock;
	if (drm_mode_is_420_only(info, mode))
		tmds_clock /= 2;
	tmds_clock = intel_hdmi_tmds_clock(target_clock, 8,
					   drm_mode_is_420_only(info, mode));

	if (intel_dp->dfp.min_tmds_clock &&
	    tmds_clock < intel_dp->dfp.min_tmds_clock)
@@ -1139,21 +1138,12 @@ static bool intel_dp_hdmi_ycbcr420(struct intel_dp *intel_dp,
		 intel_dp->dfp.ycbcr_444_to_420);
}

static int intel_dp_hdmi_tmds_clock(struct intel_dp *intel_dp,
				    const struct intel_crtc_state *crtc_state, int bpc)
{
	int clock = crtc_state->hw.adjusted_mode.crtc_clock * bpc / 8;

	if (intel_dp_hdmi_ycbcr420(intel_dp, crtc_state))
		clock /= 2;

	return clock;
}

static bool intel_dp_hdmi_tmds_clock_valid(struct intel_dp *intel_dp,
					   const struct intel_crtc_state *crtc_state, int bpc)
{
	int tmds_clock = intel_dp_hdmi_tmds_clock(intel_dp, crtc_state, bpc);
	int clock = crtc_state->hw.adjusted_mode.crtc_clock;
	int tmds_clock = intel_hdmi_tmds_clock(clock, bpc,
					       intel_dp_hdmi_ycbcr420(intel_dp, crtc_state));

	if (intel_dp->dfp.min_tmds_clock &&
	    tmds_clock < intel_dp->dfp.min_tmds_clock)
+1 −1
Original line number Diff line number Diff line
@@ -1869,7 +1869,7 @@ hdmi_port_clock_valid(struct intel_hdmi *hdmi,
	return MODE_OK;
}

static int intel_hdmi_tmds_clock(int clock, int bpc, bool ycbcr420_output)
int intel_hdmi_tmds_clock(int clock, int bpc, bool ycbcr420_output)
{
	/* YCBCR420 TMDS rate requirement is half the pixel clock */
	if (ycbcr420_output)
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ bool intel_hdmi_limited_color_range(const struct intel_crtc_state *crtc_state,
				    const struct drm_connector_state *conn_state);
bool intel_hdmi_bpc_possible(const struct intel_crtc_state *crtc_state,
			     int bpc, bool has_hdmi_sink, bool ycbcr420_output);
int intel_hdmi_tmds_clock(int clock, int bpc, bool ycbcr420_output);
int intel_hdmi_dsc_get_bpp(int src_fractional_bpp, int slice_width,
			   int num_slices, int output_format, bool hdmi_all_bpp,
			   int hdmi_max_chunk_bytes);