summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_pm.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-03-22 18:31:08 +0100
committerDave Airlie <airlied@redhat.com>2010-05-18 10:21:10 +0200
commit58e21dff53b9063563e7bb5f5a795ab2d8f61dda (patch)
treee583e93b5685a8904058820f191048198c73a87f /drivers/gpu/drm/radeon/radeon_pm.c
parentdrm/radeon/kms: minor pm cleanups (diff)
downloadlinux-58e21dff53b9063563e7bb5f5a795ab2d8f61dda.tar.xz
linux-58e21dff53b9063563e7bb5f5a795ab2d8f61dda.zip
drm/radeon/kms/pm: restore default power state on exit
Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to '')
-rw-r--r--drivers/gpu/drm/radeon/radeon_pm.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
index 87814eb8a1b4..23b79ebce6c1 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -125,6 +125,15 @@ int radeon_pm_init(struct radeon_device *rdev)
void radeon_pm_fini(struct radeon_device *rdev)
{
+ if (rdev->pm.state != PM_STATE_DISABLED) {
+ /* cancel work */
+ cancel_delayed_work_sync(&rdev->pm.idle_work);
+ /* reset default clocks */
+ rdev->pm.state = PM_STATE_DISABLED;
+ rdev->pm.planned_action = PM_ACTION_DEFAULT;
+ radeon_pm_set_clocks(rdev);
+ }
+
if (rdev->pm.i2c_bus)
radeon_i2c_destroy(rdev->pm.i2c_bus);
}