On Mon, Aug 31, 2015 at 02:35:32PM +0530, Sonika Jindal wrote:
> From: Durgadoss R <durgados...@intel.com>
> 
> Currently, HDMI hotplug with eDP as local panel is failing
> because the HDMI hpd is detected as a long hpd for eDP; and is
> thus rightfully ignored. But, it should really be handled as
> an interrupt on port B for HDMI (due to BXT A1 platform having
> HPD pins A and B swapped). This patch sets the irq_port[PORT_A]
> to NULL in case eDP is on port A so that irq handler does not
> treat it as a 'dig_port' interrupt.
> 
> v2 (Sonika): Moving the setting of irq_port for BXT WA outside so that this
> can be set for both hdmi or dp ports. For HDMI this is required
> because we get interrupts for portB on the hpd line of portA for
> BXT A0/A1.
> This issue occurred because hpd on edp was not disabled
> which was done as part of "drm/i915: Dont enable hpd for eDP" from
> the series:
> http://lists.freedesktop.org/archives/intel-gfx/2015-August/073266.html
> 
> This patch can be squashed to :
> commit cf1d58833f07afbb4534b15caa3fd48baa313b2c
> Author: Sonika Jindal <sonika.jin...@intel.com>
> Date:   Mon Aug 10 10:35:36 2015 +0530
> 
>     drm/i915/bxt: WA for swapped HPD pins in A stepping
> 
> Signed-off-by: Durgadoss R <durgados...@intel.com>
> Signed-off-by: Sonika Jindal <sonika.jin...@intel.com>

Queued for -next, thanks for the patch.
-Daniel

> ---
>  drivers/gpu/drm/i915/intel_ddi.c |   21 ++++++++++++---------
>  1 file changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
> b/drivers/gpu/drm/i915/intel_ddi.c
> index 56d778f..bba0cb6 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -3242,15 +3242,7 @@ void intel_ddi_init(struct drm_device *dev, enum port 
> port)
>                       goto err;
>  
>               intel_dig_port->hpd_pulse = intel_dp_hpd_pulse;
> -             /*
> -              * On BXT A0/A1, sw needs to activate DDIA HPD logic and
> -              * interrupts to check the external panel connection.
> -              */
> -             if (IS_BROXTON(dev_priv) && (INTEL_REVID(dev) < BXT_REVID_B0)
> -                                      && port == PORT_B)
> -                     dev_priv->hotplug.irq_port[PORT_A] = intel_dig_port;
> -             else
> -                     dev_priv->hotplug.irq_port[port] = intel_dig_port;
> +             dev_priv->hotplug.irq_port[port] = intel_dig_port;
>       }
>  
>       /* In theory we don't need the encoder->type check, but leave it just in
> @@ -3259,6 +3251,17 @@ void intel_ddi_init(struct drm_device *dev, enum port 
> port)
>               if (!intel_ddi_init_hdmi_connector(intel_dig_port))
>                       goto err;
>       }
> +     /*
> +      * On BXT A0/A1, sw needs to activate DDIA HPD logic and
> +      * interrupts to check the external panel connection.
> +      */
> +     if (IS_BROXTON(dev_priv) && (INTEL_REVID(dev) < BXT_REVID_B0)) {
> +             if (port == PORT_B) {
> +                     dev_priv->hotplug.irq_port[PORT_A] = intel_dig_port;
> +                     intel_dig_port->hpd_pulse = intel_dp_hpd_pulse;
> +             } else if (intel_encoder->type == INTEL_OUTPUT_EDP)
> +                     dev_priv->hotplug.irq_port[port] = NULL;
> +     }
>  
>       return;
>  
> -- 
> 1.7.10.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to