diff options
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_drv.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index e651a58c18cf..82b72425a42f 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c | |||
| @@ -168,11 +168,13 @@ static struct drm_driver exynos_drm_driver = { | |||
| 168 | static int exynos_drm_suspend(struct device *dev) | 168 | static int exynos_drm_suspend(struct device *dev) |
| 169 | { | 169 | { |
| 170 | struct drm_device *drm_dev = dev_get_drvdata(dev); | 170 | struct drm_device *drm_dev = dev_get_drvdata(dev); |
| 171 | struct exynos_drm_private *private = drm_dev->dev_private; | 171 | struct exynos_drm_private *private; |
| 172 | 172 | ||
| 173 | if (pm_runtime_suspended(dev) || !drm_dev) | 173 | if (pm_runtime_suspended(dev) || !drm_dev) |
| 174 | return 0; | 174 | return 0; |
| 175 | 175 | ||
| 176 | private = drm_dev->dev_private; | ||
| 177 | |||
| 176 | drm_kms_helper_poll_disable(drm_dev); | 178 | drm_kms_helper_poll_disable(drm_dev); |
| 177 | exynos_drm_fbdev_suspend(drm_dev); | 179 | exynos_drm_fbdev_suspend(drm_dev); |
| 178 | private->suspend_state = drm_atomic_helper_suspend(drm_dev); | 180 | private->suspend_state = drm_atomic_helper_suspend(drm_dev); |
| @@ -188,11 +190,12 @@ static int exynos_drm_suspend(struct device *dev) | |||
| 188 | static int exynos_drm_resume(struct device *dev) | 190 | static int exynos_drm_resume(struct device *dev) |
| 189 | { | 191 | { |
| 190 | struct drm_device *drm_dev = dev_get_drvdata(dev); | 192 | struct drm_device *drm_dev = dev_get_drvdata(dev); |
| 191 | struct exynos_drm_private *private = drm_dev->dev_private; | 193 | struct exynos_drm_private *private; |
| 192 | 194 | ||
| 193 | if (pm_runtime_suspended(dev) || !drm_dev) | 195 | if (pm_runtime_suspended(dev) || !drm_dev) |
| 194 | return 0; | 196 | return 0; |
| 195 | 197 | ||
| 198 | private = drm_dev->dev_private; | ||
| 196 | drm_atomic_helper_resume(drm_dev, private->suspend_state); | 199 | drm_atomic_helper_resume(drm_dev, private->suspend_state); |
| 197 | exynos_drm_fbdev_resume(drm_dev); | 200 | exynos_drm_fbdev_resume(drm_dev); |
| 198 | drm_kms_helper_poll_enable(drm_dev); | 201 | drm_kms_helper_poll_enable(drm_dev); |
| @@ -427,6 +430,7 @@ static void exynos_drm_unbind(struct device *dev) | |||
| 427 | 430 | ||
| 428 | kfree(drm->dev_private); | 431 | kfree(drm->dev_private); |
| 429 | drm->dev_private = NULL; | 432 | drm->dev_private = NULL; |
| 433 | dev_set_drvdata(dev, NULL); | ||
| 430 | 434 | ||
| 431 | drm_dev_unref(drm); | 435 | drm_dev_unref(drm); |
| 432 | } | 436 | } |
