[Intel-gfx] [PATCH] drm/i915: fix short vs. long hpd detection

Jani Nikula jani.nikula at intel.com
Thu Oct 16 14:09:49 CEST 2014


On Wed, 15 Oct 2014, Ville Syrjälä <ville.syrjala at linux.intel.com> wrote:
> On Wed, Oct 15, 2014 at 10:51:54AM +0300, Jani Nikula wrote:
>> On Wed, 15 Oct 2014, Ville Syrjälä <ville.syrjala at linux.intel.com> wrote:
>> > On Thu, Oct 02, 2014 at 10:26:58AM +0200, Daniel Vetter wrote:
>> >> On Thu, Oct 02, 2014 at 11:16:32AM +0300, Jani Nikula wrote:
>> >> > Fix short vs. long hpd detection for non-g4x and non-pch split
>> >> > platforms.
>> >> > 
>> >> > Broken since introduction in
>> >> > commit 13cf550448b58abf8f44f5d6a560f2d20871c965
>> >> > Author: Dave Airlie <airlied at redhat.com>
>> >> > Date:   Wed Jun 18 11:29:35 2014 +1000
>> >> > 
>> >> >     drm/i915: rework digital port IRQ handling (v2)
>> >> > 
>> >> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83175
>> >> > Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>> >> > ---
>> >> >  drivers/gpu/drm/i915/i915_irq.c | 14 +++++++-------
>> >> >  1 file changed, 7 insertions(+), 7 deletions(-)
>> >> > 
>> >> > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
>> >> > index 72cb9397ecc5..3ff6f1bb594a 100644
>> >> > --- a/drivers/gpu/drm/i915/i915_irq.c
>> >> > +++ b/drivers/gpu/drm/i915/i915_irq.c
>> >> > @@ -1708,7 +1708,7 @@ static irqreturn_t gen8_gt_irq_handler(struct drm_device *dev,
>> >> >  #define HPD_STORM_DETECT_PERIOD 1000
>> >> >  #define HPD_STORM_THRESHOLD 5
>> >> >  
>> >> > -static int ilk_port_to_hotplug_shift(enum port port)
>> >> > +static int pch_port_to_hotplug_shift(enum port port)
>> >> >  {
>> >> >  	switch (port) {
>> >> >  	case PORT_A:
>> >> > @@ -1724,7 +1724,7 @@ static int ilk_port_to_hotplug_shift(enum port port)
>> >> >  	}
>> >> >  }
>> >> >  
>> >> > -static int g4x_port_to_hotplug_shift(enum port port)
>> >> > +static int i915_port_to_hotplug_shift(enum port port)
>> >> >  {
>> >> >  	switch (port) {
>> >> >  	case PORT_A:
>> >> > @@ -1782,12 +1782,12 @@ static inline void intel_hpd_irq_handler(struct drm_device *dev,
>> >> >  		if (port && dev_priv->hpd_irq_port[port]) {
>> >> >  			bool long_hpd;
>> >> >  
>> >> > -			if (IS_G4X(dev)) {
>> >> > -				dig_shift = g4x_port_to_hotplug_shift(port);
>> >> > -				long_hpd = (hotplug_trigger >> dig_shift) & PORTB_HOTPLUG_LONG_DETECT;
>> >> > -			} else {
>> >> > -				dig_shift = ilk_port_to_hotplug_shift(port);
>> >> > +			if (HAS_PCH_SPLIT(dev)) {
>> >> > +				dig_shift = pch_port_to_hotplug_shift(port);
>> >> >  				long_hpd = (dig_hotplug_reg >> dig_shift) & PORTB_HOTPLUG_LONG_DETECT;
>> >> 
>> >> Using the new HAS_GMCH_DISPLAY will probably survive longer (i.e. skl).
>> >
>> > Did we have a concenses on this? I want hpd on my BSW.
>> 
>> Sorry, we agreed on IRC that the ifs were okay as-is, but we're still
>> missing review.
>
> Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Although after checking the spec it does look like HAS_GMCH_DISPLAY
> might be a bit more future proof.

Pushed to drm-intel-next-fixes, thanks for the review.

BR,
Jani.


-- 
Jani Nikula, Intel Open Source Technology Center



More information about the Intel-gfx mailing list