From 3ff831396f30303e9486607a575d36f7854fd537 Mon Sep 17 00:00:00 2001 From: Alex Deucher Date: Wed, 17 Mar 2010 14:29:15 -0400 Subject: [PATCH] --- yaml --- r: 196505 b: refs/heads/master c: ef6e6cf56aca91c0b0db8de6e79e0874595fd260 h: refs/heads/master i: 196503: f4421376496ff54c2bcfac97125f99808e3912ac v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/radeon/radeon_pm.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index e3a17bd0a098..56f0a69df6ab 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2031f77ca9c17133869b265210418959a909d259 +refs/heads/master: ef6e6cf56aca91c0b0db8de6e79e0874595fd260 diff --git a/trunk/drivers/gpu/drm/radeon/radeon_pm.c b/trunk/drivers/gpu/drm/radeon/radeon_pm.c index 6dfeb9cf16ba..4ece89aa26f8 100644 --- a/trunk/drivers/gpu/drm/radeon/radeon_pm.c +++ b/trunk/drivers/gpu/drm/radeon/radeon_pm.c @@ -378,6 +378,16 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev) radeon_get_power_state(rdev, rdev->pm.planned_action); mutex_lock(&rdev->cp.mutex); + /* wait for GPU idle */ + rdev->pm.gui_idle = false; + rdev->irq.gui_idle = true; + radeon_irq_set(rdev); + wait_event_interruptible_timeout( + rdev->irq.idle_queue, rdev->pm.gui_idle, + msecs_to_jiffies(RADEON_WAIT_IDLE_TIMEOUT)); + rdev->irq.gui_idle = false; + radeon_irq_set(rdev); + if (rdev->pm.active_crtcs & (1 << 0)) { rdev->pm.req_vblank |= (1 << 0); drm_vblank_get(rdev->ddev, 0);