diff options
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_opregion.c | 5 |
4 files changed, 8 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index a000cf028826..272614389c02 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
@@ -1232,7 +1232,7 @@ int i915_driver_unload(struct drm_device *dev) | |||
1232 | if (dev_priv->regs != NULL) | 1232 | if (dev_priv->regs != NULL) |
1233 | iounmap(dev_priv->regs); | 1233 | iounmap(dev_priv->regs); |
1234 | 1234 | ||
1235 | intel_opregion_free(dev); | 1235 | intel_opregion_free(dev, 0); |
1236 | 1236 | ||
1237 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { | 1237 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { |
1238 | intel_modeset_cleanup(dev); | 1238 | intel_modeset_cleanup(dev); |
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 6503e2210f65..98560e1e899a 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -77,7 +77,7 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state) | |||
77 | drm_irq_uninstall(dev); | 77 | drm_irq_uninstall(dev); |
78 | } | 78 | } |
79 | 79 | ||
80 | intel_opregion_free(dev); | 80 | intel_opregion_free(dev, 1); |
81 | 81 | ||
82 | if (state.event == PM_EVENT_SUSPEND) { | 82 | if (state.event == PM_EVENT_SUSPEND) { |
83 | /* Shut down the device */ | 83 | /* Shut down the device */ |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 473a8f7fbdb5..d7471fe1beb1 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -674,12 +674,12 @@ extern int i915_restore_state(struct drm_device *dev); | |||
674 | #ifdef CONFIG_ACPI | 674 | #ifdef CONFIG_ACPI |
675 | /* i915_opregion.c */ | 675 | /* i915_opregion.c */ |
676 | extern int intel_opregion_init(struct drm_device *dev, int resume); | 676 | extern int intel_opregion_init(struct drm_device *dev, int resume); |
677 | extern void intel_opregion_free(struct drm_device *dev); | 677 | extern void intel_opregion_free(struct drm_device *dev, int suspend); |
678 | extern void opregion_asle_intr(struct drm_device *dev); | 678 | extern void opregion_asle_intr(struct drm_device *dev); |
679 | extern void opregion_enable_asle(struct drm_device *dev); | 679 | extern void opregion_enable_asle(struct drm_device *dev); |
680 | #else | 680 | #else |
681 | static inline int intel_opregion_init(struct drm_device *dev, int resume) { return 0; } | 681 | static inline int intel_opregion_init(struct drm_device *dev, int resume) { return 0; } |
682 | static inline void intel_opregion_free(struct drm_device *dev) { return; } | 682 | static inline void intel_opregion_free(struct drm_device *dev, int suspend) { return; } |
683 | static inline void opregion_asle_intr(struct drm_device *dev) { return; } | 683 | static inline void opregion_asle_intr(struct drm_device *dev) { return; } |
684 | static inline void opregion_enable_asle(struct drm_device *dev) { return; } | 684 | static inline void opregion_enable_asle(struct drm_device *dev) { return; } |
685 | #endif | 685 | #endif |
diff --git a/drivers/gpu/drm/i915/i915_opregion.c b/drivers/gpu/drm/i915/i915_opregion.c index 8dc1fd3115c2..3eceefe3475f 100644 --- a/drivers/gpu/drm/i915/i915_opregion.c +++ b/drivers/gpu/drm/i915/i915_opregion.c | |||
@@ -409,7 +409,7 @@ err_out: | |||
409 | return err; | 409 | return err; |
410 | } | 410 | } |
411 | 411 | ||
412 | void intel_opregion_free(struct drm_device *dev) | 412 | void intel_opregion_free(struct drm_device *dev, int suspend) |
413 | { | 413 | { |
414 | struct drm_i915_private *dev_priv = dev->dev_private; | 414 | struct drm_i915_private *dev_priv = dev->dev_private; |
415 | struct intel_opregion *opregion = &dev_priv->opregion; | 415 | struct intel_opregion *opregion = &dev_priv->opregion; |
@@ -417,6 +417,9 @@ void intel_opregion_free(struct drm_device *dev) | |||
417 | if (!opregion->enabled) | 417 | if (!opregion->enabled) |
418 | return; | 418 | return; |
419 | 419 | ||
420 | if (!suspend) | ||
421 | acpi_video_exit(); | ||
422 | |||
420 | opregion->acpi->drdy = 0; | 423 | opregion->acpi->drdy = 0; |
421 | 424 | ||
422 | system_opregion = NULL; | 425 | system_opregion = NULL; |