diff mbox series

[3/5] drm/i915/dp: Stop sending of VSC SDP when it is not needed

Message ID 20191024182423.958952-4-gwan-gyeong.mun@intel.com (mailing list archive)
State New, archived
Headers show
Series Update VSC SDP / HDR Metadata SDP states on pipe updates. | expand

Commit Message

Gwan-gyeong Mun Oct. 24, 2019, 6:24 p.m. UTC
It prevents sending VSC SDP Packet to a receiver when VSC SDP is not
needed. Because VSC SDP is used for PSR, YCbCr 420, HDR BT.2020 and etc,
it checks PSR is enabled or not.

Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 521ce23f38ac..ed6845485b41 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -4735,8 +4735,16 @@  void intel_dp_vsc_enable(struct intel_dp *intel_dp,
 			 const struct intel_crtc_state *crtc_state,
 			 const struct drm_connector_state *conn_state)
 {
-	if (!intel_dp_needs_vsc_sdp(crtc_state, conn_state))
+	if (!intel_dp_needs_vsc_sdp(crtc_state, conn_state)) {
+		struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+		struct intel_encoder *encoder = &intel_dig_port->base;
+
+		if (!intel_psr_enabled(intel_dp) &&
+		    intel_infoframe_enabled(encoder, crtc_state, DP_SDP_VSC))
+			intel_enable_infoframe(encoder, false, crtc_state, DP_SDP_VSC);
+
 		return;
+	}
 
 	intel_dp_setup_vsc_sdp(intel_dp, crtc_state, conn_state);
 }