On Mon, 8 Oct 2018 08:56:20 -0700 Guang Bai <guang.bai@xxxxxxxxx> wrote: > On Mon, 8 Oct 2018 22:35:34 +0800 > Chris Chiu <chiu@xxxxxxxxxxxx> wrote: > > > Thanks! I have no problem with this patch. > > There are Fi.CI.BAT failures with the v2 (only with formatting fix > added) while the previous patch had passing results. > Now trying to identify why the failures happened with trybot > Thanks, > Guang The tribot run my patch twice and passes the tests without any error however I'm recommended to chase down root causes of Patchwork Fi.CI.BAT test errors still - WIP on that. Thanks, Guang > > > > > On Thu, Oct 4, 2018 at 2:08 AM Guang Bai <guang.bai@xxxxxxxxx> > > wrote: > > > On some platforms, slowly unplugging (wiggling) the HDMI cable > > > makes the kernel to believe the HDMI display still connected. > > > This is because the HDMI DDC lines are disconnected sometimes > > > later after the hot-plug interrupt triggered. Use the hot plug > > > live states to honor HDMI hot plug status in addtion to access > > > the DDC channels. > > > > > > v2: Fix the formatting issue > > > > > > Cc: Jani Nikula <jani.nikula@xxxxxxxxx> > > > Cc: Chris Chiu <chiu@xxxxxxxxxxxx> > > > Signed-off-by: Guang Bai <guang.bai@xxxxxxxxx> > > > --- > > > drivers/gpu/drm/i915/intel_hotplug.c | 32 > > > +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), > > > 3 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > > > b/drivers/gpu/drm/i915/intel_hotplug.c > > > index 648a13c..98ab1ab 100644 > > > --- a/drivers/gpu/drm/i915/intel_hotplug.c > > > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > > > @@ -246,17 +246,43 @@ static void > > > intel_hpd_irq_storm_reenable_work(struct work_struct *work) > > > intel_runtime_pm_put(dev_priv); > > > } > > > > > > +#define MAX_SHORT_PULSE_MS 100 > > > +#define PORT_CHECK_LOOP_COUNT 3 > > > + > > > bool intel_encoder_hotplug(struct intel_encoder *encoder, > > > struct intel_connector *connector) > > > { > > > struct drm_device *dev = connector->base.dev; > > > - enum drm_connector_status old_status; > > > + enum drm_connector_status old_status, new_status; > > > + enum hpd_pin pin = encoder->hpd_pin; > > > + struct drm_i915_private *dev_priv = > > > to_i915(encoder->base.dev); > > > + u32 count = 0; > > > > > > WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); > > > old_status = connector->base.status; > > > > > > - connector->base.status = > > > - drm_helper_probe_detect(&connector->base, NULL, > > > false); > > > + /* > > > + * Set HDMI connection status based on hot-plug live > > > states and > > > + * display probe results. > > > + */ > > > + if ((encoder->type == INTEL_OUTPUT_HDMI || > > > + encoder->type == INTEL_OUTPUT_DDI) && > > > + dev_priv->hotplug.stats[pin].state == HPD_ENABLED) { > > > + do { > > > + new_status = > > > connector_status_disconnected; > > > + msleep(MAX_SHORT_PULSE_MS); > > > + > > > + if (intel_digital_port_connected(encoder)) > > > + new_status = > > > drm_helper_probe_detect(&connector->base, > > > + > > > NULL, false); > > > + if (new_status == > > > connector_status_connected) > > > + break; > > > + } while (++count <= PORT_CHECK_LOOP_COUNT); > > > + connector->base.status = new_status; > > > + } else { > > > + connector->base.status = > > > + drm_helper_probe_detect(&connector->base, > > > NULL, false); > > > + } > > > > > > if (old_status == connector->base.status) > > > return false; > > > -- > > > 2.7.4 > > > > > > > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx