diff options
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_pm.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c index 7ae606600107..2c2c901226f4 100644 --- a/drivers/gpu/drm/radeon/radeon_pm.c +++ b/drivers/gpu/drm/radeon/radeon_pm.c | |||
@@ -253,18 +253,13 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev) | |||
253 | down_write(&rdev->pm.mclk_lock); | 253 | down_write(&rdev->pm.mclk_lock); |
254 | mutex_lock(&rdev->ring_lock); | 254 | mutex_lock(&rdev->ring_lock); |
255 | 255 | ||
256 | /* gui idle int has issues on older chips it seems */ | 256 | /* wait for the rings to drain */ |
257 | if (rdev->family >= CHIP_R600) { | 257 | for (i = 0; i < RADEON_NUM_RINGS; i++) { |
258 | if (rdev->irq.installed) { | 258 | struct radeon_ring *ring = &rdev->ring[i]; |
259 | /* wait for GPU to become idle */ | 259 | if (ring->ready) |
260 | radeon_irq_kms_wait_gui_idle(rdev); | 260 | radeon_fence_wait_empty_locked(rdev, i); |
261 | } | ||
262 | } else { | ||
263 | struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]; | ||
264 | if (ring->ready) { | ||
265 | radeon_fence_wait_empty_locked(rdev, RADEON_RING_TYPE_GFX_INDEX); | ||
266 | } | ||
267 | } | 261 | } |
262 | |||
268 | radeon_unmap_vram_bos(rdev); | 263 | radeon_unmap_vram_bos(rdev); |
269 | 264 | ||
270 | if (rdev->irq.installed) { | 265 | if (rdev->irq.installed) { |