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

drm/i915/ddi: clarify intel_ddi_connector_get_hw_state() for DP MST



encoder->get_hw_state() returns false for DP MST, and currently always
interprets 128b/132b as MST. Therefore the DDI MST mode checks in
intel_ddi_connector_get_hw_state() are redundant.

Prepare for future, and handle 128b/132b SST and warn on 8b/10b MST.

Cc: Imre Deak <imre.deak@intel.com>
Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241125120959.2366419-1-jani.nikula@intel.com


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent de5c149a
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -731,6 +731,7 @@ bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector)
	if (!wakeref)
		return false;

	/* Note: This returns false for DP MST primary encoders. */
	if (!encoder->get_hw_state(encoder, &pipe)) {
		ret = false;
		goto out;
@@ -752,12 +753,14 @@ bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector)
	} else if (ddi_mode == TRANS_DDI_MODE_SELECT_DP_SST) {
		ret = type == DRM_MODE_CONNECTOR_eDP ||
			type == DRM_MODE_CONNECTOR_DisplayPort;
	} else if (ddi_mode == TRANS_DDI_MODE_SELECT_DP_MST ||
		   (ddi_mode == TRANS_DDI_MODE_SELECT_FDI_OR_128B132B && HAS_DP20(display))) {
	} else if (ddi_mode == TRANS_DDI_MODE_SELECT_FDI_OR_128B132B && HAS_DP20(display)) {
		/*
		 * If the transcoder is in MST state then connector isn't
		 * connected.
		 * encoder->get_hw_state() should have bailed out on MST. This
		 * must be SST and non-eDP.
		 */
		ret = type == DRM_MODE_CONNECTOR_DisplayPort;
	} else if (drm_WARN_ON(display->drm, ddi_mode == TRANS_DDI_MODE_SELECT_DP_MST)) {
		/* encoder->get_hw_state() should have bailed out on MST. */
		ret = false;
	} else {
		ret = false;