[Intel-gfx] [PATCH 1/4] drm/i915/display: Nuke has_infoframe

José Roberto de Souza jose.souza at intel.com
Fri May 14 05:28:40 UTC 2021


This was only reduntant information has_hdmi_sink can do the same job.
set_infoframes() hooks will call intel_write_infoframe() for the
supported infoframes types and it will only be enabled if given type
is set in crtc_state->infoframes.enable.

Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
---
 drivers/gpu/drm/i915/display/g4x_hdmi.c       | 22 ++++++-------------
 drivers/gpu/drm/i915/display/intel_ddi.c      | 17 +++++---------
 drivers/gpu/drm/i915/display/intel_display.c  |  6 ++---
 .../drm/i915/display/intel_display_types.h    |  3 ---
 drivers/gpu/drm/i915/display/intel_dp_mst.c   |  4 ++--
 drivers/gpu/drm/i915/display/intel_hdmi.c     | 13 +++++------
 6 files changed, 22 insertions(+), 43 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c b/drivers/gpu/drm/i915/display/g4x_hdmi.c
index be352e9f0afc..f35db96e6239 100644
--- a/drivers/gpu/drm/i915/display/g4x_hdmi.c
+++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c
@@ -105,9 +105,6 @@ static void intel_hdmi_get_config(struct intel_encoder *encoder,
 	pipe_config->infoframes.enable |=
 		intel_hdmi_infoframes_enabled(encoder, pipe_config);
 
-	if (pipe_config->infoframes.enable)
-		pipe_config->has_infoframe = true;
-
 	if (tmp & HDMI_AUDIO_ENABLE)
 		pipe_config->has_audio = true;
 
@@ -343,9 +340,7 @@ static void intel_disable_hdmi(struct intel_atomic_state *state,
 		intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, true);
 	}
 
-	dig_port->set_infoframes(encoder,
-				       false,
-				       old_crtc_state, old_conn_state);
+	dig_port->set_infoframes(encoder, false, old_crtc_state, old_conn_state);
 
 	intel_dp_dual_mode_set_tmds_output(intel_hdmi, false);
 }
@@ -390,9 +385,8 @@ static void intel_hdmi_pre_enable(struct intel_atomic_state *state,
 
 	intel_hdmi_prepare(encoder, pipe_config);
 
-	dig_port->set_infoframes(encoder,
-				       pipe_config->has_infoframe,
-				       pipe_config, conn_state);
+	dig_port->set_infoframes(encoder, pipe_config->has_hdmi_sink,
+				 pipe_config, conn_state);
 }
 
 static void vlv_hdmi_pre_enable(struct intel_atomic_state *state,
@@ -410,9 +404,8 @@ static void vlv_hdmi_pre_enable(struct intel_atomic_state *state,
 				 0x2b245f5f, 0x00002000,
 				 0x5578b83a, 0x2b247878);
 
-	dig_port->set_infoframes(encoder,
-			      pipe_config->has_infoframe,
-			      pipe_config, conn_state);
+	dig_port->set_infoframes(encoder, pipe_config->has_hdmi_sink,
+				 pipe_config, conn_state);
 
 	g4x_enable_hdmi(state, encoder, pipe_config, conn_state);
 
@@ -487,9 +480,8 @@ static void chv_hdmi_pre_enable(struct intel_atomic_state *state,
 	/* Use 800mV-0dB */
 	chv_set_phy_signal_level(encoder, pipe_config, 128, 102, false);
 
-	dig_port->set_infoframes(encoder,
-			      pipe_config->has_infoframe,
-			      pipe_config, conn_state);
+	dig_port->set_infoframes(encoder, pipe_config->has_hdmi_sink,
+				 pipe_config, conn_state);
 
 	g4x_enable_hdmi(state, encoder, pipe_config, conn_state);
 
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index b7a2fce684c9..5bc5528f3091 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -2722,9 +2722,8 @@ static void intel_ddi_pre_enable_hdmi(struct intel_atomic_state *state,
 
 	intel_ddi_enable_pipe_clock(encoder, crtc_state);
 
-	dig_port->set_infoframes(encoder,
-				 crtc_state->has_infoframe,
-				 crtc_state, conn_state);
+	dig_port->set_infoframes(encoder, crtc_state->has_hdmi_sink, crtc_state,
+				 conn_state);
 }
 
 static void intel_ddi_pre_enable(struct intel_atomic_state *state,
@@ -2765,9 +2764,8 @@ static void intel_ddi_pre_enable(struct intel_atomic_state *state,
 		/* FIXME precompute everything properly */
 		/* FIXME how do we turn infoframes off again? */
 		if (dig_port->lspcon.active && dig_port->dp.has_hdmi_sink)
-			dig_port->set_infoframes(encoder,
-						 crtc_state->has_infoframe,
-						 crtc_state, conn_state);
+			dig_port->set_infoframes(encoder, true, crtc_state,
+						 conn_state);
 	}
 }
 
@@ -2813,8 +2811,8 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state,
 	enum phy phy = intel_port_to_phy(dev_priv, encoder->port);
 
 	if (!is_mst)
-		intel_dp_set_infoframes(encoder, false,
-					old_crtc_state, old_conn_state);
+		intel_dp_set_infoframes(encoder, false, old_crtc_state,
+					old_conn_state);
 
 	/*
 	 * Power down sink before disabling the port, otherwise we end
@@ -3569,9 +3567,6 @@ static void intel_ddi_read_func_ctl(struct intel_encoder *encoder,
 		pipe_config->infoframes.enable |=
 			intel_hdmi_infoframes_enabled(encoder, pipe_config);
 
-		if (pipe_config->infoframes.enable)
-			pipe_config->has_infoframe = true;
-
 		if (temp & TRANS_DDI_HDMI_SCRAMBLING)
 			pipe_config->hdmi_scrambling = true;
 		if (temp & TRANS_DDI_HIGH_TMDS_CHAR_RATE)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 0c2b194006f8..1be88c3a0eea 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -7594,9 +7594,8 @@ static void intel_dump_pipe_config(const struct intel_crtc_state *pipe_config,
 	}
 
 	drm_dbg_kms(&dev_priv->drm,
-		    "audio: %i, infoframes: %i, infoframes enabled: 0x%x\n",
-		    pipe_config->has_audio, pipe_config->has_infoframe,
-		    pipe_config->infoframes.enable);
+		    "audio: %i, infoframes enabled: 0x%x\n",
+		    pipe_config->has_audio, pipe_config->infoframes.enable);
 
 	if (pipe_config->infoframes.enable &
 	    intel_hdmi_infoframe_enable(HDMI_PACKET_TYPE_GENERAL_CONTROL))
@@ -8498,7 +8497,6 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
 
 	PIPE_CONF_CHECK_BOOL(hdmi_scrambling);
 	PIPE_CONF_CHECK_BOOL(hdmi_high_tmds_clock_ratio);
-	PIPE_CONF_CHECK_BOOL(has_infoframe);
 	/* FIXME do the readout properly and get rid of this quirk */
 	if (!PIPE_CONF_QUIRK(PIPE_CONFIG_QUIRK_BIGJOINER_SLAVE))
 		PIPE_CONF_CHECK_BOOL(fec_enable);
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 9c0adfc60c6f..669c5d8a2131 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -952,9 +952,6 @@ struct intel_crtc_state {
 	 * between pch encoders and cpu encoders. */
 	bool has_pch_encoder;
 
-	/* Are we sending infoframes on the attached port */
-	bool has_infoframe;
-
 	/* CPU Transcoder for the pipe. Currently this can only differ from the
 	 * pipe on Haswell and later (where we have a special eDP transcoder)
 	 * and Broxton (where we have special DSI transcoders). */
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 332d2f9fda5c..1eb54f8ed51a 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -435,8 +435,8 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
 	 * the transcoder clock select is set to none.
 	 */
 	if (last_mst_stream)
-		intel_dp_set_infoframes(&dig_port->base, false,
-					old_crtc_state, NULL);
+		intel_dp_set_infoframes(&dig_port->base, false, old_crtc_state,
+					old_conn_state);
 	/*
 	 * From TGL spec: "If multi-stream slave transcoder: Configure
 	 * Transcoder Clock Select to direct no clock to the transcoder"
diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 4a1b2d863b0c..4b970587067d 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -712,7 +712,7 @@ intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder,
 	struct drm_connector *connector = conn_state->connector;
 	int ret;
 
-	if (!crtc_state->has_infoframe)
+	if (!crtc_state->has_hdmi_sink)
 		return true;
 
 	crtc_state->infoframes.enable |=
@@ -766,7 +766,7 @@ intel_hdmi_compute_spd_infoframe(struct intel_encoder *encoder,
 	struct hdmi_spd_infoframe *frame = &crtc_state->infoframes.spd.spd;
 	int ret;
 
-	if (!crtc_state->has_infoframe)
+	if (!crtc_state->has_hdmi_sink)
 		return true;
 
 	crtc_state->infoframes.enable |=
@@ -796,7 +796,7 @@ intel_hdmi_compute_hdmi_infoframe(struct intel_encoder *encoder,
 		&conn_state->connector->display_info;
 	int ret;
 
-	if (!crtc_state->has_infoframe || !info->has_hdmi_infoframe)
+	if (!crtc_state->has_hdmi_sink || !info->has_hdmi_infoframe)
 		return true;
 
 	crtc_state->infoframes.enable |=
@@ -827,7 +827,7 @@ intel_hdmi_compute_drm_infoframe(struct intel_encoder *encoder,
 	if (DISPLAY_VER(dev_priv) < 10)
 		return true;
 
-	if (!crtc_state->has_infoframe)
+	if (!crtc_state->has_hdmi_sink)
 		return true;
 
 	if (!conn_state->hdr_output_metadata)
@@ -1018,7 +1018,7 @@ static void intel_hdmi_compute_gcp_infoframe(struct intel_encoder *encoder,
 {
 	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
 
-	if (IS_G4X(dev_priv) || !crtc_state->has_infoframe)
+	if (IS_G4X(dev_priv) || !crtc_state->has_hdmi_sink)
 		return;
 
 	crtc_state->infoframes.enable |=
@@ -2172,9 +2172,6 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
 	pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_hdmi,
 							 conn_state);
 
-	if (pipe_config->has_hdmi_sink)
-		pipe_config->has_infoframe = true;
-
 	if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK)
 		pipe_config->pixel_multiplier = 2;
 
-- 
2.31.1



More information about the Intel-gfx mailing list