Commit 68148b8e authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/ddi: refactor intel_ddi_connector_get_hw_state()



Refactor the switch-case into an if-ladder similar to
intel_ddi_read_func_ctl() for clarity.

This highlights how TRANS_DDI_MODE_SELECT_FDI_OR_128B132B works on
different platforms.

Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/191f0210d720f3113a092e1ef0c7996a7dee85a0.1732106557.git.jani.nikula@intel.com


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent 1013ed6a
Loading
Loading
Loading
Loading
+16 −28
Original line number Diff line number Diff line
@@ -723,7 +723,7 @@ bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector)
	enum transcoder cpu_transcoder;
	intel_wakeref_t wakeref;
	enum pipe pipe = 0;
	u32 tmp;
	u32 ddi_mode;
	bool ret;

	wakeref = intel_display_power_get_if_enabled(dev_priv,
@@ -741,38 +741,26 @@ bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector)
	else
		cpu_transcoder = (enum transcoder) pipe;

	tmp = intel_de_read(dev_priv,
			    TRANS_DDI_FUNC_CTL(dev_priv, cpu_transcoder));
	ddi_mode = intel_de_read(dev_priv, TRANS_DDI_FUNC_CTL(dev_priv, cpu_transcoder)) &
		TRANS_DDI_MODE_SELECT_MASK;

	switch (tmp & TRANS_DDI_MODE_SELECT_MASK) {
	case TRANS_DDI_MODE_SELECT_HDMI:
	case TRANS_DDI_MODE_SELECT_DVI:
	if (ddi_mode == TRANS_DDI_MODE_SELECT_HDMI ||
	    ddi_mode == TRANS_DDI_MODE_SELECT_DVI) {
		ret = type == DRM_MODE_CONNECTOR_HDMIA;
		break;

	case TRANS_DDI_MODE_SELECT_DP_SST:
	} else if (ddi_mode == TRANS_DDI_MODE_SELECT_FDI_OR_128B132B && !HAS_DP20(display)) {
		ret = type == DRM_MODE_CONNECTOR_VGA;
	} else if (ddi_mode == TRANS_DDI_MODE_SELECT_DP_SST) {
		ret = type == DRM_MODE_CONNECTOR_eDP ||
			type == DRM_MODE_CONNECTOR_DisplayPort;
		break;

	case TRANS_DDI_MODE_SELECT_DP_MST:
		/* if the transcoder is in MST state then
		 * connector isn't connected */
		ret = false;
		break;

	case TRANS_DDI_MODE_SELECT_FDI_OR_128B132B:
		if (HAS_DP20(display))
			/* 128b/132b */
	} else if (ddi_mode == TRANS_DDI_MODE_SELECT_DP_MST ||
		   (ddi_mode == TRANS_DDI_MODE_SELECT_FDI_OR_128B132B && HAS_DP20(display))) {
		/*
		 * If the transcoder is in MST state then connector isn't
		 * connected.
		 */
		ret = false;
		else
			/* FDI */
			ret = type == DRM_MODE_CONNECTOR_VGA;
		break;

	default:
	} else {
		ret = false;
		break;
	}

out: