On Thu, Mar 17, 2016 at 01:29:25PM +0530, Shashank Sharma wrote: > This patch restricts usage of live status check for HDMI detection. > While testing certain (monitor + cable) combinations with various > intel platforms, it seems that live status register is not reliable > on some older devices. So limit the live_status check from VLV onwards. > > This fixes a regression introduced in: > commit: 237ed86 "drm/i915: Check live status" > Author: Sonika Jindal <sonika.jindal@xxxxxxxxx> > Date: Tue Sep 15 09:44:20 2015 +0530 > > Signed-off-by: Shashank Sharma <shashank.sharma@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_hdmi.c | 22 ++++++++++++++-------- > 1 file changed, 14 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c > index e2dab48..d24d18a 100644 > --- a/drivers/gpu/drm/i915/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > @@ -1397,7 +1397,8 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) > enum drm_connector_status status; > struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); > struct drm_i915_private *dev_priv = to_i915(connector->dev); > - bool live_status = false; > + struct drm_device *dev = connector->dev; > + bool live_status = true; > unsigned int try; > > DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", > @@ -1405,16 +1406,21 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) > > intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); > > - for (try = 0; !live_status && try < 9; try++) { > - if (try) > - msleep(10); > - live_status = intel_digital_port_connected(dev_priv, > + /* > + * Live status check for HDMI detection is not very > + * reliable on older platforms. So insist the live > + * status check for EDID read from VLV onwards. > + */ > + if (INTEL_INFO(dev)->gen >= 7 && !IS_IVYBRIDGE(dev)) { > + for (try = 0; !live_status && try < 9; try++) { > + if (try) > + msleep(10); > + live_status = intel_digital_port_connected(dev_priv, > hdmi_to_dig_port(intel_hdmi)); > + } > + DRM_DEBUG_KMS("Live status %s\n", live_status ? "up" : "down"); > } > > - if (!live_status) > - DRM_DEBUG_KMS("Live status not up!"); > - As I said before, I think this whole thing could be solved with a simple two-liner here: + if (...) + live_status = true; > intel_hdmi_unset_edid(connector); > > if (intel_hdmi_set_edid(connector, live_status)) { > -- > 1.9.1 -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx