aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c4
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c5
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