diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 5 |
3 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 435082e40736..1f9e4503b072 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -89,6 +89,8 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state) | |||
89 | pci_set_power_state(dev->pdev, PCI_D3hot); | 89 | pci_set_power_state(dev->pdev, PCI_D3hot); |
90 | } | 90 | } |
91 | 91 | ||
92 | dev_priv->suspended = 1; | ||
93 | |||
92 | return 0; | 94 | return 0; |
93 | } | 95 | } |
94 | 96 | ||
@@ -124,6 +126,8 @@ static int i915_resume(struct drm_device *dev) | |||
124 | drm_helper_resume_force_mode(dev); | 126 | drm_helper_resume_force_mode(dev); |
125 | } | 127 | } |
126 | 128 | ||
129 | dev_priv->suspended = 0; | ||
130 | |||
127 | return ret; | 131 | return ret; |
128 | } | 132 | } |
129 | 133 | ||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index bcc1be281de6..d814b6957936 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -253,6 +253,7 @@ typedef struct drm_i915_private { | |||
253 | struct workqueue_struct *wq; | 253 | struct workqueue_struct *wq; |
254 | 254 | ||
255 | /* Register state */ | 255 | /* Register state */ |
256 | bool suspended; | ||
256 | u8 saveLBB; | 257 | u8 saveLBB; |
257 | u32 saveDSPACNTR; | 258 | u32 saveDSPACNTR; |
258 | u32 saveDSPBCNTR; | 259 | u32 saveDSPBCNTR; |
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 4c55596649f9..c1cc5566e20b 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
@@ -651,8 +651,11 @@ static int intel_lid_notify(struct notifier_block *nb, unsigned long val, | |||
651 | container_of(nb, struct drm_i915_private, lid_notifier); | 651 | container_of(nb, struct drm_i915_private, lid_notifier); |
652 | struct drm_device *dev = dev_priv->dev; | 652 | struct drm_device *dev = dev_priv->dev; |
653 | 653 | ||
654 | if (acpi_lid_open()) | 654 | if (acpi_lid_open() && !dev_priv->suspended) { |
655 | mutex_lock(&dev->mode_config.mutex); | ||
655 | drm_helper_resume_force_mode(dev); | 656 | drm_helper_resume_force_mode(dev); |
657 | mutex_unlock(&dev->mode_config.mutex); | ||
658 | } | ||
656 | 659 | ||
657 | drm_sysfs_hotplug_event(dev_priv->dev); | 660 | drm_sysfs_hotplug_event(dev_priv->dev); |
658 | 661 | ||