diff options
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index f7410cffa8c9..2b99ab23dc8a 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
| @@ -1374,8 +1374,22 @@ static int intel_dp_get_modes(struct drm_connector *connector) | |||
| 1374 | */ | 1374 | */ |
| 1375 | 1375 | ||
| 1376 | ret = intel_ddc_get_modes(connector, intel_encoder->ddc_bus); | 1376 | ret = intel_ddc_get_modes(connector, intel_encoder->ddc_bus); |
| 1377 | if (ret) | 1377 | if (ret) { |
| 1378 | if ((IS_eDP(intel_encoder) || IS_PCH_eDP(dp_priv)) && | ||
| 1379 | !dev_priv->panel_fixed_mode) { | ||
| 1380 | struct drm_display_mode *newmode; | ||
| 1381 | list_for_each_entry(newmode, &connector->probed_modes, | ||
| 1382 | head) { | ||
| 1383 | if (newmode->type & DRM_MODE_TYPE_PREFERRED) { | ||
| 1384 | dev_priv->panel_fixed_mode = | ||
| 1385 | drm_mode_duplicate(dev, newmode); | ||
| 1386 | break; | ||
| 1387 | } | ||
| 1388 | } | ||
| 1389 | } | ||
| 1390 | |||
| 1378 | return ret; | 1391 | return ret; |
| 1392 | } | ||
| 1379 | 1393 | ||
| 1380 | /* if eDP has no EDID, try to use fixed panel mode from VBT */ | 1394 | /* if eDP has no EDID, try to use fixed panel mode from VBT */ |
| 1381 | if (IS_eDP(intel_encoder) || IS_PCH_eDP(dp_priv)) { | 1395 | if (IS_eDP(intel_encoder) || IS_PCH_eDP(dp_priv)) { |
