aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/radeon/radeon_pm.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
index 6dfeb9cf16ba..4ece89aa26f8 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -378,6 +378,16 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev)
378 radeon_get_power_state(rdev, rdev->pm.planned_action); 378 radeon_get_power_state(rdev, rdev->pm.planned_action);
379 mutex_lock(&rdev->cp.mutex); 379 mutex_lock(&rdev->cp.mutex);
380 380
381 /* wait for GPU idle */
382 rdev->pm.gui_idle = false;
383 rdev->irq.gui_idle = true;
384 radeon_irq_set(rdev);
385 wait_event_interruptible_timeout(
386 rdev->irq.idle_queue, rdev->pm.gui_idle,
387 msecs_to_jiffies(RADEON_WAIT_IDLE_TIMEOUT));
388 rdev->irq.gui_idle = false;
389 radeon_irq_set(rdev);
390
381 if (rdev->pm.active_crtcs & (1 << 0)) { 391 if (rdev->pm.active_crtcs & (1 << 0)) {
382 rdev->pm.req_vblank |= (1 << 0); 392 rdev->pm.req_vblank |= (1 << 0);
383 drm_vblank_get(rdev->ddev, 0); 393 drm_vblank_get(rdev->ddev, 0);