===================================================================
@@ -343,9 +343,16 @@ struct edid *drm_get_edid(struct drm_con
struct i2c_adapter *adapter)
{
struct edid *edid = NULL;
+ unsigned int tries;
- if (drm_probe_ddc(adapter))
- edid = (struct edid *)drm_do_get_edid(connector, adapter);
+ for (tries = 0; tries < 20; tries++) {
+ if (drm_probe_ddc(adapter))
+ edid = (struct edid *)drm_do_get_edid(connector, adapter);
+ if (edid)
+ break;
+ }
+ if (tries > 0 && tries < 20)
+ printk(KERN_INFO "drm_get_edid(): Succeed after %u tries\n", tries);
connector->display_info.raw_edid = (char *)edid;