<p dir="ltr"><br>
El abr. 1, 2016 11:47 AM, "Ville Syrjälä" <<a href="mailto:ville.syrjala@linux.intel.com">ville.syrjala@linux.intel.com</a>> escribió:<br>
><br>
> On Thu, Mar 31, 2016 at 05:55:03PM -0300, Ezequiel Garcia wrote:<br>
> > Currently, our implementation of drm_connector_funcs.detect is<br>
> > based on getting a valid EDID.<br>
> ><br>
> > This requirement makes the driver fail to detect connected<br>
> > connectors in case of EDID corruption, which prevents from falling<br>
> > back to modes provided by builtin or user-provided EDIDs.<br>
><br>
> So why are you getting corrupted EDIDs?<br>
></p>
<p dir="ltr">Does it matter?</p>
<p dir="ltr">> ><br>
> > Let's fix this by improving the detection, with a DDC probe,<br>
> > if the current EDID-based detection failed.<br>
> ><br>
> > Note that a better way of dealing with this could calling<br>
> > drm_probe_ddc in drm_connector_funcs.detect, and do the<br>
> > EDID full reading and parsing in drm_connector_helper_funcs.get_modes,<br>
> > when it's actually needed.<br>
> ><br>
> > However, this would be more invasive and thus more error-prone.<br>
> > The current commit is an attempt to get some uninvasive fix,<br>
> > and allow for easier backporting.<br>
> ><br>
> > Signed-off-by: Ezequiel Garcia <<a href="mailto:ezequiel@vanguardiasur.com.ar">ezequiel@vanguardiasur.com.ar</a>><br>
> > ---<br>
> >  drivers/gpu/drm/i915/intel_hdmi.c | 14 ++++++++++++++<br>
> >  1 file changed, 14 insertions(+)<br>
> ><br>
> > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c<br>
> > index a0d8daed2470..c079206e6681 100644<br>
> > --- a/drivers/gpu/drm/i915/intel_hdmi.c<br>
> > +++ b/drivers/gpu/drm/i915/intel_hdmi.c<br>
> > @@ -1428,6 +1428,20 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)<br>
> >       } else<br>
> >               status = connector_status_disconnected;<br>
> ><br>
> > +     /*<br>
> > +      * The above call to intel_hdmi_set_edid() checked for a valid EDID.<br>
> > +      * However, the EDID can get corrupted for several reasons, resulting<br>
> > +      * in a disconnected status despite the connector being connected.<br>
> > +      * Hence, let's try one more time, by only probing the DDC.<br>
> > +      *<br>
> > +      * This allows the DRM core to fallback to builtin or user-provided<br>
> > +      * EDID firmware, e.g. in drm_helper_probe_single_connector_modes.<br>
> > +      */<br>
> > +     if (status == connector_status_disconnected)<br>
> > +             if (drm_probe_ddc(intel_gmbus_get_adapter(dev_priv,<br>
> > +                                             intel_hdmi->ddc_bus)))<br>
> > +                     status = connector_status_connected;<br>
> > +<br>
> >       intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS);<br>
> ><br>
> >       return status;<br>
> > --<br>
> > 2.7.0<br>
> ><br>
> > _______________________________________________<br>
> > dri-devel mailing list<br>
> > <a href="mailto:dri-devel@lists.freedesktop.org">dri-devel@lists.freedesktop.org</a><br>
> > <a href="https://lists.freedesktop.org/mailman/listinfo/dri-devel">https://lists.freedesktop.org/mailman/listinfo/dri-devel</a><br>
><br>
> --<br>
> Ville Syrjälä<br>
> Intel OTC<br>
</p>