diff options
| -rw-r--r-- | drivers/acpi/video.c | 3 | ||||
| -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 | ||||
| -rw-r--r-- | include/acpi/video.h | 2 |
6 files changed, 12 insertions, 6 deletions
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index cd4fb7543a90..8961e613e093 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c | |||
| @@ -2293,7 +2293,7 @@ static int __init acpi_video_init(void) | |||
| 2293 | return acpi_video_register(); | 2293 | return acpi_video_register(); |
| 2294 | } | 2294 | } |
| 2295 | 2295 | ||
| 2296 | static void __exit acpi_video_exit(void) | 2296 | void __exit acpi_video_exit(void) |
| 2297 | { | 2297 | { |
| 2298 | 2298 | ||
| 2299 | acpi_bus_unregister_driver(&acpi_video_bus); | 2299 | acpi_bus_unregister_driver(&acpi_video_bus); |
| @@ -2302,6 +2302,7 @@ static void __exit acpi_video_exit(void) | |||
| 2302 | 2302 | ||
| 2303 | return; | 2303 | return; |
| 2304 | } | 2304 | } |
| 2305 | EXPORT_SYMBOL(acpi_video_exit); | ||
| 2305 | 2306 | ||
| 2306 | module_init(acpi_video_init); | 2307 | module_init(acpi_video_init); |
| 2307 | module_exit(acpi_video_exit); | 2308 | module_exit(acpi_video_exit); |
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; |
diff --git a/include/acpi/video.h b/include/acpi/video.h index f0275bb79ce4..af6fe95fd3d0 100644 --- a/include/acpi/video.h +++ b/include/acpi/video.h | |||
| @@ -3,8 +3,10 @@ | |||
| 3 | 3 | ||
| 4 | #if (defined CONFIG_ACPI_VIDEO || defined CONFIG_ACPI_VIDEO_MODULE) | 4 | #if (defined CONFIG_ACPI_VIDEO || defined CONFIG_ACPI_VIDEO_MODULE) |
| 5 | extern int acpi_video_register(void); | 5 | extern int acpi_video_register(void); |
| 6 | extern int acpi_video_exit(void); | ||
| 6 | #else | 7 | #else |
| 7 | static inline int acpi_video_register(void) { return 0; } | 8 | static inline int acpi_video_register(void) { return 0; } |
| 9 | static inline void acpi_video_exit(void) { return; } | ||
| 8 | #endif | 10 | #endif |
| 9 | 11 | ||
| 10 | #endif | 12 | #endif |
