*/
 
        ret = intel_ddc_get_modes(connector, intel_encoder->ddc_bus);
-       if (ret)
+       if (ret) {
+               if ((IS_eDP(intel_encoder) || IS_PCH_eDP(dp_priv)) &&
+                   !dev_priv->panel_fixed_mode) {
+                       struct drm_display_mode *newmode;
+                       list_for_each_entry(newmode, &connector->probed_modes,
+                                           head) {
+                               if (newmode->type & DRM_MODE_TYPE_PREFERRED) {
+                                       dev_priv->panel_fixed_mode =
+                                               drm_mode_duplicate(dev, newmode);
+                                       break;
+                               }
+                       }
+               }
+
                return ret;
+       }
 
        /* if eDP has no EDID, try to use fixed panel mode from VBT */
        if (IS_eDP(intel_encoder) || IS_PCH_eDP(dp_priv)) {