Commit 814df0ce authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

drm/i915/sdvo: Consolidate SDVO HDMI force_dvi handling



Move the force_dvi check to a single function that can be called from
both mode validation and compute_config(). Note that currently we
don't call it from mode validation, but that will change soon.

Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200108181242.13650-3-ville.syrjala@linux.intel.com


Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
parent b1040461
Loading
Loading
Loading
Loading
+15 −5
Original line number Diff line number Diff line
@@ -1264,6 +1264,13 @@ static void i9xx_adjust_sdvo_tv_clock(struct intel_crtc_state *pipe_config)
	pipe_config->clock_set = true;
}

static bool intel_has_hdmi_sink(struct intel_sdvo *sdvo,
				const struct drm_connector_state *conn_state)
{
	return sdvo->has_hdmi_monitor &&
		READ_ONCE(to_intel_digital_connector_state(conn_state)->force_audio) != HDMI_AUDIO_OFF_DVI;
}

static int intel_sdvo_compute_config(struct intel_encoder *encoder,
				     struct intel_crtc_state *pipe_config,
				     struct drm_connector_state *conn_state)
@@ -1319,12 +1326,15 @@ static int intel_sdvo_compute_config(struct intel_encoder *encoder,
	pipe_config->pixel_multiplier =
		intel_sdvo_get_pixel_multiplier(adjusted_mode);

	if (intel_sdvo_state->base.force_audio != HDMI_AUDIO_OFF_DVI)
		pipe_config->has_hdmi_sink = intel_sdvo->has_hdmi_monitor;
	pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_sdvo, conn_state);

	if (intel_sdvo_state->base.force_audio == HDMI_AUDIO_ON ||
	    (intel_sdvo_state->base.force_audio == HDMI_AUDIO_AUTO && intel_sdvo->has_hdmi_audio))
		pipe_config->has_audio = true;
	if (pipe_config->has_hdmi_sink) {
		if (intel_sdvo_state->base.force_audio == HDMI_AUDIO_AUTO)
			pipe_config->has_audio = intel_sdvo->has_hdmi_audio;
		else
			pipe_config->has_audio =
				intel_sdvo_state->base.force_audio == HDMI_AUDIO_ON;
	}

	if (intel_sdvo_state->base.broadcast_rgb == INTEL_BROADCAST_RGB_AUTO) {
		/*