On Thu, 27 Nov 2014, Dave Airlie <airlied@xxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> commit 7a7f84ccb82e542c845c43f604665ccea1247866 upstream BR, Jani. > Turning vdd on/off can generate a long hpd pulse on eDP ports. In order > to handle hpd we would need to turn on vdd to perform aux transfers. > This would lead to an endless cycle of > "vdd off -> long hpd -> vdd on -> detect -> vdd off -> ..." > > So ignore long hpd pulses on eDP ports. eDP panels should be physically > tied to the machine anyway so they should not actually disappear and > thus don't need long hpd handling. Short hpds are still needed for link > re-train and whatnot so we can't just turn off the hpd interrupt > entirely for eDP ports. Perhaps we could turn it off whenever the panel > is disabled, but just ignoring the long hpd seems sufficient. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Reviewed-by: Dave Airlie <airlied@xxxxxxxxxx> > Reviewed-by: Todd Previte <tprevite@xxxxxxxxx> > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dp.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 4b3c096..1b7375e 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -4084,6 +4084,18 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd) > if (intel_dig_port->base.type != INTEL_OUTPUT_EDP) > intel_dig_port->base.type = INTEL_OUTPUT_DISPLAYPORT; > > + if (long_hpd && intel_dig_port->base.type == INTEL_OUTPUT_EDP) { > + /* > + * vdd off can generate a long pulse on eDP which > + * would require vdd on to handle it, and thus we > + * would end up in an endless cycle of > + * "vdd off -> long hpd -> vdd on -> detect -> vdd off -> ..." > + */ > + DRM_DEBUG_KMS("ignoring long hpd on eDP port %c\n", > + port_name(intel_dig_port->port)); > + return false; > + } > + > DRM_DEBUG_KMS("got hpd irq on port %d - %s\n", intel_dig_port->port, > long_hpd ? "long" : "short"); > > -- > 1.9.3 > -- Jani Nikula, Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html