diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 13 |
2 files changed, 11 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index b7cb4aadd059..6960849522f8 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
| @@ -611,6 +611,8 @@ typedef struct drm_i915_private { | |||
| 611 | /* Reclocking support */ | 611 | /* Reclocking support */ |
| 612 | bool render_reclock_avail; | 612 | bool render_reclock_avail; |
| 613 | bool lvds_downclock_avail; | 613 | bool lvds_downclock_avail; |
| 614 | /* indicate whether the LVDS EDID is OK */ | ||
| 615 | bool lvds_edid_good; | ||
| 614 | /* indicates the reduced downclock for LVDS*/ | 616 | /* indicates the reduced downclock for LVDS*/ |
| 615 | int lvds_downclock; | 617 | int lvds_downclock; |
| 616 | struct work_struct idle_work; | 618 | struct work_struct idle_work; |
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 8238b408644e..527cfa2626bf 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
| @@ -638,10 +638,12 @@ static int intel_lvds_get_modes(struct drm_connector *connector) | |||
| 638 | struct drm_i915_private *dev_priv = dev->dev_private; | 638 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 639 | int ret = 0; | 639 | int ret = 0; |
| 640 | 640 | ||
| 641 | ret = intel_ddc_get_modes(intel_encoder); | 641 | if (dev_priv->lvds_edid_good) { |
| 642 | ret = intel_ddc_get_modes(intel_encoder); | ||
| 642 | 643 | ||
| 643 | if (ret) | 644 | if (ret) |
| 644 | return ret; | 645 | return ret; |
| 646 | } | ||
| 645 | 647 | ||
| 646 | /* Didn't get an EDID, so | 648 | /* Didn't get an EDID, so |
| 647 | * Set wide sync ranges so we get all modes | 649 | * Set wide sync ranges so we get all modes |
| @@ -1062,7 +1064,10 @@ void intel_lvds_init(struct drm_device *dev) | |||
| 1062 | * Attempt to get the fixed panel mode from DDC. Assume that the | 1064 | * Attempt to get the fixed panel mode from DDC. Assume that the |
| 1063 | * preferred mode is the right one. | 1065 | * preferred mode is the right one. |
| 1064 | */ | 1066 | */ |
| 1065 | intel_ddc_get_modes(intel_encoder); | 1067 | dev_priv->lvds_edid_good = true; |
| 1068 | |||
| 1069 | if (!intel_ddc_get_modes(intel_encoder)) | ||
| 1070 | dev_priv->lvds_edid_good = false; | ||
| 1066 | 1071 | ||
| 1067 | list_for_each_entry(scan, &connector->probed_modes, head) { | 1072 | list_for_each_entry(scan, &connector->probed_modes, head) { |
| 1068 | mutex_lock(&dev->mode_config.mutex); | 1073 | mutex_lock(&dev->mode_config.mutex); |
