From de1accc3d1757d8819cc401567134ef45dc9b811 Mon Sep 17 00:00:00 2001 From: Imre Deak Date: Thu, 21 Aug 2014 16:22:11 +0300 Subject: [PATCH] drm/i915: call freeze/poweroff_late handlers Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/i915_drv.c | 54 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 2dcc0d8..5d6b90d 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -923,10 +923,9 @@ static int i915_pm_suspend(struct device *dev) return i915_drm_freeze(drm_dev); } -static int i915_pm_suspend_late(struct device *dev) +static int i915_suspend_late(struct drm_device *drm_dev) { - struct pci_dev *pdev = to_pci_dev(dev); - struct drm_device *drm_dev = pci_get_drvdata(pdev); + struct pci_dev *pdev = to_pci_dev(drm_dev->dev); struct drm_i915_private *dev_priv = drm_dev->dev_private; int ret; @@ -954,6 +953,22 @@ static int i915_pm_suspend_late(struct device *dev) return ret; } +static int i915_pm_suspend_late(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_suspend_late(drm_dev); +} + +static int i915_pm_poweroff_late(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_suspend_late(drm_dev); +} + static int i915_pm_resume_early(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); @@ -970,6 +985,22 @@ static int i915_pm_resume(struct device *dev) return i915_resume(drm_dev); } +static int i915_pm_restore_early(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_resume_early(drm_dev); +} + +static int i915_pm_restore(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_resume(drm_dev); +} + static int i915_pm_freeze(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); @@ -983,12 +1014,21 @@ static int i915_pm_freeze(struct device *dev) return i915_drm_freeze(drm_dev); } +static int i915_pm_freeze_late(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_suspend_late(drm_dev); +} + static int i915_pm_thaw_early(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); struct drm_device *drm_dev = pci_get_drvdata(pdev); - return i915_drm_thaw_early(drm_dev); + + return i915_resume_early(drm_dev); } static int i915_pm_thaw(struct device *dev) @@ -1554,11 +1594,13 @@ static const struct dev_pm_ops i915_pm_ops = { .resume_early = i915_pm_resume_early, .resume = i915_pm_resume, .freeze = i915_pm_freeze, + .freeze_late = i915_pm_freeze_late, .thaw_early = i915_pm_thaw_early, .thaw = i915_pm_thaw, .poweroff = i915_pm_poweroff, - .restore_early = i915_pm_resume_early, - .restore = i915_pm_resume, + .poweroff_late = i915_pm_poweroff_late, + .restore_early = i915_pm_restore_early, + .restore = i915_pm_restore, .runtime_suspend = intel_runtime_suspend, .runtime_resume = intel_runtime_resume, }; -- 1.8.4