All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split
@ 2017-10-10 12:11 Ville Syrjala
  2017-10-10 12:11 ` [PATCH v2 1/9] drm/i915: Dump 'output_types' in crtc state dump Ville Syrjala
                   ` (11 more replies)
  0 siblings, 12 replies; 26+ messages in thread
From: Ville Syrjala @ 2017-10-10 12:11 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Here's a small selection of patches I extracted from my monster
DDI encoder->type drobbery series. These mostly split the encoder
hooks along the DP vs. HDMI lines. Hopefully it'll be a bit easier
to get these reviewed when they're not buried wihtin such a massive
series.

Ville Syrjälä (9):
  drm/i915: Dump 'output_types' in crtc state dump
  drm/i915: Extract intel_ddi_clk_disable()
  drm/i915: Extract intel_disable_ddi_buf()
  drm/i915: Inline the required bits of intel_ddi_post_disable() into
    intel_ddi_fdi_post_disable()
  drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants
  drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp()
  drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
  drm/i915: Plumb crtc_state etc. directly to
    intel_ddi_pre_enable_{dp,hdmi}()
  drm/i915: Split intel_enable_ddi() into DP and HDMI variants

 drivers/gpu/drm/i915/intel_ddi.c     | 318 ++++++++++++++++++++---------------
 drivers/gpu/drm/i915/intel_display.c |  51 ++++++
 2 files changed, 231 insertions(+), 138 deletions(-)

-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [PATCH v2 1/9] drm/i915: Dump 'output_types' in crtc state dump
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
@ 2017-10-10 12:11 ` Ville Syrjala
  2017-10-11 19:50   ` Jani Nikula
  2017-10-10 12:12 ` [PATCH v2 2/9] drm/i915: Extract intel_ddi_clk_disable() Ville Syrjala
                   ` (10 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ville Syrjala @ 2017-10-10 12:11 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

To make it easier to debug things let's dump the output types bitmask in
the crtc state dump. And to make life that much better, let's pretty
print it as a a human reaadable string as well.

v2: Have the caller pass in the buffer (Chris)
    #undef OUTPUT_TYPE (Jani)

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 51 ++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 45d6e57fbe89..4938c23a3fc1 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -10674,6 +10674,52 @@ intel_dump_m_n_config(struct intel_crtc_state *pipe_config, char *id,
 		      m_n->link_m, m_n->link_n, m_n->tu);
 }
 
+#define OUTPUT_TYPE(x) [INTEL_OUTPUT_ ## x] = #x
+
+static const char * const output_type_str[] = {
+	OUTPUT_TYPE(UNUSED),
+	OUTPUT_TYPE(ANALOG),
+	OUTPUT_TYPE(DVO),
+	OUTPUT_TYPE(SDVO),
+	OUTPUT_TYPE(LVDS),
+	OUTPUT_TYPE(TVOUT),
+	OUTPUT_TYPE(HDMI),
+	OUTPUT_TYPE(DP),
+	OUTPUT_TYPE(EDP),
+	OUTPUT_TYPE(DSI),
+	OUTPUT_TYPE(UNKNOWN),
+	OUTPUT_TYPE(DP_MST),
+};
+
+#undef OUTPUT_TYPE
+
+static void snprintf_output_types(char *buf, size_t len,
+				  unsigned int output_types)
+{
+	char *str = buf;
+	int i;
+
+	str[0] = '\0';
+
+	for (i = 0; i < ARRAY_SIZE(output_type_str); i++) {
+		int r;
+
+		if ((output_types & BIT(i)) == 0)
+			continue;
+
+		r = snprintf(str, len, "%s%s",
+			     str != buf ? "," : "", output_type_str[i]);
+		if (r >= len)
+			break;
+		str += r;
+		len -= r;
+
+		output_types &= ~BIT(i);
+	}
+
+	WARN_ON_ONCE(output_types != 0);
+}
+
 static void intel_dump_pipe_config(struct intel_crtc *crtc,
 				   struct intel_crtc_state *pipe_config,
 				   const char *context)
@@ -10684,10 +10730,15 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc,
 	struct intel_plane *intel_plane;
 	struct intel_plane_state *state;
 	struct drm_framebuffer *fb;
+	char buf[64];
 
 	DRM_DEBUG_KMS("[CRTC:%d:%s]%s\n",
 		      crtc->base.base.id, crtc->base.name, context);
 
+	snprintf_output_types(buf, sizeof(buf), pipe_config->output_types);
+	DRM_DEBUG_KMS("output_types: %s (0x%x)\n",
+		      buf, pipe_config->output_types);
+
 	DRM_DEBUG_KMS("cpu_transcoder: %s, pipe bpp: %i, dithering: %i\n",
 		      transcoder_name(pipe_config->cpu_transcoder),
 		      pipe_config->pipe_bpp, pipe_config->dither);
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 2/9] drm/i915: Extract intel_ddi_clk_disable()
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
  2017-10-10 12:11 ` [PATCH v2 1/9] drm/i915: Dump 'output_types' in crtc state dump Ville Syrjala
@ 2017-10-10 12:12 ` Ville Syrjala
  2017-10-11 19:52   ` Jani Nikula
  2017-10-10 12:12 ` [PATCH v2 3/9] drm/i915: Extract intel_disable_ddi_buf() Ville Syrjala
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ville Syrjala @ 2017-10-10 12:12 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Pull the code to disable the port clock into a function. We already have
the intel_ddi_clk_select() counterpart.

v2: Keep using intel_ddi_get_encoder_port() for now (Chris)

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index b307b6fe1ce3..1cc61ba48e3a 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2141,6 +2141,21 @@ static void intel_ddi_clk_select(struct intel_encoder *encoder,
 	}
 }
 
+static void intel_ddi_clk_disable(struct intel_encoder *encoder)
+{
+	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+	enum port port = intel_ddi_get_encoder_port(encoder);
+
+	if (IS_CANNONLAKE(dev_priv))
+		I915_WRITE(DPCLKA_CFGCR0, I915_READ(DPCLKA_CFGCR0) |
+			   DPCLKA_CFGCR0_DDI_CLK_OFF(port));
+	else if (IS_GEN9_BC(dev_priv))
+		I915_WRITE(DPLL_CTRL2, I915_READ(DPLL_CTRL2) |
+			   DPLL_CTRL2_DDI_CLK_OFF(port));
+	else if (INTEL_GEN(dev_priv) < 9)
+		I915_WRITE(PORT_CLK_SEL(port), PORT_CLK_SEL_NONE);
+}
+
 static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
 				    int link_rate, uint32_t lane_count,
 				    struct intel_shared_dpll *pll,
@@ -2301,14 +2316,7 @@ static void intel_ddi_post_disable(struct intel_encoder *intel_encoder,
 	if (dig_port)
 		intel_display_power_put(dev_priv, dig_port->ddi_io_power_domain);
 
-	if (IS_CANNONLAKE(dev_priv))
-		I915_WRITE(DPCLKA_CFGCR0, I915_READ(DPCLKA_CFGCR0) |
-			   DPCLKA_CFGCR0_DDI_CLK_OFF(port));
-	else if (IS_GEN9_BC(dev_priv))
-		I915_WRITE(DPLL_CTRL2, (I915_READ(DPLL_CTRL2) |
-					DPLL_CTRL2_DDI_CLK_OFF(port)));
-	else if (INTEL_GEN(dev_priv) < 9)
-		I915_WRITE(PORT_CLK_SEL(port), PORT_CLK_SEL_NONE);
+	intel_ddi_clk_disable(intel_encoder);
 
 	if (type == INTEL_OUTPUT_HDMI) {
 		struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 3/9] drm/i915: Extract intel_disable_ddi_buf()
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
  2017-10-10 12:11 ` [PATCH v2 1/9] drm/i915: Dump 'output_types' in crtc state dump Ville Syrjala
  2017-10-10 12:12 ` [PATCH v2 2/9] drm/i915: Extract intel_ddi_clk_disable() Ville Syrjala
@ 2017-10-10 12:12 ` Ville Syrjala
  2017-10-11 19:53   ` Jani Nikula
  2017-10-10 12:12 ` [PATCH 4/9] drm/i915: Inline the required bits of intel_ddi_post_disable() into intel_ddi_fdi_post_disable() Ville Syrjala
                   ` (8 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ville Syrjala @ 2017-10-10 12:12 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Extract the code to disable the DDI_BUF_CTL into small helper. This
will allows us to detangle the encoder type mess in
intel_ddi_post_disable().

v2: Keep using intel_ddi_get_encoder_port() for now

Reviewed-by: Jani Nikula <jani.nikula@intel.com> #v1
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 41 +++++++++++++++++++++++-----------------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 1cc61ba48e3a..e4d1d934231b 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2257,17 +2257,37 @@ static void intel_ddi_pre_enable(struct intel_encoder *encoder,
 	}
 }
 
+static void intel_disable_ddi_buf(struct intel_encoder *encoder)
+{
+	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+	enum port port = intel_ddi_get_encoder_port(encoder);
+	bool wait = false;
+	u32 val;
+
+	val = I915_READ(DDI_BUF_CTL(port));
+	if (val & DDI_BUF_CTL_ENABLE) {
+		val &= ~DDI_BUF_CTL_ENABLE;
+		I915_WRITE(DDI_BUF_CTL(port), val);
+		wait = true;
+	}
+
+	val = I915_READ(DP_TP_CTL(port));
+	val &= ~(DP_TP_CTL_ENABLE | DP_TP_CTL_LINK_TRAIN_MASK);
+	val |= DP_TP_CTL_LINK_TRAIN_PAT1;
+	I915_WRITE(DP_TP_CTL(port), val);
+
+	if (wait)
+		intel_wait_ddi_buf_idle(dev_priv, port);
+}
+
 static void intel_ddi_post_disable(struct intel_encoder *intel_encoder,
 				   const struct intel_crtc_state *old_crtc_state,
 				   const struct drm_connector_state *old_conn_state)
 {
 	struct drm_encoder *encoder = &intel_encoder->base;
 	struct drm_i915_private *dev_priv = to_i915(encoder->dev);
-	enum port port = intel_ddi_get_encoder_port(intel_encoder);
 	struct intel_digital_port *dig_port = enc_to_dig_port(encoder);
 	int type = intel_encoder->type;
-	uint32_t val;
-	bool wait = false;
 
 	if (type == INTEL_OUTPUT_DP || type == INTEL_OUTPUT_EDP) {
 		/*
@@ -2286,20 +2306,7 @@ static void intel_ddi_post_disable(struct intel_encoder *intel_encoder,
 			intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
 	}
 
-	val = I915_READ(DDI_BUF_CTL(port));
-	if (val & DDI_BUF_CTL_ENABLE) {
-		val &= ~DDI_BUF_CTL_ENABLE;
-		I915_WRITE(DDI_BUF_CTL(port), val);
-		wait = true;
-	}
-
-	val = I915_READ(DP_TP_CTL(port));
-	val &= ~(DP_TP_CTL_ENABLE | DP_TP_CTL_LINK_TRAIN_MASK);
-	val |= DP_TP_CTL_LINK_TRAIN_PAT1;
-	I915_WRITE(DP_TP_CTL(port), val);
-
-	if (wait)
-		intel_wait_ddi_buf_idle(dev_priv, port);
+	intel_disable_ddi_buf(intel_encoder);
 
 	if (type == INTEL_OUTPUT_HDMI) {
 		dig_port->set_infoframes(encoder, false,
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 4/9] drm/i915: Inline the required bits of intel_ddi_post_disable() into intel_ddi_fdi_post_disable()
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
                   ` (2 preceding siblings ...)
  2017-10-10 12:12 ` [PATCH v2 3/9] drm/i915: Extract intel_disable_ddi_buf() Ville Syrjala
@ 2017-10-10 12:12 ` Ville Syrjala
  2017-10-10 12:12 ` [PATCH v2 5/9] drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants Ville Syrjala
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Ville Syrjala @ 2017-10-10 12:12 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

To untangle the mess that is intel_ddi_post_disable() move the the bits
needed by FDI into intel_ddi_fdi_post_disable(). This way we can stop
worrying about FDI in intel_ddi_post_disable().

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index e4d1d934231b..7187aea75697 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2349,7 +2349,8 @@ void intel_ddi_fdi_post_disable(struct intel_encoder *encoder,
 	val &= ~FDI_RX_ENABLE;
 	I915_WRITE(FDI_RX_CTL(PIPE_A), val);
 
-	intel_ddi_post_disable(encoder, old_crtc_state, old_conn_state);
+	intel_disable_ddi_buf(encoder);
+	intel_ddi_clk_disable(encoder);
 
 	val = I915_READ(FDI_RX_MISC(PIPE_A));
 	val &= ~(FDI_RX_PWRDN_LANE1_MASK | FDI_RX_PWRDN_LANE0_MASK);
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 5/9] drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
                   ` (3 preceding siblings ...)
  2017-10-10 12:12 ` [PATCH 4/9] drm/i915: Inline the required bits of intel_ddi_post_disable() into intel_ddi_fdi_post_disable() Ville Syrjala
@ 2017-10-10 12:12 ` Ville Syrjala
  2017-10-10 12:12 ` [PATCH 6/9] drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp() Ville Syrjala
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Ville Syrjala @ 2017-10-10 12:12 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

To clean up the mess in intel_ddi_post_disable() split it into two
clean variants for HDMI and DP.

v2: Rebase due to MST DPMS changes

Reviewed-by: Jani Nikula <jani.nikula@intel.com> #v1
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 111 ++++++++++++++++++++++-----------------
 1 file changed, 64 insertions(+), 47 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 7187aea75697..afe56bc6fce3 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2280,56 +2280,73 @@ static void intel_disable_ddi_buf(struct intel_encoder *encoder)
 		intel_wait_ddi_buf_idle(dev_priv, port);
 }
 
-static void intel_ddi_post_disable(struct intel_encoder *intel_encoder,
+static void intel_ddi_post_disable_dp(struct intel_encoder *encoder,
+				      const struct intel_crtc_state *old_crtc_state,
+				      const struct drm_connector_state *old_conn_state)
+{
+	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
+	struct intel_dp *intel_dp = &dig_port->dp;
+	/*
+	 * old_crtc_state and old_conn_state are NULL when called from
+	 * DP_MST. The main connector associated with this port is never
+	 * bound to a crtc for MST.
+	 */
+	bool is_mst = !old_crtc_state;
+
+	/*
+	 * Power down sink before disabling the port, otherwise we end
+	 * up getting interrupts from the sink on detecting link loss.
+	 */
+	if (!is_mst)
+		intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
+
+	intel_disable_ddi_buf(encoder);
+
+	intel_edp_panel_vdd_on(intel_dp);
+	intel_edp_panel_off(intel_dp);
+
+	intel_display_power_put(dev_priv, dig_port->ddi_io_power_domain);
+
+	intel_ddi_clk_disable(encoder);
+}
+
+static void intel_ddi_post_disable_hdmi(struct intel_encoder *encoder,
+					const struct intel_crtc_state *old_crtc_state,
+					const struct drm_connector_state *old_conn_state)
+{
+	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
+	struct intel_hdmi *intel_hdmi = &dig_port->hdmi;
+
+	intel_disable_ddi_buf(encoder);
+
+	dig_port->set_infoframes(&encoder->base, false,
+				 old_crtc_state, old_conn_state);
+
+	intel_display_power_put(dev_priv, dig_port->ddi_io_power_domain);
+
+	intel_ddi_clk_disable(encoder);
+
+	intel_dp_dual_mode_set_tmds_output(intel_hdmi, false);
+}
+
+static void intel_ddi_post_disable(struct intel_encoder *encoder,
 				   const struct intel_crtc_state *old_crtc_state,
 				   const struct drm_connector_state *old_conn_state)
 {
-	struct drm_encoder *encoder = &intel_encoder->base;
-	struct drm_i915_private *dev_priv = to_i915(encoder->dev);
-	struct intel_digital_port *dig_port = enc_to_dig_port(encoder);
-	int type = intel_encoder->type;
-
-	if (type == INTEL_OUTPUT_DP || type == INTEL_OUTPUT_EDP) {
-		/*
-		 * old_crtc_state and old_conn_state are NULL when called from
-		 * DP_MST. The main connector associated with this port is never
-		 * bound to a crtc for MST.
-		 */
-		bool is_mst = !old_crtc_state;
-		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
-
-		/*
-		 * Power down sink before disabling the port, otherwise we end
-		 * up getting interrupts from the sink on detecting link loss.
-		 */
-		if (!is_mst)
-			intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
-	}
-
-	intel_disable_ddi_buf(intel_encoder);
-
-	if (type == INTEL_OUTPUT_HDMI) {
-		dig_port->set_infoframes(encoder, false,
-					 old_crtc_state, old_conn_state);
-	}
-
-	if (type == INTEL_OUTPUT_DP || type == INTEL_OUTPUT_EDP) {
-		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
-
-		intel_edp_panel_vdd_on(intel_dp);
-		intel_edp_panel_off(intel_dp);
-	}
-
-	if (dig_port)
-		intel_display_power_put(dev_priv, dig_port->ddi_io_power_domain);
-
-	intel_ddi_clk_disable(intel_encoder);
-
-	if (type == INTEL_OUTPUT_HDMI) {
-		struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
-
-		intel_dp_dual_mode_set_tmds_output(intel_hdmi, false);
-	}
+	/*
+	 * old_crtc_state and old_conn_state are NULL when called from
+	 * DP_MST. The main connector associated with this port is never
+	 * bound to a crtc for MST.
+	 */
+	if (old_crtc_state &&
+	    intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_HDMI))
+		intel_ddi_post_disable_hdmi(encoder,
+					    old_crtc_state, old_conn_state);
+	else
+		intel_ddi_post_disable_dp(encoder,
+					  old_crtc_state, old_conn_state);
 }
 
 void intel_ddi_fdi_post_disable(struct intel_encoder *encoder,
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 6/9] drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp()
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
                   ` (4 preceding siblings ...)
  2017-10-10 12:12 ` [PATCH v2 5/9] drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants Ville Syrjala
@ 2017-10-10 12:12 ` Ville Syrjala
  2017-10-10 12:12 ` [PATCH 7/9] drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants Ville Syrjala
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Ville Syrjala @ 2017-10-10 12:12 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

intel_edp_panel_on() will itself do the is_edp() check, so the caller
doesn't have to bother. Pre-DDI code doesn't bother, so let's follow the
same approach for DDI.

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index afe56bc6fce3..945980e71697 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2171,8 +2171,8 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
 
 	intel_dp_set_link_params(intel_dp, link_rate, lane_count,
 				 link_mst);
-	if (encoder->type == INTEL_OUTPUT_EDP)
-		intel_edp_panel_on(intel_dp);
+
+	intel_edp_panel_on(intel_dp);
 
 	intel_ddi_clk_select(encoder, pll);
 
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH 7/9] drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
                   ` (5 preceding siblings ...)
  2017-10-10 12:12 ` [PATCH 6/9] drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp() Ville Syrjala
@ 2017-10-10 12:12 ` Ville Syrjala
  2017-10-11 20:03   ` Jani Nikula
  2017-10-10 12:12 ` [PATCH v2 8/9] drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}() Ville Syrjala
                   ` (4 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ville Syrjala @ 2017-10-10 12:12 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Untangle intel_disable_ddi() by splitting it into DP and HDMI specific
variants.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 51 ++++++++++++++++++++++++----------------
 1 file changed, 31 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 945980e71697..c930ef0338c5 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2424,29 +2424,40 @@ static void intel_enable_ddi(struct intel_encoder *intel_encoder,
 		intel_audio_codec_enable(intel_encoder, pipe_config, conn_state);
 }
 
-static void intel_disable_ddi(struct intel_encoder *intel_encoder,
+static void intel_disable_ddi_dp(struct intel_encoder *encoder,
+				 const struct intel_crtc_state *old_crtc_state,
+				 const struct drm_connector_state *old_conn_state)
+{
+	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
+
+	if (old_crtc_state->has_audio)
+		intel_audio_codec_disable(encoder);
+
+	intel_edp_drrs_disable(intel_dp, old_crtc_state);
+	intel_psr_disable(intel_dp, old_crtc_state);
+	intel_edp_backlight_off(old_conn_state);
+}
+
+static void intel_disable_ddi_hdmi(struct intel_encoder *encoder,
+				   const struct intel_crtc_state *old_crtc_state,
+				   const struct drm_connector_state *old_conn_state)
+{
+	if (old_crtc_state->has_audio)
+		intel_audio_codec_disable(encoder);
+
+	intel_hdmi_handle_sink_scrambling(encoder,
+					  old_conn_state->connector,
+					  false, false);
+}
+
+static void intel_disable_ddi(struct intel_encoder *encoder,
 			      const struct intel_crtc_state *old_crtc_state,
 			      const struct drm_connector_state *old_conn_state)
 {
-	struct drm_encoder *encoder = &intel_encoder->base;
-	int type = intel_encoder->type;
-
-	if (old_crtc_state->has_audio)
-		intel_audio_codec_disable(intel_encoder);
-
-	if (type == INTEL_OUTPUT_HDMI) {
-		intel_hdmi_handle_sink_scrambling(intel_encoder,
-						  old_conn_state->connector,
-						  false, false);
-	}
-
-	if (type == INTEL_OUTPUT_EDP) {
-		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
-
-		intel_edp_drrs_disable(intel_dp, old_crtc_state);
-		intel_psr_disable(intel_dp, old_crtc_state);
-		intel_edp_backlight_off(old_conn_state);
-	}
+	if (intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_HDMI))
+		intel_disable_ddi_hdmi(encoder, old_crtc_state, old_conn_state);
+	else
+		intel_disable_ddi_dp(encoder, old_crtc_state, old_conn_state);
 }
 
 static void bxt_ddi_pre_pll_enable(struct intel_encoder *encoder,
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 8/9] drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}()
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
                   ` (6 preceding siblings ...)
  2017-10-10 12:12 ` [PATCH 7/9] drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants Ville Syrjala
@ 2017-10-10 12:12 ` Ville Syrjala
  2017-10-13 14:25   ` Jani Nikula
  2017-10-10 12:12 ` [PATCH v2 9/9] drm/i915: Split intel_enable_ddi() into DP and HDMI variants Ville Syrjala
                   ` (3 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ville Syrjala @ 2017-10-10 12:12 UTC (permalink / raw)
  To: intel-gfx; +Cc: Jani Nikula

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Rather that plumb the link parameters separately to
intel_ddi_pre_enable_dp() let's just pass the entire crtc state.

intel_ddi_pre_enable_hdmi() already took the crtc state, but for some
reason intel_ddi_pre_enable() still wanted to extract has_infoframe
from therein and pass it in separately. Let's not do that since it's
pointless.

v2: Rebase due to more code getting pulled into the DDI hooks

Cc: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 54 +++++++++++++++-------------------------
 1 file changed, 20 insertions(+), 34 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index c930ef0338c5..49cf8d9d2bc1 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2157,24 +2157,24 @@ static void intel_ddi_clk_disable(struct intel_encoder *encoder)
 }
 
 static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
-				    int link_rate, uint32_t lane_count,
-				    struct intel_shared_dpll *pll,
-				    bool link_mst)
+				    const struct intel_crtc_state *crtc_state,
+				    const struct drm_connector_state *conn_state)
 {
 	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
 	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
 	enum port port = intel_ddi_get_encoder_port(encoder);
 	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
+	bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST);
 	uint32_t level = intel_ddi_dp_level(intel_dp);
 
-	WARN_ON(link_mst && (port == PORT_A || port == PORT_E));
+	WARN_ON(is_mst && (port == PORT_A || port == PORT_E));
 
-	intel_dp_set_link_params(intel_dp, link_rate, lane_count,
-				 link_mst);
+	intel_dp_set_link_params(intel_dp, crtc_state->port_clock,
+				 crtc_state->lane_count, is_mst);
 
 	intel_edp_panel_on(intel_dp);
 
-	intel_ddi_clk_select(encoder, pll);
+	intel_ddi_clk_select(encoder, crtc_state->shared_dpll);
 
 	intel_display_power_get(dev_priv, dig_port->ddi_io_power_domain);
 
@@ -2186,7 +2186,7 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
 		intel_prepare_dp_ddi_buffers(encoder);
 
 	intel_ddi_init_dp_buf_reg(encoder);
-	if (!link_mst)
+	if (!is_mst)
 		intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
 	intel_dp_start_link_train(intel_dp);
 	if (port != PORT_A || INTEL_GEN(dev_priv) >= 9)
@@ -2194,10 +2194,8 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
 }
 
 static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder,
-				      bool has_infoframe,
 				      const struct intel_crtc_state *crtc_state,
-				      const struct drm_connector_state *conn_state,
-				      const struct intel_shared_dpll *pll)
+				      const struct drm_connector_state *conn_state)
 {
 	struct intel_digital_port *intel_dig_port = enc_to_dig_port(&encoder->base);
 	struct intel_hdmi *intel_hdmi = &intel_dig_port->hdmi;
@@ -2207,7 +2205,7 @@ static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder,
 	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
 
 	intel_dp_dual_mode_set_tmds_output(intel_hdmi, true);
-	intel_ddi_clk_select(encoder, pll);
+	intel_ddi_clk_select(encoder, crtc_state->shared_dpll);
 
 	intel_display_power_get(dev_priv, dig_port->ddi_io_power_domain);
 
@@ -2223,38 +2221,26 @@ static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder,
 		skl_ddi_set_iboost(encoder, level);
 
 	intel_dig_port->set_infoframes(&encoder->base,
-				       has_infoframe,
+				       crtc_state->has_infoframe,
 				       crtc_state, conn_state);
 }
 
 static void intel_ddi_pre_enable(struct intel_encoder *encoder,
-				 const struct intel_crtc_state *pipe_config,
+				 const struct intel_crtc_state *crtc_state,
 				 const struct drm_connector_state *conn_state)
 {
-	struct drm_crtc *crtc = pipe_config->base.crtc;
-	struct drm_i915_private *dev_priv = to_i915(crtc->dev);
-	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	int pipe = intel_crtc->pipe;
-	int type = encoder->type;
+	struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
+	struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
+	enum pipe pipe = crtc->pipe;
 
-	WARN_ON(intel_crtc->config->has_pch_encoder);
+	WARN_ON(crtc_state->has_pch_encoder);
 
 	intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true);
 
-	if (type == INTEL_OUTPUT_DP || type == INTEL_OUTPUT_EDP) {
-		intel_ddi_pre_enable_dp(encoder,
-					pipe_config->port_clock,
-					pipe_config->lane_count,
-					pipe_config->shared_dpll,
-					intel_crtc_has_type(pipe_config,
-							    INTEL_OUTPUT_DP_MST));
-	}
-	if (type == INTEL_OUTPUT_HDMI) {
-		intel_ddi_pre_enable_hdmi(encoder,
-					  pipe_config->has_infoframe,
-					  pipe_config, conn_state,
-					  pipe_config->shared_dpll);
-	}
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
+		intel_ddi_pre_enable_hdmi(encoder, crtc_state, conn_state);
+	else
+		intel_ddi_pre_enable_dp(encoder, crtc_state, conn_state);
 }
 
 static void intel_disable_ddi_buf(struct intel_encoder *encoder)
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 9/9] drm/i915: Split intel_enable_ddi() into DP and HDMI variants
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
                   ` (7 preceding siblings ...)
  2017-10-10 12:12 ` [PATCH v2 8/9] drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}() Ville Syrjala
@ 2017-10-10 12:12 ` Ville Syrjala
  2017-10-11 20:06   ` Jani Nikula
  2017-10-10 13:07 ` ✗ Fi.CI.BAT: warning for drm/i915: Cleaner DDI DP vs. HDMI split Patchwork
                   ` (2 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Ville Syrjala @ 2017-10-10 12:12 UTC (permalink / raw)
  To: intel-gfx

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Untangle intel_enable_ddi() by splitting it into DP and HDMI specific
variants.

v2: Keep using intel_ddi_get_encoder_port() for now

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_ddi.c | 86 +++++++++++++++++++++++-----------------
 1 file changed, 49 insertions(+), 37 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 49cf8d9d2bc1..18bf06c7e43f 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2369,45 +2369,57 @@ void intel_ddi_fdi_post_disable(struct intel_encoder *encoder,
 	I915_WRITE(FDI_RX_CTL(PIPE_A), val);
 }
 
-static void intel_enable_ddi(struct intel_encoder *intel_encoder,
-			     const struct intel_crtc_state *pipe_config,
+static void intel_enable_ddi_dp(struct intel_encoder *encoder,
+				const struct intel_crtc_state *crtc_state,
+				const struct drm_connector_state *conn_state)
+{
+	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
+	enum port port = intel_ddi_get_encoder_port(encoder);
+
+	if (port == PORT_A && INTEL_GEN(dev_priv) < 9)
+		intel_dp_stop_link_train(intel_dp);
+
+	intel_edp_backlight_on(crtc_state, conn_state);
+	intel_psr_enable(intel_dp, crtc_state);
+	intel_edp_drrs_enable(intel_dp, crtc_state);
+
+	if (crtc_state->has_audio)
+		intel_audio_codec_enable(encoder, crtc_state, conn_state);
+}
+
+static void intel_enable_ddi_hdmi(struct intel_encoder *encoder,
+				  const struct intel_crtc_state *crtc_state,
+				  const struct drm_connector_state *conn_state)
+{
+	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
+	enum port port = intel_ddi_get_encoder_port(encoder);
+
+	intel_hdmi_handle_sink_scrambling(encoder,
+					  conn_state->connector,
+					  crtc_state->hdmi_high_tmds_clock_ratio,
+					  crtc_state->hdmi_scrambling);
+
+	/* In HDMI/DVI mode, the port width, and swing/emphasis values
+	 * are ignored so nothing special needs to be done besides
+	 * enabling the port.
+	 */
+	I915_WRITE(DDI_BUF_CTL(port),
+		   dig_port->saved_port_bits | DDI_BUF_CTL_ENABLE);
+
+	if (crtc_state->has_audio)
+		intel_audio_codec_enable(encoder, crtc_state, conn_state);
+}
+
+static void intel_enable_ddi(struct intel_encoder *encoder,
+			     const struct intel_crtc_state *crtc_state,
 			     const struct drm_connector_state *conn_state)
 {
-	struct drm_encoder *encoder = &intel_encoder->base;
-	struct drm_i915_private *dev_priv = to_i915(encoder->dev);
-	enum port port = intel_ddi_get_encoder_port(intel_encoder);
-	int type = intel_encoder->type;
-
-	if (type == INTEL_OUTPUT_HDMI) {
-		struct intel_digital_port *intel_dig_port =
-			enc_to_dig_port(encoder);
-		bool clock_ratio = pipe_config->hdmi_high_tmds_clock_ratio;
-		bool scrambling = pipe_config->hdmi_scrambling;
-
-		intel_hdmi_handle_sink_scrambling(intel_encoder,
-						  conn_state->connector,
-						  clock_ratio, scrambling);
-
-		/* In HDMI/DVI mode, the port width, and swing/emphasis values
-		 * are ignored so nothing special needs to be done besides
-		 * enabling the port.
-		 */
-		I915_WRITE(DDI_BUF_CTL(port),
-			   intel_dig_port->saved_port_bits |
-			   DDI_BUF_CTL_ENABLE);
-	} else if (type == INTEL_OUTPUT_EDP) {
-		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
-
-		if (port == PORT_A && INTEL_GEN(dev_priv) < 9)
-			intel_dp_stop_link_train(intel_dp);
-
-		intel_edp_backlight_on(pipe_config, conn_state);
-		intel_psr_enable(intel_dp, pipe_config);
-		intel_edp_drrs_enable(intel_dp, pipe_config);
-	}
-
-	if (pipe_config->has_audio)
-		intel_audio_codec_enable(intel_encoder, pipe_config, conn_state);
+	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
+		intel_enable_ddi_hdmi(encoder, crtc_state, conn_state);
+	else
+		intel_enable_ddi_dp(encoder, crtc_state, conn_state);
 }
 
 static void intel_disable_ddi_dp(struct intel_encoder *encoder,
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* ✗ Fi.CI.BAT: warning for drm/i915: Cleaner DDI DP vs. HDMI split
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
                   ` (8 preceding siblings ...)
  2017-10-10 12:12 ` [PATCH v2 9/9] drm/i915: Split intel_enable_ddi() into DP and HDMI variants Ville Syrjala
@ 2017-10-10 13:07 ` Patchwork
  2017-10-10 13:21   ` Ville Syrjälä
  2017-10-13 17:03 ` ✓ Fi.CI.BAT: success " Patchwork
  2017-10-14  0:10 ` ✗ Fi.CI.IGT: failure " Patchwork
  11 siblings, 1 reply; 26+ messages in thread
From: Patchwork @ 2017-10-10 13:07 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Cleaner DDI DP vs. HDMI split
URL   : https://patchwork.freedesktop.org/series/31652/
State : warning

== Summary ==

Series 31652v1 drm/i915: Cleaner DDI DP vs. HDMI split
https://patchwork.freedesktop.org/api/1.0/series/31652/revisions/1/mbox/

Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-b:
                pass       -> DMESG-WARN (fi-byt-n2820) fdo#101705
Test prime_vgem:
        Subgroup basic-fence-flip:
                pass       -> DMESG-WARN (fi-skl-6770hq)

fdo#101705 https://bugs.freedesktop.org/show_bug.cgi?id=101705

fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:451s
fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:472s
fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:393s
fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:573s
fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:285s
fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:517s
fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:521s
fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:532s
fi-byt-n2820     total:289  pass:249  dwarn:1   dfail:0   fail:0   skip:39  time:524s
fi-cfl-s         total:289  pass:256  dwarn:1   dfail:0   fail:0   skip:32  time:565s
fi-cnl-y         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:619s
fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:427s
fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:602s
fi-hsw-4770      total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:439s
fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:421s
fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:458s
fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:512s
fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:478s
fi-kbl-7500u     total:289  pass:264  dwarn:1   dfail:0   fail:0   skip:24  time:503s
fi-kbl-7560u     total:289  pass:270  dwarn:0   dfail:0   fail:0   skip:19  time:587s
fi-kbl-7567u     total:289  pass:265  dwarn:4   dfail:0   fail:0   skip:20  time:480s
fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:598s
fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:662s
fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:464s
fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:657s
fi-skl-6700k     total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:526s
fi-skl-6770hq    total:289  pass:268  dwarn:1   dfail:0   fail:0   skip:20  time:510s
fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:477s
fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:582s
fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:432s

6bcaf2275e52e258c737bc355e73072640be5ac3 drm-tip: 2017y-10m-10d-10h-57m-51s UTC integration manifest
a9cb7cb48bf0 drm/i915: Split intel_enable_ddi() into DP and HDMI variants
96c7e389f3c3 drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}()
6be651f3a0cc drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
a34f8a6cfd6c drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp()
1d95c4a31445 drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants
4675051a29c4 drm/i915: Inline the required bits of intel_ddi_post_disable() into intel_ddi_fdi_post_disable()
a427cba4910b drm/i915: Extract intel_disable_ddi_buf()
897172e11b01 drm/i915: Extract intel_ddi_clk_disable()
65c655f9e326 drm/i915: Dump 'output_types' in crtc state dump

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5972/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: ✗ Fi.CI.BAT: warning for drm/i915: Cleaner DDI DP vs. HDMI split
  2017-10-10 13:07 ` ✗ Fi.CI.BAT: warning for drm/i915: Cleaner DDI DP vs. HDMI split Patchwork
@ 2017-10-10 13:21   ` Ville Syrjälä
  0 siblings, 0 replies; 26+ messages in thread
From: Ville Syrjälä @ 2017-10-10 13:21 UTC (permalink / raw)
  To: intel-gfx

On Tue, Oct 10, 2017 at 01:07:28PM -0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/i915: Cleaner DDI DP vs. HDMI split
> URL   : https://patchwork.freedesktop.org/series/31652/
> State : warning
> 
> == Summary ==
> 
> Series 31652v1 drm/i915: Cleaner DDI DP vs. HDMI split
> https://patchwork.freedesktop.org/api/1.0/series/31652/revisions/1/mbox/
> 
> Test kms_pipe_crc_basic:
>         Subgroup suspend-read-crc-pipe-b:
>                 pass       -> DMESG-WARN (fi-byt-n2820) fdo#101705
> Test prime_vgem:
>         Subgroup basic-fence-flip:
>                 pass       -> DMESG-WARN (fi-skl-6770hq)

Unrelated

[  451.712185] [drm:intel_pipe_update_end [i915]] *ERROR* Atomic update
failure on pipe B (start=277 end=278) time 150 us, min 2146, max 2159,
scanline start 2144, end 2164

> 
> fdo#101705 https://bugs.freedesktop.org/show_bug.cgi?id=101705
> 
> fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:451s
> fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:472s
> fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:393s
> fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:573s
> fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:285s
> fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:517s
> fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:521s
> fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:532s
> fi-byt-n2820     total:289  pass:249  dwarn:1   dfail:0   fail:0   skip:39  time:524s
> fi-cfl-s         total:289  pass:256  dwarn:1   dfail:0   fail:0   skip:32  time:565s
> fi-cnl-y         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:619s
> fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:427s
> fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:602s
> fi-hsw-4770      total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:439s
> fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:421s
> fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:458s
> fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:512s
> fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:478s
> fi-kbl-7500u     total:289  pass:264  dwarn:1   dfail:0   fail:0   skip:24  time:503s
> fi-kbl-7560u     total:289  pass:270  dwarn:0   dfail:0   fail:0   skip:19  time:587s
> fi-kbl-7567u     total:289  pass:265  dwarn:4   dfail:0   fail:0   skip:20  time:480s
> fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:598s
> fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:662s
> fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:464s
> fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:657s
> fi-skl-6700k     total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:526s
> fi-skl-6770hq    total:289  pass:268  dwarn:1   dfail:0   fail:0   skip:20  time:510s
> fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:477s
> fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:582s
> fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:432s
> 
> 6bcaf2275e52e258c737bc355e73072640be5ac3 drm-tip: 2017y-10m-10d-10h-57m-51s UTC integration manifest
> a9cb7cb48bf0 drm/i915: Split intel_enable_ddi() into DP and HDMI variants
> 96c7e389f3c3 drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}()
> 6be651f3a0cc drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
> a34f8a6cfd6c drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp()
> 1d95c4a31445 drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants
> 4675051a29c4 drm/i915: Inline the required bits of intel_ddi_post_disable() into intel_ddi_fdi_post_disable()
> a427cba4910b drm/i915: Extract intel_disable_ddi_buf()
> 897172e11b01 drm/i915: Extract intel_ddi_clk_disable()
> 65c655f9e326 drm/i915: Dump 'output_types' in crtc state dump
> 
> == Logs ==
> 
> For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_5972/

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 1/9] drm/i915: Dump 'output_types' in crtc state dump
  2017-10-10 12:11 ` [PATCH v2 1/9] drm/i915: Dump 'output_types' in crtc state dump Ville Syrjala
@ 2017-10-11 19:50   ` Jani Nikula
  0 siblings, 0 replies; 26+ messages in thread
From: Jani Nikula @ 2017-10-11 19:50 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx

On Tue, 10 Oct 2017, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> To make it easier to debug things let's dump the output types bitmask in
> the crtc state dump. And to make life that much better, let's pretty
> print it as a a human reaadable string as well.
>
> v2: Have the caller pass in the buffer (Chris)
>     #undef OUTPUT_TYPE (Jani)
>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 51 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 51 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 45d6e57fbe89..4938c23a3fc1 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -10674,6 +10674,52 @@ intel_dump_m_n_config(struct intel_crtc_state *pipe_config, char *id,
>  		      m_n->link_m, m_n->link_n, m_n->tu);
>  }
>  
> +#define OUTPUT_TYPE(x) [INTEL_OUTPUT_ ## x] = #x
> +
> +static const char * const output_type_str[] = {
> +	OUTPUT_TYPE(UNUSED),
> +	OUTPUT_TYPE(ANALOG),
> +	OUTPUT_TYPE(DVO),
> +	OUTPUT_TYPE(SDVO),
> +	OUTPUT_TYPE(LVDS),
> +	OUTPUT_TYPE(TVOUT),
> +	OUTPUT_TYPE(HDMI),
> +	OUTPUT_TYPE(DP),
> +	OUTPUT_TYPE(EDP),
> +	OUTPUT_TYPE(DSI),
> +	OUTPUT_TYPE(UNKNOWN),
> +	OUTPUT_TYPE(DP_MST),
> +};
> +
> +#undef OUTPUT_TYPE
> +
> +static void snprintf_output_types(char *buf, size_t len,
> +				  unsigned int output_types)
> +{
> +	char *str = buf;
> +	int i;
> +
> +	str[0] = '\0';
> +
> +	for (i = 0; i < ARRAY_SIZE(output_type_str); i++) {
> +		int r;
> +
> +		if ((output_types & BIT(i)) == 0)
> +			continue;
> +
> +		r = snprintf(str, len, "%s%s",
> +			     str != buf ? "," : "", output_type_str[i]);
> +		if (r >= len)
> +			break;
> +		str += r;
> +		len -= r;

Ugh, what a minefield this is, but AFAICT you avoided them all.

Reviewed-by: Jani Nikula <jani.nikula@intel.com>


> +
> +		output_types &= ~BIT(i);
> +	}
> +
> +	WARN_ON_ONCE(output_types != 0);
> +}
> +
>  static void intel_dump_pipe_config(struct intel_crtc *crtc,
>  				   struct intel_crtc_state *pipe_config,
>  				   const char *context)
> @@ -10684,10 +10730,15 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc,
>  	struct intel_plane *intel_plane;
>  	struct intel_plane_state *state;
>  	struct drm_framebuffer *fb;
> +	char buf[64];
>  
>  	DRM_DEBUG_KMS("[CRTC:%d:%s]%s\n",
>  		      crtc->base.base.id, crtc->base.name, context);
>  
> +	snprintf_output_types(buf, sizeof(buf), pipe_config->output_types);
> +	DRM_DEBUG_KMS("output_types: %s (0x%x)\n",
> +		      buf, pipe_config->output_types);
> +
>  	DRM_DEBUG_KMS("cpu_transcoder: %s, pipe bpp: %i, dithering: %i\n",
>  		      transcoder_name(pipe_config->cpu_transcoder),
>  		      pipe_config->pipe_bpp, pipe_config->dither);

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 2/9] drm/i915: Extract intel_ddi_clk_disable()
  2017-10-10 12:12 ` [PATCH v2 2/9] drm/i915: Extract intel_ddi_clk_disable() Ville Syrjala
@ 2017-10-11 19:52   ` Jani Nikula
  0 siblings, 0 replies; 26+ messages in thread
From: Jani Nikula @ 2017-10-11 19:52 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx

On Tue, 10 Oct 2017, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Pull the code to disable the port clock into a function. We already have
> the intel_ddi_clk_select() counterpart.
>
> v2: Keep using intel_ddi_get_encoder_port() for now (Chris)
>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 24 ++++++++++++++++--------
>  1 file changed, 16 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index b307b6fe1ce3..1cc61ba48e3a 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -2141,6 +2141,21 @@ static void intel_ddi_clk_select(struct intel_encoder *encoder,
>  	}
>  }
>  
> +static void intel_ddi_clk_disable(struct intel_encoder *encoder)
> +{
> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> +	enum port port = intel_ddi_get_encoder_port(encoder);
> +
> +	if (IS_CANNONLAKE(dev_priv))
> +		I915_WRITE(DPCLKA_CFGCR0, I915_READ(DPCLKA_CFGCR0) |
> +			   DPCLKA_CFGCR0_DDI_CLK_OFF(port));
> +	else if (IS_GEN9_BC(dev_priv))
> +		I915_WRITE(DPLL_CTRL2, I915_READ(DPLL_CTRL2) |
> +			   DPLL_CTRL2_DDI_CLK_OFF(port));
> +	else if (INTEL_GEN(dev_priv) < 9)
> +		I915_WRITE(PORT_CLK_SEL(port), PORT_CLK_SEL_NONE);
> +}
> +
>  static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
>  				    int link_rate, uint32_t lane_count,
>  				    struct intel_shared_dpll *pll,
> @@ -2301,14 +2316,7 @@ static void intel_ddi_post_disable(struct intel_encoder *intel_encoder,
>  	if (dig_port)
>  		intel_display_power_put(dev_priv, dig_port->ddi_io_power_domain);
>  
> -	if (IS_CANNONLAKE(dev_priv))
> -		I915_WRITE(DPCLKA_CFGCR0, I915_READ(DPCLKA_CFGCR0) |
> -			   DPCLKA_CFGCR0_DDI_CLK_OFF(port));
> -	else if (IS_GEN9_BC(dev_priv))
> -		I915_WRITE(DPLL_CTRL2, (I915_READ(DPLL_CTRL2) |
> -					DPLL_CTRL2_DDI_CLK_OFF(port)));
> -	else if (INTEL_GEN(dev_priv) < 9)
> -		I915_WRITE(PORT_CLK_SEL(port), PORT_CLK_SEL_NONE);
> +	intel_ddi_clk_disable(intel_encoder);
>  
>  	if (type == INTEL_OUTPUT_HDMI) {
>  		struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 3/9] drm/i915: Extract intel_disable_ddi_buf()
  2017-10-10 12:12 ` [PATCH v2 3/9] drm/i915: Extract intel_disable_ddi_buf() Ville Syrjala
@ 2017-10-11 19:53   ` Jani Nikula
  0 siblings, 0 replies; 26+ messages in thread
From: Jani Nikula @ 2017-10-11 19:53 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx

On Tue, 10 Oct 2017, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Extract the code to disable the DDI_BUF_CTL into small helper. This
> will allows us to detangle the encoder type mess in
> intel_ddi_post_disable().
>
> v2: Keep using intel_ddi_get_encoder_port() for now
>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com> #v1

Holds for v2

> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 41 +++++++++++++++++++++++-----------------
>  1 file changed, 24 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 1cc61ba48e3a..e4d1d934231b 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -2257,17 +2257,37 @@ static void intel_ddi_pre_enable(struct intel_encoder *encoder,
>  	}
>  }
>  
> +static void intel_disable_ddi_buf(struct intel_encoder *encoder)
> +{
> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> +	enum port port = intel_ddi_get_encoder_port(encoder);
> +	bool wait = false;
> +	u32 val;
> +
> +	val = I915_READ(DDI_BUF_CTL(port));
> +	if (val & DDI_BUF_CTL_ENABLE) {
> +		val &= ~DDI_BUF_CTL_ENABLE;
> +		I915_WRITE(DDI_BUF_CTL(port), val);
> +		wait = true;
> +	}
> +
> +	val = I915_READ(DP_TP_CTL(port));
> +	val &= ~(DP_TP_CTL_ENABLE | DP_TP_CTL_LINK_TRAIN_MASK);
> +	val |= DP_TP_CTL_LINK_TRAIN_PAT1;
> +	I915_WRITE(DP_TP_CTL(port), val);
> +
> +	if (wait)
> +		intel_wait_ddi_buf_idle(dev_priv, port);
> +}
> +
>  static void intel_ddi_post_disable(struct intel_encoder *intel_encoder,
>  				   const struct intel_crtc_state *old_crtc_state,
>  				   const struct drm_connector_state *old_conn_state)
>  {
>  	struct drm_encoder *encoder = &intel_encoder->base;
>  	struct drm_i915_private *dev_priv = to_i915(encoder->dev);
> -	enum port port = intel_ddi_get_encoder_port(intel_encoder);
>  	struct intel_digital_port *dig_port = enc_to_dig_port(encoder);
>  	int type = intel_encoder->type;
> -	uint32_t val;
> -	bool wait = false;
>  
>  	if (type == INTEL_OUTPUT_DP || type == INTEL_OUTPUT_EDP) {
>  		/*
> @@ -2286,20 +2306,7 @@ static void intel_ddi_post_disable(struct intel_encoder *intel_encoder,
>  			intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
>  	}
>  
> -	val = I915_READ(DDI_BUF_CTL(port));
> -	if (val & DDI_BUF_CTL_ENABLE) {
> -		val &= ~DDI_BUF_CTL_ENABLE;
> -		I915_WRITE(DDI_BUF_CTL(port), val);
> -		wait = true;
> -	}
> -
> -	val = I915_READ(DP_TP_CTL(port));
> -	val &= ~(DP_TP_CTL_ENABLE | DP_TP_CTL_LINK_TRAIN_MASK);
> -	val |= DP_TP_CTL_LINK_TRAIN_PAT1;
> -	I915_WRITE(DP_TP_CTL(port), val);
> -
> -	if (wait)
> -		intel_wait_ddi_buf_idle(dev_priv, port);
> +	intel_disable_ddi_buf(intel_encoder);
>  
>  	if (type == INTEL_OUTPUT_HDMI) {
>  		dig_port->set_infoframes(encoder, false,

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 7/9] drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
  2017-10-10 12:12 ` [PATCH 7/9] drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants Ville Syrjala
@ 2017-10-11 20:03   ` Jani Nikula
  2017-10-12  9:49     ` Ville Syrjälä
  0 siblings, 1 reply; 26+ messages in thread
From: Jani Nikula @ 2017-10-11 20:03 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx

On Tue, 10 Oct 2017, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Untangle intel_disable_ddi() by splitting it into DP and HDMI specific
> variants.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 51 ++++++++++++++++++++++++----------------
>  1 file changed, 31 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 945980e71697..c930ef0338c5 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -2424,29 +2424,40 @@ static void intel_enable_ddi(struct intel_encoder *intel_encoder,
>  		intel_audio_codec_enable(intel_encoder, pipe_config, conn_state);
>  }
>  
> -static void intel_disable_ddi(struct intel_encoder *intel_encoder,
> +static void intel_disable_ddi_dp(struct intel_encoder *encoder,
> +				 const struct intel_crtc_state *old_crtc_state,
> +				 const struct drm_connector_state *old_conn_state)
> +{
> +	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
> +
> +	if (old_crtc_state->has_audio)
> +		intel_audio_codec_disable(encoder);
> +

You remove the eDP check here, and...

> +	intel_edp_drrs_disable(intel_dp, old_crtc_state);

...this will now depend on old_crtc_state->has_drrs which is probably
fine, but...

> +	intel_psr_disable(intel_dp, old_crtc_state);

...but this will be wrong. I don't mind adding the edp check within.

> +	intel_edp_backlight_off(old_conn_state);

This is ok.

I guess easiest would be to keep the type == INTEL_OUTPUT_EDP check and
clean up afterwards.

Otherwise LGTM.

BR,
Jani.



> +}
> +
> +static void intel_disable_ddi_hdmi(struct intel_encoder *encoder,
> +				   const struct intel_crtc_state *old_crtc_state,
> +				   const struct drm_connector_state *old_conn_state)
> +{
> +	if (old_crtc_state->has_audio)
> +		intel_audio_codec_disable(encoder);
> +
> +	intel_hdmi_handle_sink_scrambling(encoder,
> +					  old_conn_state->connector,
> +					  false, false);
> +}
> +
> +static void intel_disable_ddi(struct intel_encoder *encoder,
>  			      const struct intel_crtc_state *old_crtc_state,
>  			      const struct drm_connector_state *old_conn_state)
>  {
> -	struct drm_encoder *encoder = &intel_encoder->base;
> -	int type = intel_encoder->type;
> -
> -	if (old_crtc_state->has_audio)
> -		intel_audio_codec_disable(intel_encoder);
> -
> -	if (type == INTEL_OUTPUT_HDMI) {
> -		intel_hdmi_handle_sink_scrambling(intel_encoder,
> -						  old_conn_state->connector,
> -						  false, false);
> -	}
> -
> -	if (type == INTEL_OUTPUT_EDP) {
> -		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> -
> -		intel_edp_drrs_disable(intel_dp, old_crtc_state);
> -		intel_psr_disable(intel_dp, old_crtc_state);
> -		intel_edp_backlight_off(old_conn_state);
> -	}
> +	if (intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_HDMI))
> +		intel_disable_ddi_hdmi(encoder, old_crtc_state, old_conn_state);
> +	else
> +		intel_disable_ddi_dp(encoder, old_crtc_state, old_conn_state);
>  }
>  
>  static void bxt_ddi_pre_pll_enable(struct intel_encoder *encoder,

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 9/9] drm/i915: Split intel_enable_ddi() into DP and HDMI variants
  2017-10-10 12:12 ` [PATCH v2 9/9] drm/i915: Split intel_enable_ddi() into DP and HDMI variants Ville Syrjala
@ 2017-10-11 20:06   ` Jani Nikula
  2017-10-13 14:20     ` Jani Nikula
  0 siblings, 1 reply; 26+ messages in thread
From: Jani Nikula @ 2017-10-11 20:06 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx

On Tue, 10 Oct 2017, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Untangle intel_enable_ddi() by splitting it into DP and HDMI specific
> variants.
>
> v2: Keep using intel_ddi_get_encoder_port() for now
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 86 +++++++++++++++++++++++-----------------
>  1 file changed, 49 insertions(+), 37 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 49cf8d9d2bc1..18bf06c7e43f 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -2369,45 +2369,57 @@ void intel_ddi_fdi_post_disable(struct intel_encoder *encoder,
>  	I915_WRITE(FDI_RX_CTL(PIPE_A), val);
>  }
>  
> -static void intel_enable_ddi(struct intel_encoder *intel_encoder,
> -			     const struct intel_crtc_state *pipe_config,
> +static void intel_enable_ddi_dp(struct intel_encoder *encoder,
> +				const struct intel_crtc_state *crtc_state,
> +				const struct drm_connector_state *conn_state)
> +{
> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> +	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
> +	enum port port = intel_ddi_get_encoder_port(encoder);
> +
> +	if (port == PORT_A && INTEL_GEN(dev_priv) < 9)
> +		intel_dp_stop_link_train(intel_dp);
> +
> +	intel_edp_backlight_on(crtc_state, conn_state);
> +	intel_psr_enable(intel_dp, crtc_state);

This is broken without edp check.

BR,
Jani.


> +	intel_edp_drrs_enable(intel_dp, crtc_state);
> +
> +	if (crtc_state->has_audio)
> +		intel_audio_codec_enable(encoder, crtc_state, conn_state);
> +}
> +
> +static void intel_enable_ddi_hdmi(struct intel_encoder *encoder,
> +				  const struct intel_crtc_state *crtc_state,
> +				  const struct drm_connector_state *conn_state)
> +{
> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> +	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
> +	enum port port = intel_ddi_get_encoder_port(encoder);
> +
> +	intel_hdmi_handle_sink_scrambling(encoder,
> +					  conn_state->connector,
> +					  crtc_state->hdmi_high_tmds_clock_ratio,
> +					  crtc_state->hdmi_scrambling);
> +
> +	/* In HDMI/DVI mode, the port width, and swing/emphasis values
> +	 * are ignored so nothing special needs to be done besides
> +	 * enabling the port.
> +	 */
> +	I915_WRITE(DDI_BUF_CTL(port),
> +		   dig_port->saved_port_bits | DDI_BUF_CTL_ENABLE);
> +
> +	if (crtc_state->has_audio)
> +		intel_audio_codec_enable(encoder, crtc_state, conn_state);
> +}
> +
> +static void intel_enable_ddi(struct intel_encoder *encoder,
> +			     const struct intel_crtc_state *crtc_state,
>  			     const struct drm_connector_state *conn_state)
>  {
> -	struct drm_encoder *encoder = &intel_encoder->base;
> -	struct drm_i915_private *dev_priv = to_i915(encoder->dev);
> -	enum port port = intel_ddi_get_encoder_port(intel_encoder);
> -	int type = intel_encoder->type;
> -
> -	if (type == INTEL_OUTPUT_HDMI) {
> -		struct intel_digital_port *intel_dig_port =
> -			enc_to_dig_port(encoder);
> -		bool clock_ratio = pipe_config->hdmi_high_tmds_clock_ratio;
> -		bool scrambling = pipe_config->hdmi_scrambling;
> -
> -		intel_hdmi_handle_sink_scrambling(intel_encoder,
> -						  conn_state->connector,
> -						  clock_ratio, scrambling);
> -
> -		/* In HDMI/DVI mode, the port width, and swing/emphasis values
> -		 * are ignored so nothing special needs to be done besides
> -		 * enabling the port.
> -		 */
> -		I915_WRITE(DDI_BUF_CTL(port),
> -			   intel_dig_port->saved_port_bits |
> -			   DDI_BUF_CTL_ENABLE);
> -	} else if (type == INTEL_OUTPUT_EDP) {
> -		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> -
> -		if (port == PORT_A && INTEL_GEN(dev_priv) < 9)
> -			intel_dp_stop_link_train(intel_dp);
> -
> -		intel_edp_backlight_on(pipe_config, conn_state);
> -		intel_psr_enable(intel_dp, pipe_config);
> -		intel_edp_drrs_enable(intel_dp, pipe_config);
> -	}
> -
> -	if (pipe_config->has_audio)
> -		intel_audio_codec_enable(intel_encoder, pipe_config, conn_state);
> +	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
> +		intel_enable_ddi_hdmi(encoder, crtc_state, conn_state);
> +	else
> +		intel_enable_ddi_dp(encoder, crtc_state, conn_state);
>  }
>  
>  static void intel_disable_ddi_dp(struct intel_encoder *encoder,

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 7/9] drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
  2017-10-11 20:03   ` Jani Nikula
@ 2017-10-12  9:49     ` Ville Syrjälä
  2017-10-13 14:13       ` Jani Nikula
  0 siblings, 1 reply; 26+ messages in thread
From: Ville Syrjälä @ 2017-10-12  9:49 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Oct 11, 2017 at 11:03:18PM +0300, Jani Nikula wrote:
> On Tue, 10 Oct 2017, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Untangle intel_disable_ddi() by splitting it into DP and HDMI specific
> > variants.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_ddi.c | 51 ++++++++++++++++++++++++----------------
> >  1 file changed, 31 insertions(+), 20 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> > index 945980e71697..c930ef0338c5 100644
> > --- a/drivers/gpu/drm/i915/intel_ddi.c
> > +++ b/drivers/gpu/drm/i915/intel_ddi.c
> > @@ -2424,29 +2424,40 @@ static void intel_enable_ddi(struct intel_encoder *intel_encoder,
> >  		intel_audio_codec_enable(intel_encoder, pipe_config, conn_state);
> >  }
> >  
> > -static void intel_disable_ddi(struct intel_encoder *intel_encoder,
> > +static void intel_disable_ddi_dp(struct intel_encoder *encoder,
> > +				 const struct intel_crtc_state *old_crtc_state,
> > +				 const struct drm_connector_state *old_conn_state)
> > +{
> > +	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
> > +
> > +	if (old_crtc_state->has_audio)
> > +		intel_audio_codec_disable(encoder);
> > +
> 
> You remove the eDP check here, and...
> 
> > +	intel_edp_drrs_disable(intel_dp, old_crtc_state);
> 
> ...this will now depend on old_crtc_state->has_drrs which is probably
> fine, but...
> 
> > +	intel_psr_disable(intel_dp, old_crtc_state);
> 
> ...but this will be wrong. I don't mind adding the edp check within.

Argh. Yeah, looks like we're still tracking PSR globally for whatever
reason :( Let me fix that right up...

> 
> > +	intel_edp_backlight_off(old_conn_state);
> 
> This is ok.
> 
> I guess easiest would be to keep the type == INTEL_OUTPUT_EDP check and
> clean up afterwards.
> 
> Otherwise LGTM.
> 
> BR,
> Jani.
> 
> 
> 
> > +}
> > +
> > +static void intel_disable_ddi_hdmi(struct intel_encoder *encoder,
> > +				   const struct intel_crtc_state *old_crtc_state,
> > +				   const struct drm_connector_state *old_conn_state)
> > +{
> > +	if (old_crtc_state->has_audio)
> > +		intel_audio_codec_disable(encoder);
> > +
> > +	intel_hdmi_handle_sink_scrambling(encoder,
> > +					  old_conn_state->connector,
> > +					  false, false);
> > +}
> > +
> > +static void intel_disable_ddi(struct intel_encoder *encoder,
> >  			      const struct intel_crtc_state *old_crtc_state,
> >  			      const struct drm_connector_state *old_conn_state)
> >  {
> > -	struct drm_encoder *encoder = &intel_encoder->base;
> > -	int type = intel_encoder->type;
> > -
> > -	if (old_crtc_state->has_audio)
> > -		intel_audio_codec_disable(intel_encoder);
> > -
> > -	if (type == INTEL_OUTPUT_HDMI) {
> > -		intel_hdmi_handle_sink_scrambling(intel_encoder,
> > -						  old_conn_state->connector,
> > -						  false, false);
> > -	}
> > -
> > -	if (type == INTEL_OUTPUT_EDP) {
> > -		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> > -
> > -		intel_edp_drrs_disable(intel_dp, old_crtc_state);
> > -		intel_psr_disable(intel_dp, old_crtc_state);
> > -		intel_edp_backlight_off(old_conn_state);
> > -	}
> > +	if (intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_HDMI))
> > +		intel_disable_ddi_hdmi(encoder, old_crtc_state, old_conn_state);
> > +	else
> > +		intel_disable_ddi_dp(encoder, old_crtc_state, old_conn_state);
> >  }
> >  
> >  static void bxt_ddi_pre_pll_enable(struct intel_encoder *encoder,
> 
> -- 
> Jani Nikula, Intel Open Source Technology Center

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH 7/9] drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
  2017-10-12  9:49     ` Ville Syrjälä
@ 2017-10-13 14:13       ` Jani Nikula
  0 siblings, 0 replies; 26+ messages in thread
From: Jani Nikula @ 2017-10-13 14:13 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

On Thu, 12 Oct 2017, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Wed, Oct 11, 2017 at 11:03:18PM +0300, Jani Nikula wrote:
>> On Tue, 10 Oct 2017, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
>> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> >
>> > Untangle intel_disable_ddi() by splitting it into DP and HDMI specific
>> > variants.
>> >
>> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> > ---
>> >  drivers/gpu/drm/i915/intel_ddi.c | 51 ++++++++++++++++++++++++----------------
>> >  1 file changed, 31 insertions(+), 20 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
>> > index 945980e71697..c930ef0338c5 100644
>> > --- a/drivers/gpu/drm/i915/intel_ddi.c
>> > +++ b/drivers/gpu/drm/i915/intel_ddi.c
>> > @@ -2424,29 +2424,40 @@ static void intel_enable_ddi(struct intel_encoder *intel_encoder,
>> >  		intel_audio_codec_enable(intel_encoder, pipe_config, conn_state);
>> >  }
>> >  
>> > -static void intel_disable_ddi(struct intel_encoder *intel_encoder,
>> > +static void intel_disable_ddi_dp(struct intel_encoder *encoder,
>> > +				 const struct intel_crtc_state *old_crtc_state,
>> > +				 const struct drm_connector_state *old_conn_state)
>> > +{
>> > +	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
>> > +
>> > +	if (old_crtc_state->has_audio)
>> > +		intel_audio_codec_disable(encoder);
>> > +
>> 
>> You remove the eDP check here, and...
>> 
>> > +	intel_edp_drrs_disable(intel_dp, old_crtc_state);
>> 
>> ...this will now depend on old_crtc_state->has_drrs which is probably
>> fine, but...
>> 
>> > +	intel_psr_disable(intel_dp, old_crtc_state);
>> 
>> ...but this will be wrong. I don't mind adding the edp check within.
>
> Argh. Yeah, looks like we're still tracking PSR globally for whatever
> reason :( Let me fix that right up...

With 4d90f2d507ab ("drm/i915: Start tracking PSR state in crtc state")
this is now

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

but please resubmit for CI with the new base.

>
>> 
>> > +	intel_edp_backlight_off(old_conn_state);
>> 
>> This is ok.
>> 
>> I guess easiest would be to keep the type == INTEL_OUTPUT_EDP check and
>> clean up afterwards.
>> 
>> Otherwise LGTM.
>> 
>> BR,
>> Jani.
>> 
>> 
>> 
>> > +}
>> > +
>> > +static void intel_disable_ddi_hdmi(struct intel_encoder *encoder,
>> > +				   const struct intel_crtc_state *old_crtc_state,
>> > +				   const struct drm_connector_state *old_conn_state)
>> > +{
>> > +	if (old_crtc_state->has_audio)
>> > +		intel_audio_codec_disable(encoder);
>> > +
>> > +	intel_hdmi_handle_sink_scrambling(encoder,
>> > +					  old_conn_state->connector,
>> > +					  false, false);
>> > +}
>> > +
>> > +static void intel_disable_ddi(struct intel_encoder *encoder,
>> >  			      const struct intel_crtc_state *old_crtc_state,
>> >  			      const struct drm_connector_state *old_conn_state)
>> >  {
>> > -	struct drm_encoder *encoder = &intel_encoder->base;
>> > -	int type = intel_encoder->type;
>> > -
>> > -	if (old_crtc_state->has_audio)
>> > -		intel_audio_codec_disable(intel_encoder);
>> > -
>> > -	if (type == INTEL_OUTPUT_HDMI) {
>> > -		intel_hdmi_handle_sink_scrambling(intel_encoder,
>> > -						  old_conn_state->connector,
>> > -						  false, false);
>> > -	}
>> > -
>> > -	if (type == INTEL_OUTPUT_EDP) {
>> > -		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
>> > -
>> > -		intel_edp_drrs_disable(intel_dp, old_crtc_state);
>> > -		intel_psr_disable(intel_dp, old_crtc_state);
>> > -		intel_edp_backlight_off(old_conn_state);
>> > -	}
>> > +	if (intel_crtc_has_type(old_crtc_state, INTEL_OUTPUT_HDMI))
>> > +		intel_disable_ddi_hdmi(encoder, old_crtc_state, old_conn_state);
>> > +	else
>> > +		intel_disable_ddi_dp(encoder, old_crtc_state, old_conn_state);
>> >  }
>> >  
>> >  static void bxt_ddi_pre_pll_enable(struct intel_encoder *encoder,
>> 
>> -- 
>> Jani Nikula, Intel Open Source Technology Center

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 9/9] drm/i915: Split intel_enable_ddi() into DP and HDMI variants
  2017-10-11 20:06   ` Jani Nikula
@ 2017-10-13 14:20     ` Jani Nikula
  2017-10-13 18:10       ` Ville Syrjälä
  0 siblings, 1 reply; 26+ messages in thread
From: Jani Nikula @ 2017-10-13 14:20 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx

On Wed, 11 Oct 2017, Jani Nikula <jani.nikula@linux.intel.com> wrote:
> On Tue, 10 Oct 2017, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
>> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>
>> Untangle intel_enable_ddi() by splitting it into DP and HDMI specific
>> variants.
>>
>> v2: Keep using intel_ddi_get_encoder_port() for now
>>
>> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_ddi.c | 86 +++++++++++++++++++++++-----------------
>>  1 file changed, 49 insertions(+), 37 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
>> index 49cf8d9d2bc1..18bf06c7e43f 100644
>> --- a/drivers/gpu/drm/i915/intel_ddi.c
>> +++ b/drivers/gpu/drm/i915/intel_ddi.c
>> @@ -2369,45 +2369,57 @@ void intel_ddi_fdi_post_disable(struct intel_encoder *encoder,
>>  	I915_WRITE(FDI_RX_CTL(PIPE_A), val);
>>  }
>>  
>> -static void intel_enable_ddi(struct intel_encoder *intel_encoder,
>> -			     const struct intel_crtc_state *pipe_config,
>> +static void intel_enable_ddi_dp(struct intel_encoder *encoder,
>> +				const struct intel_crtc_state *crtc_state,
>> +				const struct drm_connector_state *conn_state)
>> +{
>> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>> +	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
>> +	enum port port = intel_ddi_get_encoder_port(encoder);
>> +
>> +	if (port == PORT_A && INTEL_GEN(dev_priv) < 9)
>> +		intel_dp_stop_link_train(intel_dp);

I note that this was only run on type == INTEL_OUTPUT_EDP previously. I
suppose the condition does effectively imply edp, so this is probably
fine. It's just that sometimes I wonder about the amount of background
knowledge like this that we impose on the reader.

>> +
>> +	intel_edp_backlight_on(crtc_state, conn_state);
>> +	intel_psr_enable(intel_dp, crtc_state);
>
> This is broken without edp check.

And fine now with 4d90f2d507ab ("drm/i915: Start tracking PSR state in
crtc state") merged.

Reviewed-by: Jani Nikula <jani.nikula@intel.com>


>
> BR, Jani.
>
>
>> +	intel_edp_drrs_enable(intel_dp, crtc_state);
>> +
>> +	if (crtc_state->has_audio)
>> +		intel_audio_codec_enable(encoder, crtc_state, conn_state);
>> +}
>> +
>> +static void intel_enable_ddi_hdmi(struct intel_encoder *encoder,
>> +				  const struct intel_crtc_state *crtc_state,
>> +				  const struct drm_connector_state *conn_state)
>> +{
>> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>> +	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
>> +	enum port port = intel_ddi_get_encoder_port(encoder);
>> +
>> +	intel_hdmi_handle_sink_scrambling(encoder,
>> +					  conn_state->connector,
>> +					  crtc_state->hdmi_high_tmds_clock_ratio,
>> +					  crtc_state->hdmi_scrambling);
>> +
>> +	/* In HDMI/DVI mode, the port width, and swing/emphasis values
>> +	 * are ignored so nothing special needs to be done besides
>> +	 * enabling the port.
>> +	 */
>> +	I915_WRITE(DDI_BUF_CTL(port),
>> +		   dig_port->saved_port_bits | DDI_BUF_CTL_ENABLE);
>> +
>> +	if (crtc_state->has_audio)
>> +		intel_audio_codec_enable(encoder, crtc_state, conn_state);
>> +}
>> +
>> +static void intel_enable_ddi(struct intel_encoder *encoder,
>> +			     const struct intel_crtc_state *crtc_state,
>>  			     const struct drm_connector_state *conn_state)
>>  {
>> -	struct drm_encoder *encoder = &intel_encoder->base;
>> -	struct drm_i915_private *dev_priv = to_i915(encoder->dev);
>> -	enum port port = intel_ddi_get_encoder_port(intel_encoder);
>> -	int type = intel_encoder->type;
>> -
>> -	if (type == INTEL_OUTPUT_HDMI) {
>> -		struct intel_digital_port *intel_dig_port =
>> -			enc_to_dig_port(encoder);
>> -		bool clock_ratio = pipe_config->hdmi_high_tmds_clock_ratio;
>> -		bool scrambling = pipe_config->hdmi_scrambling;
>> -
>> -		intel_hdmi_handle_sink_scrambling(intel_encoder,
>> -						  conn_state->connector,
>> -						  clock_ratio, scrambling);
>> -
>> -		/* In HDMI/DVI mode, the port width, and swing/emphasis values
>> -		 * are ignored so nothing special needs to be done besides
>> -		 * enabling the port.
>> -		 */
>> -		I915_WRITE(DDI_BUF_CTL(port),
>> -			   intel_dig_port->saved_port_bits |
>> -			   DDI_BUF_CTL_ENABLE);
>> -	} else if (type == INTEL_OUTPUT_EDP) {
>> -		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
>> -
>> -		if (port == PORT_A && INTEL_GEN(dev_priv) < 9)
>> -			intel_dp_stop_link_train(intel_dp);
>> -
>> -		intel_edp_backlight_on(pipe_config, conn_state);
>> -		intel_psr_enable(intel_dp, pipe_config);
>> -		intel_edp_drrs_enable(intel_dp, pipe_config);
>> -	}
>> -
>> -	if (pipe_config->has_audio)
>> -		intel_audio_codec_enable(intel_encoder, pipe_config, conn_state);
>> +	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
>> +		intel_enable_ddi_hdmi(encoder, crtc_state, conn_state);
>> +	else
>> +		intel_enable_ddi_dp(encoder, crtc_state, conn_state);
>>  }
>>  
>>  static void intel_disable_ddi_dp(struct intel_encoder *encoder,

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 8/9] drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}()
  2017-10-10 12:12 ` [PATCH v2 8/9] drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}() Ville Syrjala
@ 2017-10-13 14:25   ` Jani Nikula
  0 siblings, 0 replies; 26+ messages in thread
From: Jani Nikula @ 2017-10-13 14:25 UTC (permalink / raw)
  To: Ville Syrjala, intel-gfx

On Tue, 10 Oct 2017, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Rather that plumb the link parameters separately to
> intel_ddi_pre_enable_dp() let's just pass the entire crtc state.
>
> intel_ddi_pre_enable_hdmi() already took the crtc state, but for some
> reason intel_ddi_pre_enable() still wanted to extract has_infoframe
> from therein and pass it in separately. Let's not do that since it's
> pointless.
>
> v2: Rebase due to more code getting pulled into the DDI hooks
>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>


> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 54 +++++++++++++++-------------------------
>  1 file changed, 20 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index c930ef0338c5..49cf8d9d2bc1 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -2157,24 +2157,24 @@ static void intel_ddi_clk_disable(struct intel_encoder *encoder)
>  }
>  
>  static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
> -				    int link_rate, uint32_t lane_count,
> -				    struct intel_shared_dpll *pll,
> -				    bool link_mst)
> +				    const struct intel_crtc_state *crtc_state,
> +				    const struct drm_connector_state *conn_state)
>  {
>  	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
>  	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>  	enum port port = intel_ddi_get_encoder_port(encoder);
>  	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
> +	bool is_mst = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST);
>  	uint32_t level = intel_ddi_dp_level(intel_dp);
>  
> -	WARN_ON(link_mst && (port == PORT_A || port == PORT_E));
> +	WARN_ON(is_mst && (port == PORT_A || port == PORT_E));
>  
> -	intel_dp_set_link_params(intel_dp, link_rate, lane_count,
> -				 link_mst);
> +	intel_dp_set_link_params(intel_dp, crtc_state->port_clock,
> +				 crtc_state->lane_count, is_mst);
>  
>  	intel_edp_panel_on(intel_dp);
>  
> -	intel_ddi_clk_select(encoder, pll);
> +	intel_ddi_clk_select(encoder, crtc_state->shared_dpll);
>  
>  	intel_display_power_get(dev_priv, dig_port->ddi_io_power_domain);
>  
> @@ -2186,7 +2186,7 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
>  		intel_prepare_dp_ddi_buffers(encoder);
>  
>  	intel_ddi_init_dp_buf_reg(encoder);
> -	if (!link_mst)
> +	if (!is_mst)
>  		intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
>  	intel_dp_start_link_train(intel_dp);
>  	if (port != PORT_A || INTEL_GEN(dev_priv) >= 9)
> @@ -2194,10 +2194,8 @@ static void intel_ddi_pre_enable_dp(struct intel_encoder *encoder,
>  }
>  
>  static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder,
> -				      bool has_infoframe,
>  				      const struct intel_crtc_state *crtc_state,
> -				      const struct drm_connector_state *conn_state,
> -				      const struct intel_shared_dpll *pll)
> +				      const struct drm_connector_state *conn_state)
>  {
>  	struct intel_digital_port *intel_dig_port = enc_to_dig_port(&encoder->base);
>  	struct intel_hdmi *intel_hdmi = &intel_dig_port->hdmi;
> @@ -2207,7 +2205,7 @@ static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder,
>  	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
>  
>  	intel_dp_dual_mode_set_tmds_output(intel_hdmi, true);
> -	intel_ddi_clk_select(encoder, pll);
> +	intel_ddi_clk_select(encoder, crtc_state->shared_dpll);
>  
>  	intel_display_power_get(dev_priv, dig_port->ddi_io_power_domain);
>  
> @@ -2223,38 +2221,26 @@ static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder,
>  		skl_ddi_set_iboost(encoder, level);
>  
>  	intel_dig_port->set_infoframes(&encoder->base,
> -				       has_infoframe,
> +				       crtc_state->has_infoframe,
>  				       crtc_state, conn_state);
>  }
>  
>  static void intel_ddi_pre_enable(struct intel_encoder *encoder,
> -				 const struct intel_crtc_state *pipe_config,
> +				 const struct intel_crtc_state *crtc_state,
>  				 const struct drm_connector_state *conn_state)
>  {
> -	struct drm_crtc *crtc = pipe_config->base.crtc;
> -	struct drm_i915_private *dev_priv = to_i915(crtc->dev);
> -	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> -	int pipe = intel_crtc->pipe;
> -	int type = encoder->type;
> +	struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
> +	struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> +	enum pipe pipe = crtc->pipe;
>  
> -	WARN_ON(intel_crtc->config->has_pch_encoder);
> +	WARN_ON(crtc_state->has_pch_encoder);
>  
>  	intel_set_cpu_fifo_underrun_reporting(dev_priv, pipe, true);
>  
> -	if (type == INTEL_OUTPUT_DP || type == INTEL_OUTPUT_EDP) {
> -		intel_ddi_pre_enable_dp(encoder,
> -					pipe_config->port_clock,
> -					pipe_config->lane_count,
> -					pipe_config->shared_dpll,
> -					intel_crtc_has_type(pipe_config,
> -							    INTEL_OUTPUT_DP_MST));
> -	}
> -	if (type == INTEL_OUTPUT_HDMI) {
> -		intel_ddi_pre_enable_hdmi(encoder,
> -					  pipe_config->has_infoframe,
> -					  pipe_config, conn_state,
> -					  pipe_config->shared_dpll);
> -	}
> +	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
> +		intel_ddi_pre_enable_hdmi(encoder, crtc_state, conn_state);
> +	else
> +		intel_ddi_pre_enable_dp(encoder, crtc_state, conn_state);
>  }
>  
>  static void intel_disable_ddi_buf(struct intel_encoder *encoder)

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* ✓ Fi.CI.BAT: success for drm/i915: Cleaner DDI DP vs. HDMI split
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
                   ` (9 preceding siblings ...)
  2017-10-10 13:07 ` ✗ Fi.CI.BAT: warning for drm/i915: Cleaner DDI DP vs. HDMI split Patchwork
@ 2017-10-13 17:03 ` Patchwork
  2017-10-13 18:16   ` Ville Syrjälä
  2017-10-14  0:10 ` ✗ Fi.CI.IGT: failure " Patchwork
  11 siblings, 1 reply; 26+ messages in thread
From: Patchwork @ 2017-10-13 17:03 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Cleaner DDI DP vs. HDMI split
URL   : https://patchwork.freedesktop.org/series/31652/
State : success

== Summary ==

Series 31652v1 drm/i915: Cleaner DDI DP vs. HDMI split
https://patchwork.freedesktop.org/api/1.0/series/31652/revisions/1/mbox/

Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-b:
                pass       -> DMESG-WARN (fi-byt-n2820) fdo#101705

fdo#101705 https://bugs.freedesktop.org/show_bug.cgi?id=101705

fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:460s
fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:465s
fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:387s
fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:575s
fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:285s
fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:521s
fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:522s
fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:545s
fi-byt-n2820     total:289  pass:249  dwarn:1   dfail:0   fail:0   skip:39  time:516s
fi-cfl-s         total:289  pass:253  dwarn:4   dfail:0   fail:0   skip:32  time:557s
fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:437s
fi-gdg-551       total:289  pass:178  dwarn:1   dfail:0   fail:1   skip:109 time:273s
fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:606s
fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:441s
fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:461s
fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:506s
fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:478s
fi-kbl-7500u     total:289  pass:263  dwarn:1   dfail:0   fail:1   skip:24  time:498s
fi-kbl-7567u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:488s
fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:593s
fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:660s
fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:469s
fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:661s
fi-skl-6700k     total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:535s
fi-skl-6770hq    total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:546s
fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:475s
fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:589s
fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:438s

005c15a2795854ab64b6ce63dcb099d2eea4a889 drm-tip: 2017y-10m-13d-15h-39m-54s UTC integration manifest
c1474648590a drm/i915: Split intel_enable_ddi() into DP and HDMI variants
b25037cf58c5 drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}()
4683e47e72c9 drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
d7b8576c70b9 drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp()
d62a40df8dea drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants
e59da336b286 drm/i915: Inline the required bits of intel_ddi_post_disable() into intel_ddi_fdi_post_disable()
d00f451e0170 drm/i915: Extract intel_disable_ddi_buf()
7410e47bcade drm/i915: Extract intel_ddi_clk_disable()
8d591429231c drm/i915: Dump 'output_types' in crtc state dump

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6026/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 9/9] drm/i915: Split intel_enable_ddi() into DP and HDMI variants
  2017-10-13 14:20     ` Jani Nikula
@ 2017-10-13 18:10       ` Ville Syrjälä
  0 siblings, 0 replies; 26+ messages in thread
From: Ville Syrjälä @ 2017-10-13 18:10 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Fri, Oct 13, 2017 at 05:20:47PM +0300, Jani Nikula wrote:
> On Wed, 11 Oct 2017, Jani Nikula <jani.nikula@linux.intel.com> wrote:
> > On Tue, 10 Oct 2017, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> >> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >>
> >> Untangle intel_enable_ddi() by splitting it into DP and HDMI specific
> >> variants.
> >>
> >> v2: Keep using intel_ddi_get_encoder_port() for now
> >>
> >> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> ---
> >>  drivers/gpu/drm/i915/intel_ddi.c | 86 +++++++++++++++++++++++-----------------
> >>  1 file changed, 49 insertions(+), 37 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> >> index 49cf8d9d2bc1..18bf06c7e43f 100644
> >> --- a/drivers/gpu/drm/i915/intel_ddi.c
> >> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> >> @@ -2369,45 +2369,57 @@ void intel_ddi_fdi_post_disable(struct intel_encoder *encoder,
> >>  	I915_WRITE(FDI_RX_CTL(PIPE_A), val);
> >>  }
> >>  
> >> -static void intel_enable_ddi(struct intel_encoder *intel_encoder,
> >> -			     const struct intel_crtc_state *pipe_config,
> >> +static void intel_enable_ddi_dp(struct intel_encoder *encoder,
> >> +				const struct intel_crtc_state *crtc_state,
> >> +				const struct drm_connector_state *conn_state)
> >> +{
> >> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> >> +	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
> >> +	enum port port = intel_ddi_get_encoder_port(encoder);
> >> +
> >> +	if (port == PORT_A && INTEL_GEN(dev_priv) < 9)
> >> +		intel_dp_stop_link_train(intel_dp);
> 
> I note that this was only run on type == INTEL_OUTPUT_EDP previously. I
> suppose the condition does effectively imply edp, so this is probably
> fine.

The spec is actually a little vague which one it means. The wording used
is "If eDP (DDI A), set DP_TP_CTL link training to Normal". So it's not
clear if this change in behaviour is required because the sink is eDP,
because the eDP transcoder is used, or because we're dealing with DDI A.
Since DDI A is mentioned I'm going to assume that's what it means ;)

> It's just that sometimes I wonder about the amount of background
> knowledge like this that we impose on the reader.
> 
> >> +
> >> +	intel_edp_backlight_on(crtc_state, conn_state);
> >> +	intel_psr_enable(intel_dp, crtc_state);
> >
> > This is broken without edp check.
> 
> And fine now with 4d90f2d507ab ("drm/i915: Start tracking PSR state in
> crtc state") merged.
> 
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> 
> 
> >
> > BR, Jani.
> >
> >
> >> +	intel_edp_drrs_enable(intel_dp, crtc_state);
> >> +
> >> +	if (crtc_state->has_audio)
> >> +		intel_audio_codec_enable(encoder, crtc_state, conn_state);
> >> +}
> >> +
> >> +static void intel_enable_ddi_hdmi(struct intel_encoder *encoder,
> >> +				  const struct intel_crtc_state *crtc_state,
> >> +				  const struct drm_connector_state *conn_state)
> >> +{
> >> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> >> +	struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
> >> +	enum port port = intel_ddi_get_encoder_port(encoder);
> >> +
> >> +	intel_hdmi_handle_sink_scrambling(encoder,
> >> +					  conn_state->connector,
> >> +					  crtc_state->hdmi_high_tmds_clock_ratio,
> >> +					  crtc_state->hdmi_scrambling);
> >> +
> >> +	/* In HDMI/DVI mode, the port width, and swing/emphasis values
> >> +	 * are ignored so nothing special needs to be done besides
> >> +	 * enabling the port.
> >> +	 */
> >> +	I915_WRITE(DDI_BUF_CTL(port),
> >> +		   dig_port->saved_port_bits | DDI_BUF_CTL_ENABLE);
> >> +
> >> +	if (crtc_state->has_audio)
> >> +		intel_audio_codec_enable(encoder, crtc_state, conn_state);
> >> +}
> >> +
> >> +static void intel_enable_ddi(struct intel_encoder *encoder,
> >> +			     const struct intel_crtc_state *crtc_state,
> >>  			     const struct drm_connector_state *conn_state)
> >>  {
> >> -	struct drm_encoder *encoder = &intel_encoder->base;
> >> -	struct drm_i915_private *dev_priv = to_i915(encoder->dev);
> >> -	enum port port = intel_ddi_get_encoder_port(intel_encoder);
> >> -	int type = intel_encoder->type;
> >> -
> >> -	if (type == INTEL_OUTPUT_HDMI) {
> >> -		struct intel_digital_port *intel_dig_port =
> >> -			enc_to_dig_port(encoder);
> >> -		bool clock_ratio = pipe_config->hdmi_high_tmds_clock_ratio;
> >> -		bool scrambling = pipe_config->hdmi_scrambling;
> >> -
> >> -		intel_hdmi_handle_sink_scrambling(intel_encoder,
> >> -						  conn_state->connector,
> >> -						  clock_ratio, scrambling);
> >> -
> >> -		/* In HDMI/DVI mode, the port width, and swing/emphasis values
> >> -		 * are ignored so nothing special needs to be done besides
> >> -		 * enabling the port.
> >> -		 */
> >> -		I915_WRITE(DDI_BUF_CTL(port),
> >> -			   intel_dig_port->saved_port_bits |
> >> -			   DDI_BUF_CTL_ENABLE);
> >> -	} else if (type == INTEL_OUTPUT_EDP) {
> >> -		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> >> -
> >> -		if (port == PORT_A && INTEL_GEN(dev_priv) < 9)
> >> -			intel_dp_stop_link_train(intel_dp);
> >> -
> >> -		intel_edp_backlight_on(pipe_config, conn_state);
> >> -		intel_psr_enable(intel_dp, pipe_config);
> >> -		intel_edp_drrs_enable(intel_dp, pipe_config);
> >> -	}
> >> -
> >> -	if (pipe_config->has_audio)
> >> -		intel_audio_codec_enable(intel_encoder, pipe_config, conn_state);
> >> +	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
> >> +		intel_enable_ddi_hdmi(encoder, crtc_state, conn_state);
> >> +	else
> >> +		intel_enable_ddi_dp(encoder, crtc_state, conn_state);
> >>  }
> >>  
> >>  static void intel_disable_ddi_dp(struct intel_encoder *encoder,
> 
> -- 
> Jani Nikula, Intel Open Source Technology Center

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: ✓ Fi.CI.BAT: success for drm/i915: Cleaner DDI DP vs. HDMI split
  2017-10-13 17:03 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2017-10-13 18:16   ` Ville Syrjälä
  2017-10-13 18:49     ` Jani Nikula
  0 siblings, 1 reply; 26+ messages in thread
From: Ville Syrjälä @ 2017-10-13 18:16 UTC (permalink / raw)
  To: intel-gfx

On Fri, Oct 13, 2017 at 05:03:39PM -0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/i915: Cleaner DDI DP vs. HDMI split
> URL   : https://patchwork.freedesktop.org/series/31652/
> State : success
> 
> == Summary ==
> 
> Series 31652v1 drm/i915: Cleaner DDI DP vs. HDMI split
> https://patchwork.freedesktop.org/api/1.0/series/31652/revisions/1/mbox/
> 
> Test kms_pipe_crc_basic:
>         Subgroup suspend-read-crc-pipe-b:
>                 pass       -> DMESG-WARN (fi-byt-n2820) fdo#101705
> 
> fdo#101705 https://bugs.freedesktop.org/show_bug.cgi?id=101705
> 
> fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:460s
> fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:465s
> fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:387s
> fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:575s
> fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:285s
> fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:521s
> fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:522s
> fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:545s
> fi-byt-n2820     total:289  pass:249  dwarn:1   dfail:0   fail:0   skip:39  time:516s
> fi-cfl-s         total:289  pass:253  dwarn:4   dfail:0   fail:0   skip:32  time:557s
> fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:437s
> fi-gdg-551       total:289  pass:178  dwarn:1   dfail:0   fail:1   skip:109 time:273s
> fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:606s
> fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:441s
> fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:461s
> fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:506s
> fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:478s
> fi-kbl-7500u     total:289  pass:263  dwarn:1   dfail:0   fail:1   skip:24  time:498s
> fi-kbl-7567u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:488s
> fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:593s
> fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:660s
> fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:469s
> fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:661s
> fi-skl-6700k     total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:535s
> fi-skl-6770hq    total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:546s
> fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:475s
> fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:589s
> fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:438s
> 
> 005c15a2795854ab64b6ce63dcb099d2eea4a889 drm-tip: 2017y-10m-13d-15h-39m-54s UTC integration manifest

This one has commit 4d90f2d507ab ("drm/i915: Start tracking PSR state in
crtc state"), so everything still looks good.

Series pushed to dinq. Thanks for the review, and especially catching
that PSR fail.

> c1474648590a drm/i915: Split intel_enable_ddi() into DP and HDMI variants
> b25037cf58c5 drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}()
> 4683e47e72c9 drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
> d7b8576c70b9 drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp()
> d62a40df8dea drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants
> e59da336b286 drm/i915: Inline the required bits of intel_ddi_post_disable() into intel_ddi_fdi_post_disable()
> d00f451e0170 drm/i915: Extract intel_disable_ddi_buf()
> 7410e47bcade drm/i915: Extract intel_ddi_clk_disable()
> 8d591429231c drm/i915: Dump 'output_types' in crtc state dump
> 
> == Logs ==
> 
> For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6026/

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: ✓ Fi.CI.BAT: success for drm/i915: Cleaner DDI DP vs. HDMI split
  2017-10-13 18:16   ` Ville Syrjälä
@ 2017-10-13 18:49     ` Jani Nikula
  0 siblings, 0 replies; 26+ messages in thread
From: Jani Nikula @ 2017-10-13 18:49 UTC (permalink / raw)
  To: Ville Syrjälä, intel-gfx

On Fri, 13 Oct 2017, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Fri, Oct 13, 2017 at 05:03:39PM -0000, Patchwork wrote:
>> == Series Details ==
>> 
>> Series: drm/i915: Cleaner DDI DP vs. HDMI split
>> URL   : https://patchwork.freedesktop.org/series/31652/
>> State : success
>> 
>> == Summary ==
>> 
>> Series 31652v1 drm/i915: Cleaner DDI DP vs. HDMI split
>> https://patchwork.freedesktop.org/api/1.0/series/31652/revisions/1/mbox/
>> 
>> Test kms_pipe_crc_basic:
>>         Subgroup suspend-read-crc-pipe-b:
>>                 pass       -> DMESG-WARN (fi-byt-n2820) fdo#101705
>> 
>> fdo#101705 https://bugs.freedesktop.org/show_bug.cgi?id=101705
>> 
>> fi-bdw-5557u     total:289  pass:268  dwarn:0   dfail:0   fail:0   skip:21  time:460s
>> fi-bdw-gvtdvm    total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:465s
>> fi-blb-e6850     total:289  pass:223  dwarn:1   dfail:0   fail:0   skip:65  time:387s
>> fi-bsw-n3050     total:289  pass:243  dwarn:0   dfail:0   fail:0   skip:46  time:575s
>> fi-bwr-2160      total:289  pass:183  dwarn:0   dfail:0   fail:0   skip:106 time:285s
>> fi-bxt-dsi       total:289  pass:259  dwarn:0   dfail:0   fail:0   skip:30  time:521s
>> fi-bxt-j4205     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:522s
>> fi-byt-j1900     total:289  pass:253  dwarn:1   dfail:0   fail:0   skip:35  time:545s
>> fi-byt-n2820     total:289  pass:249  dwarn:1   dfail:0   fail:0   skip:39  time:516s
>> fi-cfl-s         total:289  pass:253  dwarn:4   dfail:0   fail:0   skip:32  time:557s
>> fi-elk-e7500     total:289  pass:229  dwarn:0   dfail:0   fail:0   skip:60  time:437s
>> fi-gdg-551       total:289  pass:178  dwarn:1   dfail:0   fail:1   skip:109 time:273s
>> fi-glk-1         total:289  pass:261  dwarn:0   dfail:0   fail:0   skip:28  time:606s
>> fi-hsw-4770r     total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:441s
>> fi-ilk-650       total:289  pass:228  dwarn:0   dfail:0   fail:0   skip:61  time:461s
>> fi-ivb-3520m     total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:506s
>> fi-ivb-3770      total:289  pass:260  dwarn:0   dfail:0   fail:0   skip:29  time:478s
>> fi-kbl-7500u     total:289  pass:263  dwarn:1   dfail:0   fail:1   skip:24  time:498s
>> fi-kbl-7567u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:488s
>> fi-kbl-r         total:289  pass:262  dwarn:0   dfail:0   fail:0   skip:27  time:593s
>> fi-pnv-d510      total:289  pass:222  dwarn:1   dfail:0   fail:0   skip:66  time:660s
>> fi-skl-6260u     total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:469s
>> fi-skl-6700hq    total:289  pass:263  dwarn:0   dfail:0   fail:0   skip:26  time:661s
>> fi-skl-6700k     total:289  pass:265  dwarn:0   dfail:0   fail:0   skip:24  time:535s
>> fi-skl-6770hq    total:289  pass:269  dwarn:0   dfail:0   fail:0   skip:20  time:546s
>> fi-skl-gvtdvm    total:289  pass:266  dwarn:0   dfail:0   fail:0   skip:23  time:475s
>> fi-snb-2520m     total:289  pass:250  dwarn:0   dfail:0   fail:0   skip:39  time:589s
>> fi-snb-2600      total:289  pass:249  dwarn:0   dfail:0   fail:0   skip:40  time:438s
>> 
>> 005c15a2795854ab64b6ce63dcb099d2eea4a889 drm-tip: 2017y-10m-13d-15h-39m-54s UTC integration manifest
>
> This one has commit 4d90f2d507ab ("drm/i915: Start tracking PSR state in
> crtc state"), so everything still looks good.

Right, that's good... but this was just BAT, not full IGT yet. :/

> Series pushed to dinq. Thanks for the review, and especially catching
> that PSR fail.

It's good to find the occasional gotcha, that's what we do review for
after all. Fingers crossed that it'll all work on full IGT too!

BR,
Jani.


>
>> c1474648590a drm/i915: Split intel_enable_ddi() into DP and HDMI variants
>> b25037cf58c5 drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}()
>> 4683e47e72c9 drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants
>> d7b8576c70b9 drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp()
>> d62a40df8dea drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants
>> e59da336b286 drm/i915: Inline the required bits of intel_ddi_post_disable() into intel_ddi_fdi_post_disable()
>> d00f451e0170 drm/i915: Extract intel_disable_ddi_buf()
>> 7410e47bcade drm/i915: Extract intel_ddi_clk_disable()
>> 8d591429231c drm/i915: Dump 'output_types' in crtc state dump
>> 
>> == Logs ==
>> 
>> For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6026/

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

* ✗ Fi.CI.IGT: failure for drm/i915: Cleaner DDI DP vs. HDMI split
  2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
                   ` (10 preceding siblings ...)
  2017-10-13 17:03 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2017-10-14  0:10 ` Patchwork
  11 siblings, 0 replies; 26+ messages in thread
From: Patchwork @ 2017-10-14  0:10 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Cleaner DDI DP vs. HDMI split
URL   : https://patchwork.freedesktop.org/series/31652/
State : failure

== Summary ==

Test kms_flip:
        Subgroup wf_vblank-vs-dpms-interruptible:
                pass       -> DMESG-WARN (shard-hsw) fdo#102614
Test kms_cursor_legacy:
        Subgroup cursor-vs-flip-atomic-transitions:
                pass       -> FAIL       (shard-hsw)

fdo#102614 https://bugs.freedesktop.org/show_bug.cgi?id=102614

shard-hsw        total:2553 pass:1439 dwarn:2   dfail:0   fail:9   skip:1103 time:9634s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_6026/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2017-10-14  0:10 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-10 12:11 [PATCH v2 0/9] drm/i915: Cleaner DDI DP vs. HDMI split Ville Syrjala
2017-10-10 12:11 ` [PATCH v2 1/9] drm/i915: Dump 'output_types' in crtc state dump Ville Syrjala
2017-10-11 19:50   ` Jani Nikula
2017-10-10 12:12 ` [PATCH v2 2/9] drm/i915: Extract intel_ddi_clk_disable() Ville Syrjala
2017-10-11 19:52   ` Jani Nikula
2017-10-10 12:12 ` [PATCH v2 3/9] drm/i915: Extract intel_disable_ddi_buf() Ville Syrjala
2017-10-11 19:53   ` Jani Nikula
2017-10-10 12:12 ` [PATCH 4/9] drm/i915: Inline the required bits of intel_ddi_post_disable() into intel_ddi_fdi_post_disable() Ville Syrjala
2017-10-10 12:12 ` [PATCH v2 5/9] drm/i915: Split intel_ddi_post_disable() into DP vs. HDMI variants Ville Syrjala
2017-10-10 12:12 ` [PATCH 6/9] drm/i915: Remove useless eDP check from intel_ddi_pre_enable_dp() Ville Syrjala
2017-10-10 12:12 ` [PATCH 7/9] drm/i915: Split intel_disable_ddi() into DP vs. HDMI variants Ville Syrjala
2017-10-11 20:03   ` Jani Nikula
2017-10-12  9:49     ` Ville Syrjälä
2017-10-13 14:13       ` Jani Nikula
2017-10-10 12:12 ` [PATCH v2 8/9] drm/i915: Plumb crtc_state etc. directly to intel_ddi_pre_enable_{dp, hdmi}() Ville Syrjala
2017-10-13 14:25   ` Jani Nikula
2017-10-10 12:12 ` [PATCH v2 9/9] drm/i915: Split intel_enable_ddi() into DP and HDMI variants Ville Syrjala
2017-10-11 20:06   ` Jani Nikula
2017-10-13 14:20     ` Jani Nikula
2017-10-13 18:10       ` Ville Syrjälä
2017-10-10 13:07 ` ✗ Fi.CI.BAT: warning for drm/i915: Cleaner DDI DP vs. HDMI split Patchwork
2017-10-10 13:21   ` Ville Syrjälä
2017-10-13 17:03 ` ✓ Fi.CI.BAT: success " Patchwork
2017-10-13 18:16   ` Ville Syrjälä
2017-10-13 18:49     ` Jani Nikula
2017-10-14  0:10 ` ✗ Fi.CI.IGT: failure " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.