All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/i915: Simplify hpd pin to port
@ 2017-08-02 17:20 Rodrigo Vivi
  2017-08-02 17:21 ` [PATCH 2/2] drm/i915: Introduce intel_hdp_pin Rodrigo Vivi
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2017-08-02 17:20 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi

We will soon need to make that pin port association per
platform, so let's try to simplify it beforehand.

Also we are moving the backwards port to pin
here as well so let's use a standardized way.

One extra possibility here would be to add a
MISSING_CASE along with PORT_NONE, but I don't want
to change this behaviour for now.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h      |  2 +-
 drivers/gpu/drm/i915/i915_irq.c      |  3 ++-
 drivers/gpu/drm/i915/intel_dp.c      |  2 +-
 drivers/gpu/drm/i915/intel_hotplug.c | 31 +++++++++++++++++--------------
 4 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index d63645a521c4..5c2c7a677e96 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3147,7 +3147,7 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 void intel_hpd_init(struct drm_i915_private *dev_priv);
 void intel_hpd_init_work(struct drm_i915_private *dev_priv);
 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
-bool intel_hpd_pin_to_port(enum hpd_pin pin, enum port *port);
+enum port intel_hpd_port(enum hpd_pin pin);
 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 196caa463edf..b115ab584b5e 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1501,7 +1501,8 @@ static void intel_get_hpd_pins(u32 *pin_mask, u32 *long_mask,
 
 		*pin_mask |= BIT(i);
 
-		if (!intel_hpd_pin_to_port(i, &port))
+		port = intel_hpd_port(i);
+		if (port == PORT_NONE)
 			continue;
 
 		if (long_pulse_detect(port, dig_hotplug_reg))
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 2d42d09428c9..d4e6128f3b3a 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4566,7 +4566,7 @@ static bool bxt_digital_port_connected(struct drm_i915_private *dev_priv,
 	enum port port;
 	u32 bit;
 
-	intel_hpd_pin_to_port(intel_encoder->hpd_pin, &port);
+	port = intel_hpd_port(intel_encoder->hpd_pin);
 	switch (port) {
 	case PORT_A:
 		bit = BXT_DE_PORT_HP_DDIA;
diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index f1200272a699..5982c47586e7 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -76,26 +76,28 @@
  * it will use i915_hotplug_work_func where this logic is handled.
  */
 
-bool intel_hpd_pin_to_port(enum hpd_pin pin, enum port *port)
+/**
+ * intel_hpd_port - return port hard associated with certain pin.
+ * @pin: the hpd pin to get associated port
+ *
+ * Return port that is associatade with @pin and PORT_NONE if no port is
+ * hard associated with that @pin.
+ */
+enum port intel_hpd_port(enum hpd_pin pin)
 {
 	switch (pin) {
 	case HPD_PORT_A:
-		*port = PORT_A;
-		return true;
+		return PORT_A;
 	case HPD_PORT_B:
-		*port = PORT_B;
-		return true;
+		return PORT_B;
 	case HPD_PORT_C:
-		*port = PORT_C;
-		return true;
+		return PORT_C;
 	case HPD_PORT_D:
-		*port = PORT_D;
-		return true;
+		return PORT_D;
 	case HPD_PORT_E:
-		*port = PORT_E;
-		return true;
+		return PORT_E;
 	default:
-		return false;	/* no hpd */
+		return PORT_NONE; /* no port for this pin */
 	}
 }
 
@@ -389,8 +391,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 		if (!(BIT(i) & pin_mask))
 			continue;
 
-		is_dig_port = intel_hpd_pin_to_port(i, &port) &&
-			      dev_priv->hotplug.irq_port[port];
+		port = intel_hpd_port(i);
+		is_dig_port = port != PORT_NONE &&
+			dev_priv->hotplug.irq_port[port];
 
 		if (is_dig_port) {
 			bool long_hpd = long_mask & BIT(i);
-- 
2.13.2

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

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

* [PATCH 2/2] drm/i915: Introduce intel_hdp_pin.
  2017-08-02 17:20 [PATCH 1/2] drm/i915: Simplify hpd pin to port Rodrigo Vivi
@ 2017-08-02 17:21 ` Rodrigo Vivi
  2017-08-02 19:26   ` [PATCH] " Rodrigo Vivi
  2017-08-02 17:45 ` ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915: Simplify hpd pin to port Patchwork
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Rodrigo Vivi @ 2017-08-02 17:21 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi

The idea is to have an unique place to decide the pin-port
per platform.

So let's create this function now without any functional
change. Just adding together code from hdmi and dp together.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h      |  1 +
 drivers/gpu/drm/i915/intel_dp.c      |  8 ++------
 drivers/gpu/drm/i915/intel_hdmi.c    | 19 +------------------
 drivers/gpu/drm/i915/intel_hotplug.c | 24 ++++++++++++++++++++++++
 4 files changed, 28 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 5c2c7a677e96..c038717ad739 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3148,6 +3148,7 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
 void intel_hpd_init_work(struct drm_i915_private *dev_priv);
 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
 enum port intel_hpd_port(enum hpd_pin pin);
+enum hpd_pin intel_hpd_pin(enum port port);
 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index d4e6128f3b3a..126783752c6d 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -5906,26 +5906,22 @@ intel_dp_init_connector_port_info(struct intel_digital_port *intel_dig_port)
 	struct intel_encoder *encoder = &intel_dig_port->base;
 	struct intel_dp *intel_dp = &intel_dig_port->dp;
 
+	encoder->hpd_pin = intel_hpd_pin(intel_dig_port->port);
+
 	switch (intel_dig_port->port) {
 	case PORT_A:
-		encoder->hpd_pin = HPD_PORT_A;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_A;
 		break;
 	case PORT_B:
-		encoder->hpd_pin = HPD_PORT_B;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_B;
 		break;
 	case PORT_C:
-		encoder->hpd_pin = HPD_PORT_C;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_C;
 		break;
 	case PORT_D:
-		encoder->hpd_pin = HPD_PORT_D;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
 		break;
 	case PORT_E:
-		encoder->hpd_pin = HPD_PORT_E;
-
 		/* FIXME: Check VBT for actual wiring of PORT E */
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
 		break;
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 5609976539bf..dcd14c71a989 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1921,24 +1921,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
 		connector->ycbcr_420_allowed = true;
 
 	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
-
-	switch (port) {
-	case PORT_B:
-		intel_encoder->hpd_pin = HPD_PORT_B;
-		break;
-	case PORT_C:
-		intel_encoder->hpd_pin = HPD_PORT_C;
-		break;
-	case PORT_D:
-		intel_encoder->hpd_pin = HPD_PORT_D;
-		break;
-	case PORT_E:
-		intel_encoder->hpd_pin = HPD_PORT_E;
-		break;
-	default:
-		MISSING_CASE(port);
-		return;
-	}
+	intel_encoder->hpd_pin = intel_hpd_pin(port);
 
 	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
 		intel_hdmi->write_infoframe = vlv_write_infoframe;
diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 5982c47586e7..360192d4b70a 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -101,6 +101,30 @@ enum port intel_hpd_port(enum hpd_pin pin)
 	}
 }
 
+/**
+ * intel_hpd_pin - return pin hard associated with certain port.
+ * @port: the hpd port to get associated pin
+ *
+ * Return pin that is associatade with @port and HDP_NONE if no pin is
+ * hard associated with that @port.
+ */
+enum hpd_pin intel_hpd_pin(enum port port)
+{
+	switch (port) {
+	case PORT_B:
+		return HPD_PORT_B;
+	case PORT_C:
+		return HPD_PORT_C;
+	case PORT_D:
+		return HPD_PORT_D;
+	case PORT_E:
+		return HPD_PORT_E;
+	default:
+		MISSING_CASE(port);
+		return HPD_NONE;
+	}
+}
+
 #define HPD_STORM_DETECT_PERIOD		1000
 #define HPD_STORM_REENABLE_DELAY	(2 * 60 * 1000)
 
-- 
2.13.2

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

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

* ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915: Simplify hpd pin to port
  2017-08-02 17:20 [PATCH 1/2] drm/i915: Simplify hpd pin to port Rodrigo Vivi
  2017-08-02 17:21 ` [PATCH 2/2] drm/i915: Introduce intel_hdp_pin Rodrigo Vivi
@ 2017-08-02 17:45 ` Patchwork
  2017-08-02 19:50 ` ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915: Simplify hpd pin to port (rev2) Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2017-08-02 17:45 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/2] drm/i915: Simplify hpd pin to port
URL   : https://patchwork.freedesktop.org/series/28261/
State : failure

== Summary ==

Series 28261v1 Series without cover letter
https://patchwork.freedesktop.org/api/1.0/series/28261/revisions/1/mbox/

Test gem_exec_suspend:
        Subgroup basic-s3:
                pass       -> DMESG-WARN (fi-bxt-j4205)
Test gem_pread:
        Subgroup basic:
                pass       -> INCOMPLETE (fi-bxt-j4205)
Test kms_busy:
        Subgroup basic-flip-default-a:
                pass       -> DMESG-WARN (fi-skl-6700hq) fdo#101144
        Subgroup basic-flip-default-b:
                pass       -> FAIL       (fi-skl-6700hq) fdo#101518 +31
Test kms_flip:
        Subgroup basic-flip-vs-modeset:
                pass       -> SKIP       (fi-skl-6700hq)
        Subgroup basic-flip-vs-wf_vblank:
                pass       -> SKIP       (fi-skl-6700hq) fdo#99739
        Subgroup basic-plain-flip:
                pass       -> SKIP       (fi-skl-6700hq)
Test kms_frontbuffer_tracking:
        Subgroup basic:
                pass       -> SKIP       (fi-skl-6700hq)
Test kms_pipe_crc_basic:
        Subgroup hang-read-crc-pipe-a:
                pass       -> DMESG-WARN (fi-pnv-d510) fdo#101597
Test pm_rpm:
        Subgroup basic-pci-d3-state:
                pass       -> SKIP       (fi-skl-6700hq)
        Subgroup basic-rte:
                pass       -> SKIP       (fi-skl-6700hq)
Test drv_module_reload:
        Subgroup basic-reload:
                pass       -> DMESG-WARN (fi-skl-6700hq)
                pass       -> DMESG-WARN (fi-skl-x1585l)
                pass       -> DMESG-WARN (fi-kbl-7500u)
                pass       -> DMESG-WARN (fi-kbl-7560u)
                pass       -> DMESG-WARN (fi-kbl-r)
                pass       -> DMESG-WARN (fi-glk-2a)
        Subgroup basic-reload-inject:
                pass       -> DMESG-WARN (fi-skl-6700hq)
                pass       -> DMESG-WARN (fi-skl-x1585l)
                pass       -> DMESG-WARN (fi-kbl-7500u)
                pass       -> DMESG-WARN (fi-kbl-7560u)
                pass       -> DMESG-WARN (fi-kbl-r)
                pass       -> DMESG-WARN (fi-glk-2a)
        Subgroup basic-reload-final:
                pass       -> DMESG-WARN (fi-skl-6700hq)
                pass       -> DMESG-WARN (fi-skl-x1585l)
                pass       -> DMESG-WARN (fi-kbl-7500u)
                pass       -> DMESG-WARN (fi-kbl-7560u)
                pass       -> DMESG-WARN (fi-kbl-r)
                pass       -> DMESG-WARN (fi-glk-2a)

fdo#101144 https://bugs.freedesktop.org/show_bug.cgi?id=101144
fdo#101518 https://bugs.freedesktop.org/show_bug.cgi?id=101518
fdo#99739 https://bugs.freedesktop.org/show_bug.cgi?id=99739
fdo#101597 https://bugs.freedesktop.org/show_bug.cgi?id=101597

fi-bdw-5557u     total:280  pass:269  dwarn:0   dfail:0   fail:0   skip:11  time:448s
fi-bdw-gvtdvm    total:280  pass:266  dwarn:0   dfail:0   fail:0   skip:14  time:433s
fi-blb-e6850     total:280  pass:225  dwarn:1   dfail:0   fail:0   skip:54  time:357s
fi-bsw-n3050     total:280  pass:244  dwarn:0   dfail:0   fail:0   skip:36  time:545s
fi-bxt-j4205     total:139  pass:125  dwarn:1   dfail:0   fail:0   skip:12 
fi-byt-n2820     total:280  pass:251  dwarn:1   dfail:0   fail:0   skip:28  time:496s
fi-glk-2a        total:280  pass:258  dwarn:3   dfail:0   fail:0   skip:19  time:611s
fi-hsw-4770      total:280  pass:264  dwarn:0   dfail:0   fail:0   skip:16  time:440s
fi-hsw-4770r     total:280  pass:264  dwarn:0   dfail:0   fail:0   skip:16  time:417s
fi-ilk-650       total:280  pass:230  dwarn:0   dfail:0   fail:0   skip:50  time:418s
fi-ivb-3520m     total:280  pass:262  dwarn:0   dfail:0   fail:0   skip:18  time:497s
fi-ivb-3770      total:280  pass:262  dwarn:0   dfail:0   fail:0   skip:18  time:471s
fi-kbl-7500u     total:280  pass:259  dwarn:3   dfail:0   fail:0   skip:18  time:467s
fi-kbl-7560u     total:280  pass:267  dwarn:3   dfail:0   fail:0   skip:10  time:546s
fi-kbl-r         total:280  pass:259  dwarn:3   dfail:0   fail:0   skip:18  time:556s
fi-pnv-d510      total:280  pass:223  dwarn:2   dfail:0   fail:0   skip:55  time:562s
fi-skl-6260u     total:280  pass:270  dwarn:0   dfail:0   fail:0   skip:10  time:453s
fi-skl-6700hq    total:280  pass:221  dwarn:4   dfail:0   fail:30  skip:24  time:314s
fi-skl-6700k     total:280  pass:262  dwarn:0   dfail:0   fail:0   skip:18  time:472s
fi-skl-6770hq    total:280  pass:270  dwarn:0   dfail:0   fail:0   skip:10  time:472s
fi-skl-gvtdvm    total:280  pass:267  dwarn:0   dfail:0   fail:0   skip:13  time:441s
fi-skl-x1585l    total:280  pass:266  dwarn:3   dfail:0   fail:0   skip:11  time:477s
fi-snb-2520m     total:280  pass:252  dwarn:0   dfail:0   fail:0   skip:28  time:544s
fi-snb-2600      total:280  pass:251  dwarn:0   dfail:0   fail:0   skip:29  time:406s

fcb630a80579faf6d12ee62cb49bd7a4acff41e6 drm-tip: 2017y-08m-01d-17h-14m-57s UTC integration manifest
3b266ce6a7ae drm/i915: Introduce intel_hdp_pin.
d19d0d8b41e1 drm/i915: Simplify hpd pin to port

== Logs ==

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

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

* [PATCH] drm/i915: Introduce intel_hdp_pin.
  2017-08-02 17:21 ` [PATCH 2/2] drm/i915: Introduce intel_hdp_pin Rodrigo Vivi
@ 2017-08-02 19:26   ` Rodrigo Vivi
  2017-08-10  4:44     ` Pandiyan, Dhinakaran
  0 siblings, 1 reply; 13+ messages in thread
From: Rodrigo Vivi @ 2017-08-02 19:26 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi

The idea is to have an unique place to decide the pin-port
per platform.

So let's create this function now without any functional
change. Just adding together code from hdmi and dp together.

v2: Add missing pin for port A.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h      |  1 +
 drivers/gpu/drm/i915/intel_dp.c      |  8 ++------
 drivers/gpu/drm/i915/intel_hdmi.c    | 19 +------------------
 drivers/gpu/drm/i915/intel_hotplug.c | 26 ++++++++++++++++++++++++++
 4 files changed, 30 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 5c2c7a677e96..c038717ad739 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3148,6 +3148,7 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
 void intel_hpd_init_work(struct drm_i915_private *dev_priv);
 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
 enum port intel_hpd_port(enum hpd_pin pin);
+enum hpd_pin intel_hpd_pin(enum port port);
 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index d4e6128f3b3a..126783752c6d 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -5906,26 +5906,22 @@ intel_dp_init_connector_port_info(struct intel_digital_port *intel_dig_port)
 	struct intel_encoder *encoder = &intel_dig_port->base;
 	struct intel_dp *intel_dp = &intel_dig_port->dp;
 
+	encoder->hpd_pin = intel_hpd_pin(intel_dig_port->port);
+
 	switch (intel_dig_port->port) {
 	case PORT_A:
-		encoder->hpd_pin = HPD_PORT_A;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_A;
 		break;
 	case PORT_B:
-		encoder->hpd_pin = HPD_PORT_B;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_B;
 		break;
 	case PORT_C:
-		encoder->hpd_pin = HPD_PORT_C;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_C;
 		break;
 	case PORT_D:
-		encoder->hpd_pin = HPD_PORT_D;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
 		break;
 	case PORT_E:
-		encoder->hpd_pin = HPD_PORT_E;
-
 		/* FIXME: Check VBT for actual wiring of PORT E */
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
 		break;
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 5609976539bf..dcd14c71a989 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1921,24 +1921,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
 		connector->ycbcr_420_allowed = true;
 
 	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
-
-	switch (port) {
-	case PORT_B:
-		intel_encoder->hpd_pin = HPD_PORT_B;
-		break;
-	case PORT_C:
-		intel_encoder->hpd_pin = HPD_PORT_C;
-		break;
-	case PORT_D:
-		intel_encoder->hpd_pin = HPD_PORT_D;
-		break;
-	case PORT_E:
-		intel_encoder->hpd_pin = HPD_PORT_E;
-		break;
-	default:
-		MISSING_CASE(port);
-		return;
-	}
+	intel_encoder->hpd_pin = intel_hpd_pin(port);
 
 	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
 		intel_hdmi->write_infoframe = vlv_write_infoframe;
diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index 5982c47586e7..7b1cf30a3e9b 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -101,6 +101,32 @@ enum port intel_hpd_port(enum hpd_pin pin)
 	}
 }
 
+/**
+ * intel_hpd_pin - return pin hard associated with certain port.
+ * @port: the hpd port to get associated pin
+ *
+ * Return pin that is associatade with @port and HDP_NONE if no pin is
+ * hard associated with that @port.
+ */
+enum hpd_pin intel_hpd_pin(enum port port)
+{
+	switch (port) {
+	case PORT_A:
+		return HPD_PORT_A;
+	case PORT_B:
+		return HPD_PORT_B;
+	case PORT_C:
+		return HPD_PORT_C;
+	case PORT_D:
+		return HPD_PORT_D;
+	case PORT_E:
+		return HPD_PORT_E;
+	default:
+		MISSING_CASE(port);
+		return HPD_NONE;
+	}
+}
+
 #define HPD_STORM_DETECT_PERIOD		1000
 #define HPD_STORM_REENABLE_DELAY	(2 * 60 * 1000)
 
-- 
2.13.2

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

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

* ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915: Simplify hpd pin to port (rev2)
  2017-08-02 17:20 [PATCH 1/2] drm/i915: Simplify hpd pin to port Rodrigo Vivi
  2017-08-02 17:21 ` [PATCH 2/2] drm/i915: Introduce intel_hdp_pin Rodrigo Vivi
  2017-08-02 17:45 ` ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915: Simplify hpd pin to port Patchwork
@ 2017-08-02 19:50 ` Patchwork
  2017-08-10  5:22 ` [PATCH 1/2] drm/i915: Simplify hpd pin to port Pandiyan, Dhinakaran
  2017-08-11 18:49 ` ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915: Simplify hpd pin to port (rev4) Patchwork
  4 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2017-08-02 19:50 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/2] drm/i915: Simplify hpd pin to port (rev2)
URL   : https://patchwork.freedesktop.org/series/28261/
State : failure

== Summary ==

Series 28261v2 Series without cover letter
https://patchwork.freedesktop.org/api/1.0/series/28261/revisions/2/mbox/

Test kms_busy:
        Subgroup basic-flip-default-a:
                pass       -> FAIL       (fi-byt-n2820)

fi-bdw-5557u     total:280  pass:269  dwarn:0   dfail:0   fail:0   skip:11  time:451s
fi-bdw-gvtdvm    total:280  pass:266  dwarn:0   dfail:0   fail:0   skip:14  time:429s
fi-blb-e6850     total:280  pass:225  dwarn:1   dfail:0   fail:0   skip:54  time:352s
fi-bsw-n3050     total:280  pass:244  dwarn:0   dfail:0   fail:0   skip:36  time:542s
fi-bxt-j4205     total:280  pass:261  dwarn:0   dfail:0   fail:0   skip:19  time:515s
fi-byt-n2820     total:280  pass:250  dwarn:1   dfail:0   fail:1   skip:28  time:506s
fi-glk-2a        total:280  pass:261  dwarn:0   dfail:0   fail:0   skip:19  time:611s
fi-hsw-4770      total:280  pass:264  dwarn:0   dfail:0   fail:0   skip:16  time:440s
fi-hsw-4770r     total:280  pass:264  dwarn:0   dfail:0   fail:0   skip:16  time:420s
fi-ilk-650       total:280  pass:230  dwarn:0   dfail:0   fail:0   skip:50  time:422s
fi-ivb-3520m     total:280  pass:262  dwarn:0   dfail:0   fail:0   skip:18  time:510s
fi-ivb-3770      total:280  pass:262  dwarn:0   dfail:0   fail:0   skip:18  time:472s
fi-kbl-7500u     total:280  pass:262  dwarn:0   dfail:0   fail:0   skip:18  time:474s
fi-kbl-7560u     total:280  pass:270  dwarn:0   dfail:0   fail:0   skip:10  time:579s
fi-kbl-r         total:280  pass:262  dwarn:0   dfail:0   fail:0   skip:18  time:581s
fi-pnv-d510      total:280  pass:224  dwarn:1   dfail:0   fail:0   skip:55  time:566s
fi-skl-6260u     total:280  pass:270  dwarn:0   dfail:0   fail:0   skip:10  time:460s
fi-skl-6700hq    total:280  pass:263  dwarn:0   dfail:0   fail:0   skip:17  time:587s
fi-skl-6700k     total:280  pass:262  dwarn:0   dfail:0   fail:0   skip:18  time:469s
fi-skl-6770hq    total:280  pass:270  dwarn:0   dfail:0   fail:0   skip:10  time:481s
fi-skl-gvtdvm    total:280  pass:267  dwarn:0   dfail:0   fail:0   skip:13  time:441s
fi-skl-x1585l    total:280  pass:269  dwarn:0   dfail:0   fail:0   skip:11  time:477s
fi-snb-2520m     total:280  pass:252  dwarn:0   dfail:0   fail:0   skip:28  time:542s
fi-snb-2600      total:280  pass:251  dwarn:0   dfail:0   fail:0   skip:29  time:406s

fcb630a80579faf6d12ee62cb49bd7a4acff41e6 drm-tip: 2017y-08m-01d-17h-14m-57s UTC integration manifest
efeca7c390ea drm/i915: Introduce intel_hdp_pin.
841ca9ad81dd drm/i915: Simplify hpd pin to port

== Logs ==

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

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

* Re: [PATCH] drm/i915: Introduce intel_hdp_pin.
  2017-08-02 19:26   ` [PATCH] " Rodrigo Vivi
@ 2017-08-10  4:44     ` Pandiyan, Dhinakaran
  2017-08-10 21:23       ` Rodrigo Vivi
  0 siblings, 1 reply; 13+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-08-10  4:44 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx

On Wed, 2017-08-02 at 12:26 -0700, Rodrigo Vivi wrote:
> The idea is to have an unique place to decide the pin-port
> per platform.
> 
> So let's create this function now without any functional
> change. 

This seems to change the behavior when port A is not eDP.

> Just adding together code from hdmi and dp together.
> 
> v2: Add missing pin for port A.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.h      |  1 +
>  drivers/gpu/drm/i915/intel_dp.c      |  8 ++------
>  drivers/gpu/drm/i915/intel_hdmi.c    | 19 +------------------
>  drivers/gpu/drm/i915/intel_hotplug.c | 26 ++++++++++++++++++++++++++
>  4 files changed, 30 insertions(+), 24 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 5c2c7a677e96..c038717ad739 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -3148,6 +3148,7 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
>  void intel_hpd_init_work(struct drm_i915_private *dev_priv);
>  void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
>  enum port intel_hpd_port(enum hpd_pin pin);
> +enum hpd_pin intel_hpd_pin(enum port port);
>  bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
>  void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
>  
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index d4e6128f3b3a..126783752c6d 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -5906,26 +5906,22 @@ intel_dp_init_connector_port_info(struct intel_digital_port *intel_dig_port)
>  	struct intel_encoder *encoder = &intel_dig_port->base;
>  	struct intel_dp *intel_dp = &intel_dig_port->dp;
>  
> +	encoder->hpd_pin = intel_hpd_pin(intel_dig_port->port);
> +
>  	switch (intel_dig_port->port) {
>  	case PORT_A:
> -		encoder->hpd_pin = HPD_PORT_A;
>  		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_A;
>  		break;
>  	case PORT_B:
> -		encoder->hpd_pin = HPD_PORT_B;
>  		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_B;
>  		break;
>  	case PORT_C:
> -		encoder->hpd_pin = HPD_PORT_C;
>  		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_C;
>  		break;
>  	case PORT_D:
> -		encoder->hpd_pin = HPD_PORT_D;
>  		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
>  		break;
>  	case PORT_E:
> -		encoder->hpd_pin = HPD_PORT_E;
> -
>  		/* FIXME: Check VBT for actual wiring of PORT E */
>  		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
>  		break;
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 5609976539bf..dcd14c71a989 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -1921,24 +1921,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>  		connector->ycbcr_420_allowed = true;
>  
>  	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> -
> -	switch (port) {
> -	case PORT_B:
> -		intel_encoder->hpd_pin = HPD_PORT_B;
> -		break;
> -	case PORT_C:
> -		intel_encoder->hpd_pin = HPD_PORT_C;
> -		break;
> -	case PORT_D:
> -		intel_encoder->hpd_pin = HPD_PORT_D;
> -		break;
> -	case PORT_E:
> -		intel_encoder->hpd_pin = HPD_PORT_E;
> -		break;
> -	default:
> -		MISSING_CASE(port);
> -		return;
> -	}
> +	intel_encoder->hpd_pin = intel_hpd_pin(port);

Instead of returning early for port A, this will go ahead and attach the
HDMI encoder to the connector. However, I don't know likely  we'll have
a vbt that says port A supports both DP and HDMI but not eDP. 

>  
>  	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
>  		intel_hdmi->write_infoframe = vlv_write_infoframe;
> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
> index 5982c47586e7..7b1cf30a3e9b 100644
> --- a/drivers/gpu/drm/i915/intel_hotplug.c
> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> @@ -101,6 +101,32 @@ enum port intel_hpd_port(enum hpd_pin pin)
>  	}
>  }
>  
> +/**
> + * intel_hpd_pin - return pin hard associated with certain port.
> + * @port: the hpd port to get associated pin
> + *
> + * Return pin that is associatade with @port and HDP_NONE if no pin is
> + * hard associated with that @port.
> + */
> +enum hpd_pin intel_hpd_pin(enum port port)
> +{
> +	switch (port) {
> +	case PORT_A:
> +		return HPD_PORT_A;
> +	case PORT_B:
> +		return HPD_PORT_B;
> +	case PORT_C:
> +		return HPD_PORT_C;
> +	case PORT_D:
> +		return HPD_PORT_D;
> +	case PORT_E:
> +		return HPD_PORT_E;
> +	default:
> +		MISSING_CASE(port);
> +		return HPD_NONE;
> +	}
> +}
> +
>  #define HPD_STORM_DETECT_PERIOD		1000
>  #define HPD_STORM_REENABLE_DELAY	(2 * 60 * 1000)
>  
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH 1/2] drm/i915: Simplify hpd pin to port
  2017-08-02 17:20 [PATCH 1/2] drm/i915: Simplify hpd pin to port Rodrigo Vivi
                   ` (2 preceding siblings ...)
  2017-08-02 19:50 ` ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915: Simplify hpd pin to port (rev2) Patchwork
@ 2017-08-10  5:22 ` Pandiyan, Dhinakaran
  2017-08-11 18:49 ` ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915: Simplify hpd pin to port (rev4) Patchwork
  4 siblings, 0 replies; 13+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-08-10  5:22 UTC (permalink / raw)
  To: Vivi, Rodrigo; +Cc: intel-gfx

On Wed, 2017-08-02 at 10:20 -0700, Rodrigo Vivi wrote:
> We will soon need to make that pin port association per
> platform, so let's try to simplify it beforehand.
> 
> Also we are moving the backwards port to pin
> here as well so let's use a standardized way.
> 
> One extra possibility here would be to add a
> MISSING_CASE along with PORT_NONE, but I don't want
> to change this behaviour for now.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.h      |  2 +-
>  drivers/gpu/drm/i915/i915_irq.c      |  3 ++-
>  drivers/gpu/drm/i915/intel_dp.c      |  2 +-
>  drivers/gpu/drm/i915/intel_hotplug.c | 31 +++++++++++++++++--------------
>  4 files changed, 21 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index d63645a521c4..5c2c7a677e96 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -3147,7 +3147,7 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
>  void intel_hpd_init(struct drm_i915_private *dev_priv);
>  void intel_hpd_init_work(struct drm_i915_private *dev_priv);
>  void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
> -bool intel_hpd_pin_to_port(enum hpd_pin pin, enum port *port);
> +enum port intel_hpd_port(enum hpd_pin pin);

bikeshed: I feel hpd_pin_to_port reads better, conveys the conversion
from enum hpd_pin to enum port. Secondly, I haven't seen any references
to "hpd_port" in the driver.

It is not entirely obvious to me how changing the function signature
will help per-platform mapping, but returning port looks cleaner. 

With the function name left intact
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>


>  bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
>  void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
>  
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 196caa463edf..b115ab584b5e 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1501,7 +1501,8 @@ static void intel_get_hpd_pins(u32 *pin_mask, u32 *long_mask,
>  
>  		*pin_mask |= BIT(i);
>  
> -		if (!intel_hpd_pin_to_port(i, &port))
> +		port = intel_hpd_port(i);
> +		if (port == PORT_NONE)
>  			continue;
>  
>  		if (long_pulse_detect(port, dig_hotplug_reg))
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 2d42d09428c9..d4e6128f3b3a 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -4566,7 +4566,7 @@ static bool bxt_digital_port_connected(struct drm_i915_private *dev_priv,
>  	enum port port;
>  	u32 bit;
>  
> -	intel_hpd_pin_to_port(intel_encoder->hpd_pin, &port);
> +	port = intel_hpd_port(intel_encoder->hpd_pin);
>  	switch (port) {
>  	case PORT_A:
>  		bit = BXT_DE_PORT_HP_DDIA;
> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
> index f1200272a699..5982c47586e7 100644
> --- a/drivers/gpu/drm/i915/intel_hotplug.c
> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> @@ -76,26 +76,28 @@
>   * it will use i915_hotplug_work_func where this logic is handled.
>   */
>  
> -bool intel_hpd_pin_to_port(enum hpd_pin pin, enum port *port)
> +/**
> + * intel_hpd_port - return port hard associated with certain pin.
> + * @pin: the hpd pin to get associated port
> + *
> + * Return port that is associatade with @pin and PORT_NONE if no port is
> + * hard associated with that @pin.
> + */
> +enum port intel_hpd_port(enum hpd_pin pin)
>  {
>  	switch (pin) {
>  	case HPD_PORT_A:
> -		*port = PORT_A;
> -		return true;
> +		return PORT_A;
>  	case HPD_PORT_B:
> -		*port = PORT_B;
> -		return true;
> +		return PORT_B;
>  	case HPD_PORT_C:
> -		*port = PORT_C;
> -		return true;
> +		return PORT_C;
>  	case HPD_PORT_D:
> -		*port = PORT_D;
> -		return true;
> +		return PORT_D;
>  	case HPD_PORT_E:
> -		*port = PORT_E;
> -		return true;
> +		return PORT_E;
>  	default:
> -		return false;	/* no hpd */
> +		return PORT_NONE; /* no port for this pin */
>  	}
>  }
>  
> @@ -389,8 +391,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
>  		if (!(BIT(i) & pin_mask))
>  			continue;
>  
> -		is_dig_port = intel_hpd_pin_to_port(i, &port) &&
> -			      dev_priv->hotplug.irq_port[port];
> +		port = intel_hpd_port(i);
> +		is_dig_port = port != PORT_NONE &&
> +			dev_priv->hotplug.irq_port[port];

nit: I find
= (port != PORT_NONE) && dev_priv->hotplug.irq_port[port]
easier to read

>  
>  		if (is_dig_port) {
>  			bool long_hpd = long_mask & BIT(i);
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH] drm/i915: Introduce intel_hdp_pin.
  2017-08-10  4:44     ` Pandiyan, Dhinakaran
@ 2017-08-10 21:23       ` Rodrigo Vivi
  2017-08-10 23:24         ` Pandiyan, Dhinakaran
  0 siblings, 1 reply; 13+ messages in thread
From: Rodrigo Vivi @ 2017-08-10 21:23 UTC (permalink / raw)
  To: Pandiyan, Dhinakaran; +Cc: intel-gfx, Vivi, Rodrigo

On Wed, Aug 9, 2017 at 9:44 PM, Pandiyan, Dhinakaran
<dhinakaran.pandiyan@intel.com> wrote:
> On Wed, 2017-08-02 at 12:26 -0700, Rodrigo Vivi wrote:
>> The idea is to have an unique place to decide the pin-port
>> per platform.
>>
>> So let's create this function now without any functional
>> change.
>
> This seems to change the behavior when port A is not eDP.
>
>> Just adding together code from hdmi and dp together.
>>
>> v2: Add missing pin for port A.
>>
>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> ---
>>  drivers/gpu/drm/i915/i915_drv.h      |  1 +
>>  drivers/gpu/drm/i915/intel_dp.c      |  8 ++------
>>  drivers/gpu/drm/i915/intel_hdmi.c    | 19 +------------------
>>  drivers/gpu/drm/i915/intel_hotplug.c | 26 ++++++++++++++++++++++++++
>>  4 files changed, 30 insertions(+), 24 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>> index 5c2c7a677e96..c038717ad739 100644
>> --- a/drivers/gpu/drm/i915/i915_drv.h
>> +++ b/drivers/gpu/drm/i915/i915_drv.h
>> @@ -3148,6 +3148,7 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
>>  void intel_hpd_init_work(struct drm_i915_private *dev_priv);
>>  void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
>>  enum port intel_hpd_port(enum hpd_pin pin);
>> +enum hpd_pin intel_hpd_pin(enum port port);
>>  bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
>>  void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
>>
>> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
>> index d4e6128f3b3a..126783752c6d 100644
>> --- a/drivers/gpu/drm/i915/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/intel_dp.c
>> @@ -5906,26 +5906,22 @@ intel_dp_init_connector_port_info(struct intel_digital_port *intel_dig_port)
>>       struct intel_encoder *encoder = &intel_dig_port->base;
>>       struct intel_dp *intel_dp = &intel_dig_port->dp;
>>
>> +     encoder->hpd_pin = intel_hpd_pin(intel_dig_port->port);
>> +
>>       switch (intel_dig_port->port) {
>>       case PORT_A:
>> -             encoder->hpd_pin = HPD_PORT_A;
>>               intel_dp->aux_power_domain = POWER_DOMAIN_AUX_A;
>>               break;
>>       case PORT_B:
>> -             encoder->hpd_pin = HPD_PORT_B;
>>               intel_dp->aux_power_domain = POWER_DOMAIN_AUX_B;
>>               break;
>>       case PORT_C:
>> -             encoder->hpd_pin = HPD_PORT_C;
>>               intel_dp->aux_power_domain = POWER_DOMAIN_AUX_C;
>>               break;
>>       case PORT_D:
>> -             encoder->hpd_pin = HPD_PORT_D;
>>               intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
>>               break;
>>       case PORT_E:
>> -             encoder->hpd_pin = HPD_PORT_E;
>> -
>>               /* FIXME: Check VBT for actual wiring of PORT E */
>>               intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
>>               break;
>> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
>> index 5609976539bf..dcd14c71a989 100644
>> --- a/drivers/gpu/drm/i915/intel_hdmi.c
>> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
>> @@ -1921,24 +1921,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>>               connector->ycbcr_420_allowed = true;
>>
>>       intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
>> -
>> -     switch (port) {
>> -     case PORT_B:
>> -             intel_encoder->hpd_pin = HPD_PORT_B;
>> -             break;
>> -     case PORT_C:
>> -             intel_encoder->hpd_pin = HPD_PORT_C;
>> -             break;
>> -     case PORT_D:
>> -             intel_encoder->hpd_pin = HPD_PORT_D;
>> -             break;
>> -     case PORT_E:
>> -             intel_encoder->hpd_pin = HPD_PORT_E;
>> -             break;
>> -     default:
>> -             MISSING_CASE(port);
>> -             return;
>> -     }
>> +     intel_encoder->hpd_pin = intel_hpd_pin(port);
>
> Instead of returning early for port A, this will go ahead and attach the
> HDMI encoder to the connector.

hmm! indeed!
this also explains how I end up forgetting the PORT_A on v1...

> However, I don't know likely  we'll have
> a vbt that says port A supports both DP and HDMI but not eDP.

If we have a VBT stating that or it is a current bug we have or if
we have a VBT that lies to that point we have probably bigger issues,
but I understand that so far this option is working stable out there and
we don't want to take the risk, so what about a"

+ if(WARN_ON(port == PORT_A)) return;
+ intel_encoder->hpd_pin = intel_hpd_pin(port);

?
or just change the commit message explaining this case?

>
>>
>>       if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
>>               intel_hdmi->write_infoframe = vlv_write_infoframe;
>> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
>> index 5982c47586e7..7b1cf30a3e9b 100644
>> --- a/drivers/gpu/drm/i915/intel_hotplug.c
>> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
>> @@ -101,6 +101,32 @@ enum port intel_hpd_port(enum hpd_pin pin)
>>       }
>>  }
>>
>> +/**
>> + * intel_hpd_pin - return pin hard associated with certain port.
>> + * @port: the hpd port to get associated pin
>> + *
>> + * Return pin that is associatade with @port and HDP_NONE if no pin is
>> + * hard associated with that @port.
>> + */
>> +enum hpd_pin intel_hpd_pin(enum port port)
>> +{
>> +     switch (port) {
>> +     case PORT_A:
>> +             return HPD_PORT_A;
>> +     case PORT_B:
>> +             return HPD_PORT_B;
>> +     case PORT_C:
>> +             return HPD_PORT_C;
>> +     case PORT_D:
>> +             return HPD_PORT_D;
>> +     case PORT_E:
>> +             return HPD_PORT_E;
>> +     default:
>> +             MISSING_CASE(port);
>> +             return HPD_NONE;
>> +     }
>> +}
>> +
>>  #define HPD_STORM_DETECT_PERIOD              1000
>>  #define HPD_STORM_REENABLE_DELAY     (2 * 60 * 1000)
>>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH] drm/i915: Introduce intel_hdp_pin.
  2017-08-10 21:23       ` Rodrigo Vivi
@ 2017-08-10 23:24         ` Pandiyan, Dhinakaran
  2017-08-11 18:26           ` [PATCH 1/2] drm/i915: Simplify hpd pin to port Rodrigo Vivi
  0 siblings, 1 reply; 13+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-08-10 23:24 UTC (permalink / raw)
  To: rodrigo.vivi; +Cc: intel-gfx, Vivi, Rodrigo

On Thu, 2017-08-10 at 14:23 -0700, Rodrigo Vivi wrote:
> On Wed, Aug 9, 2017 at 9:44 PM, Pandiyan, Dhinakaran
> <dhinakaran.pandiyan@intel.com> wrote:
> > On Wed, 2017-08-02 at 12:26 -0700, Rodrigo Vivi wrote:
> >> The idea is to have an unique place to decide the pin-port
> >> per platform.
> >>
> >> So let's create this function now without any functional
> >> change.
> >
> > This seems to change the behavior when port A is not eDP.
> >
> >> Just adding together code from hdmi and dp together.
> >>
> >> v2: Add missing pin for port A.
> >>
> >> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> >> ---
> >>  drivers/gpu/drm/i915/i915_drv.h      |  1 +
> >>  drivers/gpu/drm/i915/intel_dp.c      |  8 ++------
> >>  drivers/gpu/drm/i915/intel_hdmi.c    | 19 +------------------
> >>  drivers/gpu/drm/i915/intel_hotplug.c | 26 ++++++++++++++++++++++++++
> >>  4 files changed, 30 insertions(+), 24 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> >> index 5c2c7a677e96..c038717ad739 100644
> >> --- a/drivers/gpu/drm/i915/i915_drv.h
> >> +++ b/drivers/gpu/drm/i915/i915_drv.h
> >> @@ -3148,6 +3148,7 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
> >>  void intel_hpd_init_work(struct drm_i915_private *dev_priv);
> >>  void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
> >>  enum port intel_hpd_port(enum hpd_pin pin);
> >> +enum hpd_pin intel_hpd_pin(enum port port);
> >>  bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
> >>  void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
> >>
> >> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> >> index d4e6128f3b3a..126783752c6d 100644
> >> --- a/drivers/gpu/drm/i915/intel_dp.c
> >> +++ b/drivers/gpu/drm/i915/intel_dp.c
> >> @@ -5906,26 +5906,22 @@ intel_dp_init_connector_port_info(struct intel_digital_port *intel_dig_port)
> >>       struct intel_encoder *encoder = &intel_dig_port->base;
> >>       struct intel_dp *intel_dp = &intel_dig_port->dp;
> >>
> >> +     encoder->hpd_pin = intel_hpd_pin(intel_dig_port->port);
> >> +
> >>       switch (intel_dig_port->port) {
> >>       case PORT_A:
> >> -             encoder->hpd_pin = HPD_PORT_A;
> >>               intel_dp->aux_power_domain = POWER_DOMAIN_AUX_A;
> >>               break;
> >>       case PORT_B:
> >> -             encoder->hpd_pin = HPD_PORT_B;
> >>               intel_dp->aux_power_domain = POWER_DOMAIN_AUX_B;
> >>               break;
> >>       case PORT_C:
> >> -             encoder->hpd_pin = HPD_PORT_C;
> >>               intel_dp->aux_power_domain = POWER_DOMAIN_AUX_C;
> >>               break;
> >>       case PORT_D:
> >> -             encoder->hpd_pin = HPD_PORT_D;
> >>               intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
> >>               break;
> >>       case PORT_E:
> >> -             encoder->hpd_pin = HPD_PORT_E;
> >> -
> >>               /* FIXME: Check VBT for actual wiring of PORT E */
> >>               intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
> >>               break;
> >> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> >> index 5609976539bf..dcd14c71a989 100644
> >> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> >> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> >> @@ -1921,24 +1921,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
> >>               connector->ycbcr_420_allowed = true;
> >>
> >>       intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> >> -
> >> -     switch (port) {
> >> -     case PORT_B:
> >> -             intel_encoder->hpd_pin = HPD_PORT_B;
> >> -             break;
> >> -     case PORT_C:
> >> -             intel_encoder->hpd_pin = HPD_PORT_C;
> >> -             break;
> >> -     case PORT_D:
> >> -             intel_encoder->hpd_pin = HPD_PORT_D;
> >> -             break;
> >> -     case PORT_E:
> >> -             intel_encoder->hpd_pin = HPD_PORT_E;
> >> -             break;
> >> -     default:
> >> -             MISSING_CASE(port);
> >> -             return;
> >> -     }
> >> +     intel_encoder->hpd_pin = intel_hpd_pin(port);
> >
> > Instead of returning early for port A, this will go ahead and attach the
> > HDMI encoder to the connector.
> 
> hmm! indeed!
> this also explains how I end up forgetting the PORT_A on v1...
> 
> > However, I don't know likely  we'll have
> > a vbt that says port A supports both DP and HDMI but not eDP.
> 
> If we have a VBT stating that or it is a current bug we have or if
> we have a VBT that lies to that point we have probably bigger issues,
> but I understand that so far this option is working stable out there and
> we don't want to take the risk, so what about a"
> 
> + if(WARN_ON(port == PORT_A)) return;
> + intel_encoder->hpd_pin = intel_hpd_pin(port);
> 

Looks good to me with this change
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>


> ?
> or just change the commit message explaining this case?
> 
> >
> >>
> >>       if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
> >>               intel_hdmi->write_infoframe = vlv_write_infoframe;
> >> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
> >> index 5982c47586e7..7b1cf30a3e9b 100644
> >> --- a/drivers/gpu/drm/i915/intel_hotplug.c
> >> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> >> @@ -101,6 +101,32 @@ enum port intel_hpd_port(enum hpd_pin pin)
> >>       }
> >>  }
> >>
> >> +/**
> >> + * intel_hpd_pin - return pin hard associated with certain port.
> >> + * @port: the hpd port to get associated pin
> >> + *
> >> + * Return pin that is associatade with @port and HDP_NONE if no pin is
> >> + * hard associated with that @port.
> >> + */
> >> +enum hpd_pin intel_hpd_pin(enum port port)
> >> +{
> >> +     switch (port) {
> >> +     case PORT_A:
> >> +             return HPD_PORT_A;
> >> +     case PORT_B:
> >> +             return HPD_PORT_B;
> >> +     case PORT_C:
> >> +             return HPD_PORT_C;
> >> +     case PORT_D:
> >> +             return HPD_PORT_D;
> >> +     case PORT_E:
> >> +             return HPD_PORT_E;
> >> +     default:
> >> +             MISSING_CASE(port);
> >> +             return HPD_NONE;
> >> +     }
> >> +}
> >> +
> >>  #define HPD_STORM_DETECT_PERIOD              1000
> >>  #define HPD_STORM_REENABLE_DELAY     (2 * 60 * 1000)
> >>
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> 
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* [PATCH 1/2] drm/i915: Simplify hpd pin to port
  2017-08-10 23:24         ` Pandiyan, Dhinakaran
@ 2017-08-11 18:26           ` Rodrigo Vivi
  2017-08-11 18:26             ` [PATCH 2/2] drm/i915: Introduce intel_hpd_pin function Rodrigo Vivi
  0 siblings, 1 reply; 13+ messages in thread
From: Rodrigo Vivi @ 2017-08-11 18:26 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi

We will soon need to make that pin port association per
platform, so let's try to simplify it beforehand.

Also we are moving the backwards port to pin
here as well so let's use a standardized way.

One extra possibility here would be to add a
MISSING_CASE along with PORT_NONE, but I don't want
to change this behaviour for now.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h      |  2 +-
 drivers/gpu/drm/i915/i915_irq.c      |  3 ++-
 drivers/gpu/drm/i915/intel_dp.c      |  2 +-
 drivers/gpu/drm/i915/intel_hotplug.c | 31 +++++++++++++++++--------------
 4 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 907603cba447..68ec47b378ac 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3194,7 +3194,7 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 void intel_hpd_init(struct drm_i915_private *dev_priv);
 void intel_hpd_init_work(struct drm_i915_private *dev_priv);
 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
-bool intel_hpd_pin_to_port(enum hpd_pin pin, enum port *port);
+enum port intel_hpd_pin_to_port(enum hpd_pin pin);
 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 196caa463edf..58262380dcb8 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1501,7 +1501,8 @@ static void intel_get_hpd_pins(u32 *pin_mask, u32 *long_mask,
 
 		*pin_mask |= BIT(i);
 
-		if (!intel_hpd_pin_to_port(i, &port))
+		port = intel_hpd_pin_to_port(i);
+		if (port == PORT_NONE)
 			continue;
 
 		if (long_pulse_detect(port, dig_hotplug_reg))
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 76c8a0bd17f9..eeede2037931 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4566,7 +4566,7 @@ static bool bxt_digital_port_connected(struct drm_i915_private *dev_priv,
 	enum port port;
 	u32 bit;
 
-	intel_hpd_pin_to_port(intel_encoder->hpd_pin, &port);
+	port = intel_hpd_pin_to_port(intel_encoder->hpd_pin);
 	switch (port) {
 	case PORT_A:
 		bit = BXT_DE_PORT_HP_DDIA;
diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index f1200272a699..d442d9f012d6 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -76,26 +76,28 @@
  * it will use i915_hotplug_work_func where this logic is handled.
  */
 
-bool intel_hpd_pin_to_port(enum hpd_pin pin, enum port *port)
+/**
+ * intel_hpd_port - return port hard associated with certain pin.
+ * @pin: the hpd pin to get associated port
+ *
+ * Return port that is associatade with @pin and PORT_NONE if no port is
+ * hard associated with that @pin.
+ */
+enum port intel_hpd_pin_to_port(enum hpd_pin pin)
 {
 	switch (pin) {
 	case HPD_PORT_A:
-		*port = PORT_A;
-		return true;
+		return PORT_A;
 	case HPD_PORT_B:
-		*port = PORT_B;
-		return true;
+		return PORT_B;
 	case HPD_PORT_C:
-		*port = PORT_C;
-		return true;
+		return PORT_C;
 	case HPD_PORT_D:
-		*port = PORT_D;
-		return true;
+		return PORT_D;
 	case HPD_PORT_E:
-		*port = PORT_E;
-		return true;
+		return PORT_E;
 	default:
-		return false;	/* no hpd */
+		return PORT_NONE; /* no port for this pin */
 	}
 }
 
@@ -389,8 +391,9 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
 		if (!(BIT(i) & pin_mask))
 			continue;
 
-		is_dig_port = intel_hpd_pin_to_port(i, &port) &&
-			      dev_priv->hotplug.irq_port[port];
+		port = intel_hpd_pin_to_port(i);
+		is_dig_port = port != PORT_NONE &&
+			dev_priv->hotplug.irq_port[port];
 
 		if (is_dig_port) {
 			bool long_hpd = long_mask & BIT(i);
-- 
2.13.2

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

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

* [PATCH 2/2] drm/i915: Introduce intel_hpd_pin function.
  2017-08-11 18:26           ` [PATCH 1/2] drm/i915: Simplify hpd pin to port Rodrigo Vivi
@ 2017-08-11 18:26             ` Rodrigo Vivi
  2017-08-11 18:55               ` Rodrigo Vivi
  0 siblings, 1 reply; 13+ messages in thread
From: Rodrigo Vivi @ 2017-08-11 18:26 UTC (permalink / raw)
  To: intel-gfx; +Cc: Dhinakaran Pandiyan, Rodrigo Vivi

The idea is to have an unique place to decide the pin-port
per platform.

So let's create this function now without any functional
change. Just adding together code from hdmi and dp together.

v2: Add missing pin for port A.
v3: Fix typo on subject.
    Avoid behaviour change so add WARN_ON and return
    if port A on HDMI. (by DK).

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h      |  1 +
 drivers/gpu/drm/i915/intel_dp.c      |  8 ++------
 drivers/gpu/drm/i915/intel_hdmi.c    | 18 ++----------------
 drivers/gpu/drm/i915/intel_hotplug.c | 26 ++++++++++++++++++++++++++
 4 files changed, 31 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 68ec47b378ac..ba59e64eb378 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3195,6 +3195,7 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
 void intel_hpd_init_work(struct drm_i915_private *dev_priv);
 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
 enum port intel_hpd_pin_to_port(enum hpd_pin pin);
+enum hpd_pin intel_hpd_pin(enum port port);
 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index eeede2037931..0e4b40663067 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -5904,26 +5904,22 @@ intel_dp_init_connector_port_info(struct intel_digital_port *intel_dig_port)
 	struct intel_encoder *encoder = &intel_dig_port->base;
 	struct intel_dp *intel_dp = &intel_dig_port->dp;
 
+	encoder->hpd_pin = intel_hpd_pin(intel_dig_port->port);
+
 	switch (intel_dig_port->port) {
 	case PORT_A:
-		encoder->hpd_pin = HPD_PORT_A;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_A;
 		break;
 	case PORT_B:
-		encoder->hpd_pin = HPD_PORT_B;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_B;
 		break;
 	case PORT_C:
-		encoder->hpd_pin = HPD_PORT_C;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_C;
 		break;
 	case PORT_D:
-		encoder->hpd_pin = HPD_PORT_D;
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
 		break;
 	case PORT_E:
-		encoder->hpd_pin = HPD_PORT_E;
-
 		/* FIXME: Check VBT for actual wiring of PORT E */
 		intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
 		break;
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 2ef1ee85129d..e30c27acb94f 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1920,23 +1920,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
 
 	intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
 
-	switch (port) {
-	case PORT_B:
-		intel_encoder->hpd_pin = HPD_PORT_B;
-		break;
-	case PORT_C:
-		intel_encoder->hpd_pin = HPD_PORT_C;
-		break;
-	case PORT_D:
-		intel_encoder->hpd_pin = HPD_PORT_D;
-		break;
-	case PORT_E:
-		intel_encoder->hpd_pin = HPD_PORT_E;
-		break;
-	default:
-		MISSING_CASE(port);
+	if (WARN_ON(port == PORT_A))
 		return;
-	}
+	intel_encoder->hpd_pin = intel_hpd_pin(port);
 
 	if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
 		intel_hdmi->write_infoframe = vlv_write_infoframe;
diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
index d442d9f012d6..875d5d218d5c 100644
--- a/drivers/gpu/drm/i915/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/intel_hotplug.c
@@ -101,6 +101,32 @@ enum port intel_hpd_pin_to_port(enum hpd_pin pin)
 	}
 }
 
+/**
+ * intel_hpd_pin - return pin hard associated with certain port.
+ * @port: the hpd port to get associated pin
+ *
+ * Return pin that is associatade with @port and HDP_NONE if no pin is
+ * hard associated with that @port.
+ */
+enum hpd_pin intel_hpd_pin(enum port port)
+{
+	switch (port) {
+	case PORT_A:
+		return HPD_PORT_A;
+	case PORT_B:
+		return HPD_PORT_B;
+	case PORT_C:
+		return HPD_PORT_C;
+	case PORT_D:
+		return HPD_PORT_D;
+	case PORT_E:
+		return HPD_PORT_E;
+	default:
+		MISSING_CASE(port);
+		return HPD_NONE;
+	}
+}
+
 #define HPD_STORM_DETECT_PERIOD		1000
 #define HPD_STORM_REENABLE_DELAY	(2 * 60 * 1000)
 
-- 
2.13.2

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

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

* ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915: Simplify hpd pin to port (rev4)
  2017-08-02 17:20 [PATCH 1/2] drm/i915: Simplify hpd pin to port Rodrigo Vivi
                   ` (3 preceding siblings ...)
  2017-08-10  5:22 ` [PATCH 1/2] drm/i915: Simplify hpd pin to port Pandiyan, Dhinakaran
@ 2017-08-11 18:49 ` Patchwork
  4 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2017-08-11 18:49 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/2] drm/i915: Simplify hpd pin to port (rev4)
URL   : https://patchwork.freedesktop.org/series/28261/
State : success

== Summary ==

Series 28261v4 Series without cover letter
https://patchwork.freedesktop.org/api/1.0/series/28261/revisions/4/mbox/

Test kms_flip:
        Subgroup basic-flip-vs-modeset:
                pass       -> SKIP       (fi-skl-x1585l) fdo#101781
Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-b:
                dmesg-warn -> PASS       (fi-byt-n2820) fdo#101705

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

fi-bdw-5557u     total:279  pass:268  dwarn:0   dfail:0   fail:0   skip:11  time:444s
fi-bdw-gvtdvm    total:279  pass:265  dwarn:0   dfail:0   fail:0   skip:14  time:430s
fi-blb-e6850     total:279  pass:224  dwarn:1   dfail:0   fail:0   skip:54  time:356s
fi-bsw-n3050     total:279  pass:243  dwarn:0   dfail:0   fail:0   skip:36  time:544s
fi-bxt-j4205     total:279  pass:260  dwarn:0   dfail:0   fail:0   skip:19  time:522s
fi-byt-j1900     total:279  pass:254  dwarn:1   dfail:0   fail:0   skip:24  time:520s
fi-byt-n2820     total:279  pass:251  dwarn:0   dfail:0   fail:0   skip:28  time:515s
fi-glk-2a        total:279  pass:260  dwarn:0   dfail:0   fail:0   skip:19  time:605s
fi-hsw-4770      total:279  pass:263  dwarn:0   dfail:0   fail:0   skip:16  time:442s
fi-hsw-4770r     total:279  pass:263  dwarn:0   dfail:0   fail:0   skip:16  time:414s
fi-ilk-650       total:279  pass:229  dwarn:0   dfail:0   fail:0   skip:50  time:417s
fi-ivb-3520m     total:279  pass:261  dwarn:0   dfail:0   fail:0   skip:18  time:507s
fi-ivb-3770      total:279  pass:261  dwarn:0   dfail:0   fail:0   skip:18  time:483s
fi-kbl-7500u     total:279  pass:261  dwarn:0   dfail:0   fail:0   skip:18  time:466s
fi-kbl-7560u     total:279  pass:269  dwarn:0   dfail:0   fail:0   skip:10  time:582s
fi-kbl-r         total:279  pass:261  dwarn:0   dfail:0   fail:0   skip:18  time:598s
fi-pnv-d510      total:279  pass:223  dwarn:1   dfail:0   fail:0   skip:55  time:522s
fi-skl-6260u     total:279  pass:269  dwarn:0   dfail:0   fail:0   skip:10  time:466s
fi-skl-6700k     total:279  pass:261  dwarn:0   dfail:0   fail:0   skip:18  time:471s
fi-skl-6770hq    total:279  pass:269  dwarn:0   dfail:0   fail:0   skip:10  time:472s
fi-skl-gvtdvm    total:279  pass:266  dwarn:0   dfail:0   fail:0   skip:13  time:437s
fi-skl-x1585l    total:279  pass:268  dwarn:0   dfail:0   fail:0   skip:11  time:479s
fi-snb-2520m     total:279  pass:251  dwarn:0   dfail:0   fail:0   skip:28  time:549s
fi-snb-2600      total:279  pass:249  dwarn:0   dfail:0   fail:1   skip:29  time:409s

354550367a457f96f0ac550bd70d71da373495f2 drm-tip: 2017y-08m-11d-16h-07m-01s UTC integration manifest
864dcd95517e drm/i915: Simplify hpd pin to port

== Logs ==

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

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

* Re: [PATCH 2/2] drm/i915: Introduce intel_hpd_pin function.
  2017-08-11 18:26             ` [PATCH 2/2] drm/i915: Introduce intel_hpd_pin function Rodrigo Vivi
@ 2017-08-11 18:55               ` Rodrigo Vivi
  0 siblings, 0 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2017-08-11 18:55 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-gfx, Dhinakaran Pandiyan

merged to dinq. thanks for the reviews and ideas

On Fri, Aug 11, 2017 at 11:26 AM, Rodrigo Vivi <rodrigo.vivi@intel.com> wrote:
> The idea is to have an unique place to decide the pin-port
> per platform.
>
> So let's create this function now without any functional
> change. Just adding together code from hdmi and dp together.
>
> v2: Add missing pin for port A.
> v3: Fix typo on subject.
>     Avoid behaviour change so add WARN_ON and return
>     if port A on HDMI. (by DK).
>
> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.h      |  1 +
>  drivers/gpu/drm/i915/intel_dp.c      |  8 ++------
>  drivers/gpu/drm/i915/intel_hdmi.c    | 18 ++----------------
>  drivers/gpu/drm/i915/intel_hotplug.c | 26 ++++++++++++++++++++++++++
>  4 files changed, 31 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 68ec47b378ac..ba59e64eb378 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -3195,6 +3195,7 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
>  void intel_hpd_init_work(struct drm_i915_private *dev_priv);
>  void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
>  enum port intel_hpd_pin_to_port(enum hpd_pin pin);
> +enum hpd_pin intel_hpd_pin(enum port port);
>  bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
>  void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index eeede2037931..0e4b40663067 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -5904,26 +5904,22 @@ intel_dp_init_connector_port_info(struct intel_digital_port *intel_dig_port)
>         struct intel_encoder *encoder = &intel_dig_port->base;
>         struct intel_dp *intel_dp = &intel_dig_port->dp;
>
> +       encoder->hpd_pin = intel_hpd_pin(intel_dig_port->port);
> +
>         switch (intel_dig_port->port) {
>         case PORT_A:
> -               encoder->hpd_pin = HPD_PORT_A;
>                 intel_dp->aux_power_domain = POWER_DOMAIN_AUX_A;
>                 break;
>         case PORT_B:
> -               encoder->hpd_pin = HPD_PORT_B;
>                 intel_dp->aux_power_domain = POWER_DOMAIN_AUX_B;
>                 break;
>         case PORT_C:
> -               encoder->hpd_pin = HPD_PORT_C;
>                 intel_dp->aux_power_domain = POWER_DOMAIN_AUX_C;
>                 break;
>         case PORT_D:
> -               encoder->hpd_pin = HPD_PORT_D;
>                 intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
>                 break;
>         case PORT_E:
> -               encoder->hpd_pin = HPD_PORT_E;
> -
>                 /* FIXME: Check VBT for actual wiring of PORT E */
>                 intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
>                 break;
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index 2ef1ee85129d..e30c27acb94f 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -1920,23 +1920,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>
>         intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
>
> -       switch (port) {
> -       case PORT_B:
> -               intel_encoder->hpd_pin = HPD_PORT_B;
> -               break;
> -       case PORT_C:
> -               intel_encoder->hpd_pin = HPD_PORT_C;
> -               break;
> -       case PORT_D:
> -               intel_encoder->hpd_pin = HPD_PORT_D;
> -               break;
> -       case PORT_E:
> -               intel_encoder->hpd_pin = HPD_PORT_E;
> -               break;
> -       default:
> -               MISSING_CASE(port);
> +       if (WARN_ON(port == PORT_A))
>                 return;
> -       }
> +       intel_encoder->hpd_pin = intel_hpd_pin(port);
>
>         if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
>                 intel_hdmi->write_infoframe = vlv_write_infoframe;
> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
> index d442d9f012d6..875d5d218d5c 100644
> --- a/drivers/gpu/drm/i915/intel_hotplug.c
> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> @@ -101,6 +101,32 @@ enum port intel_hpd_pin_to_port(enum hpd_pin pin)
>         }
>  }
>
> +/**
> + * intel_hpd_pin - return pin hard associated with certain port.
> + * @port: the hpd port to get associated pin
> + *
> + * Return pin that is associatade with @port and HDP_NONE if no pin is
> + * hard associated with that @port.
> + */
> +enum hpd_pin intel_hpd_pin(enum port port)
> +{
> +       switch (port) {
> +       case PORT_A:
> +               return HPD_PORT_A;
> +       case PORT_B:
> +               return HPD_PORT_B;
> +       case PORT_C:
> +               return HPD_PORT_C;
> +       case PORT_D:
> +               return HPD_PORT_D;
> +       case PORT_E:
> +               return HPD_PORT_E;
> +       default:
> +               MISSING_CASE(port);
> +               return HPD_NONE;
> +       }
> +}
> +
>  #define HPD_STORM_DETECT_PERIOD                1000
>  #define HPD_STORM_REENABLE_DELAY       (2 * 60 * 1000)
>
> --
> 2.13.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

end of thread, other threads:[~2017-08-11 18:55 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-02 17:20 [PATCH 1/2] drm/i915: Simplify hpd pin to port Rodrigo Vivi
2017-08-02 17:21 ` [PATCH 2/2] drm/i915: Introduce intel_hdp_pin Rodrigo Vivi
2017-08-02 19:26   ` [PATCH] " Rodrigo Vivi
2017-08-10  4:44     ` Pandiyan, Dhinakaran
2017-08-10 21:23       ` Rodrigo Vivi
2017-08-10 23:24         ` Pandiyan, Dhinakaran
2017-08-11 18:26           ` [PATCH 1/2] drm/i915: Simplify hpd pin to port Rodrigo Vivi
2017-08-11 18:26             ` [PATCH 2/2] drm/i915: Introduce intel_hpd_pin function Rodrigo Vivi
2017-08-11 18:55               ` Rodrigo Vivi
2017-08-02 17:45 ` ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915: Simplify hpd pin to port Patchwork
2017-08-02 19:50 ` ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915: Simplify hpd pin to port (rev2) Patchwork
2017-08-10  5:22 ` [PATCH 1/2] drm/i915: Simplify hpd pin to port Pandiyan, Dhinakaran
2017-08-11 18:49 ` ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915: Simplify hpd pin to port (rev4) 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.