diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 53 |
1 files changed, 47 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 2fa217862058..6978a22f70e7 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -284,6 +284,52 @@ i915_pci_resume(struct pci_dev *pdev) | |||
284 | return i915_resume(dev); | 284 | return i915_resume(dev); |
285 | } | 285 | } |
286 | 286 | ||
287 | static int | ||
288 | i915_pm_suspend(struct device *dev) | ||
289 | { | ||
290 | return i915_pci_suspend(to_pci_dev(dev), PMSG_SUSPEND); | ||
291 | } | ||
292 | |||
293 | static int | ||
294 | i915_pm_resume(struct device *dev) | ||
295 | { | ||
296 | return i915_pci_resume(to_pci_dev(dev)); | ||
297 | } | ||
298 | |||
299 | static int | ||
300 | i915_pm_freeze(struct device *dev) | ||
301 | { | ||
302 | return i915_pci_suspend(to_pci_dev(dev), PMSG_FREEZE); | ||
303 | } | ||
304 | |||
305 | static int | ||
306 | i915_pm_thaw(struct device *dev) | ||
307 | { | ||
308 | /* thaw during hibernate, do nothing! */ | ||
309 | return 0; | ||
310 | } | ||
311 | |||
312 | static int | ||
313 | i915_pm_poweroff(struct device *dev) | ||
314 | { | ||
315 | return i915_pci_suspend(to_pci_dev(dev), PMSG_HIBERNATE); | ||
316 | } | ||
317 | |||
318 | static int | ||
319 | i915_pm_restore(struct device *dev) | ||
320 | { | ||
321 | return i915_pci_resume(to_pci_dev(dev)); | ||
322 | } | ||
323 | |||
324 | const struct dev_pm_ops i915_pm_ops = { | ||
325 | .suspend = i915_pm_suspend, | ||
326 | .resume = i915_pm_resume, | ||
327 | .freeze = i915_pm_freeze, | ||
328 | .thaw = i915_pm_thaw, | ||
329 | .poweroff = i915_pm_poweroff, | ||
330 | .restore = i915_pm_restore, | ||
331 | }; | ||
332 | |||
287 | static struct vm_operations_struct i915_gem_vm_ops = { | 333 | static struct vm_operations_struct i915_gem_vm_ops = { |
288 | .fault = i915_gem_fault, | 334 | .fault = i915_gem_fault, |
289 | .open = drm_gem_vm_open, | 335 | .open = drm_gem_vm_open, |
@@ -303,8 +349,6 @@ static struct drm_driver driver = { | |||
303 | .lastclose = i915_driver_lastclose, | 349 | .lastclose = i915_driver_lastclose, |
304 | .preclose = i915_driver_preclose, | 350 | .preclose = i915_driver_preclose, |
305 | .postclose = i915_driver_postclose, | 351 | .postclose = i915_driver_postclose, |
306 | .suspend = i915_suspend, | ||
307 | .resume = i915_resume, | ||
308 | .device_is_agp = i915_driver_device_is_agp, | 352 | .device_is_agp = i915_driver_device_is_agp, |
309 | .enable_vblank = i915_enable_vblank, | 353 | .enable_vblank = i915_enable_vblank, |
310 | .disable_vblank = i915_disable_vblank, | 354 | .disable_vblank = i915_disable_vblank, |
@@ -344,10 +388,7 @@ static struct drm_driver driver = { | |||
344 | .id_table = pciidlist, | 388 | .id_table = pciidlist, |
345 | .probe = i915_pci_probe, | 389 | .probe = i915_pci_probe, |
346 | .remove = i915_pci_remove, | 390 | .remove = i915_pci_remove, |
347 | #ifdef CONFIG_PM | 391 | .driver.pm = &i915_pm_ops, |
348 | .resume = i915_pci_resume, | ||
349 | .suspend = i915_pci_suspend, | ||
350 | #endif | ||
351 | }, | 392 | }, |
352 | 393 | ||
353 | .name = DRIVER_NAME, | 394 | .name = DRIVER_NAME, |