<div dir="ltr">Nak: I don't believe we need this... Actually I believe we need the opposite... we need to enable HPD on port A for eDP errors handling...<div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Sep 4, 2015 at 6:38 AM Sonika Jindal <<a href="mailto:sonika.jindal@intel.com">sonika.jindal@intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Durgadoss R <<a href="mailto:durgadoss.r@intel.com" target="_blank">durgadoss.r@intel.com</a>><br>
<br>
Currently, HDMI hotplug with eDP as local panel is failing<br>
because the HDMI hpd is detected as a long hpd for eDP; and is<br>
thus rightfully ignored. But, it should really be handled as<br>
an interrupt on port B for HDMI (due to BXT A1 platform having<br>
HPD pins A and B swapped). This patch sets the irq_port[PORT_A]<br>
to NULL in case eDP is on port A so that irq handler does not<br>
treat it as a 'dig_port' interrupt.<br>
<br>
Signed-off-by: Durgadoss R <<a href="mailto:durgadoss.r@intel.com" target="_blank">durgadoss.r@intel.com</a>><br>
---<br>
 drivers/gpu/drm/i915/intel_ddi.c |   15 ++++++++++-----<br>
 1 file changed, 10 insertions(+), 5 deletions(-)<br>
<br>
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c<br>
index 4823184..fec51df 100644<br>
--- a/drivers/gpu/drm/i915/intel_ddi.c<br>
+++ b/drivers/gpu/drm/i915/intel_ddi.c<br>
@@ -3218,15 +3218,20 @@ void intel_ddi_init(struct drm_device *dev, enum port port)<br>
                        goto err;<br>
<br>
                intel_dig_port->hpd_pulse = intel_dp_hpd_pulse;<br>
+               dev_priv->hotplug.irq_port[port] = intel_dig_port;<br>
                /*<br>
                 * On BXT A0/A1, sw needs to activate DDIA HPD logic and<br>
                 * interrupts to check the external panel connection.<br>
+                * If eDP is connected on port A, set irq_port to NULL<br>
+                * so that we do not assume an interrupt here as a<br>
+                * 'dig_port' interrupt.<br>
                 */<br>
-               if (IS_BROXTON(dev_priv) && (INTEL_REVID(dev) < BXT_REVID_B0)<br>
-                                        && port == PORT_B)<br>
-                       dev_priv->hotplug.irq_port[PORT_A] = intel_dig_port;<br>
-               else<br>
-                       dev_priv->hotplug.irq_port[port] = intel_dig_port;<br>
+               if (IS_BROXTON(dev) && (INTEL_REVID(dev) < BXT_REVID_B0)) {<br>
+                       if (port == PORT_B)<br>
+                               dev_priv->hotplug.irq_port[PORT_A] = intel_dig_port;<br>
+                       else if (intel_encoder->type == INTEL_OUTPUT_EDP)<br>
+                               dev_priv->hotplug.irq_port[port] = NULL;<br>
+               }<br>
        }<br>
<br>
        /* In theory we don't need the encoder->type check, but leave it just in<br>
--<br>
1.7.10.4<br>
<br>
_______________________________________________<br>
Intel-gfx mailing list<br>
<a href="mailto:Intel-gfx@lists.freedesktop.org" target="_blank">Intel-gfx@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/intel-gfx" rel="noreferrer" target="_blank">http://lists.freedesktop.org/mailman/listinfo/intel-gfx</a><br>
</blockquote></div>