diff options
author | Christian König <christian.koenig@amd.com> | 2014-01-10 10:05:05 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2014-01-20 12:05:12 -0500 |
commit | 8158eb9e32c4c98c7dd152207fd70f747ef81a9a (patch) | |
tree | b1936c91bbfa7f56f92e6c2e8e1156f1a75ed98a | |
parent | 7f4237c6dad7c959615b896d3c6c728c37943f4d (diff) |
drm/radeon: don't power gate paused UVD streams
Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_pm.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_uvd.c | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c index 0b24c4c7dcf9..63c50493da56 100644 --- a/drivers/gpu/drm/radeon/radeon_pm.c +++ b/drivers/gpu/drm/radeon/radeon_pm.c | |||
@@ -924,6 +924,10 @@ void radeon_dpm_enable_uvd(struct radeon_device *rdev, bool enable) | |||
924 | 924 | ||
925 | if (rdev->asic->dpm.powergate_uvd) { | 925 | if (rdev->asic->dpm.powergate_uvd) { |
926 | mutex_lock(&rdev->pm.mutex); | 926 | mutex_lock(&rdev->pm.mutex); |
927 | /* don't powergate anything if we | ||
928 | have active but pause streams */ | ||
929 | enable |= rdev->pm.dpm.sd > 0; | ||
930 | enable |= rdev->pm.dpm.hd > 0; | ||
927 | /* enable/disable UVD */ | 931 | /* enable/disable UVD */ |
928 | radeon_dpm_powergate_uvd(rdev, !enable); | 932 | radeon_dpm_powergate_uvd(rdev, !enable); |
929 | mutex_unlock(&rdev->pm.mutex); | 933 | mutex_unlock(&rdev->pm.mutex); |
diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c index b9c0529b4a2e..4b5c1fcb515d 100644 --- a/drivers/gpu/drm/radeon/radeon_uvd.c +++ b/drivers/gpu/drm/radeon/radeon_uvd.c | |||
@@ -778,6 +778,8 @@ static void radeon_uvd_idle_work_handler(struct work_struct *work) | |||
778 | 778 | ||
779 | if (radeon_fence_count_emitted(rdev, R600_RING_TYPE_UVD_INDEX) == 0) { | 779 | if (radeon_fence_count_emitted(rdev, R600_RING_TYPE_UVD_INDEX) == 0) { |
780 | if ((rdev->pm.pm_method == PM_METHOD_DPM) && rdev->pm.dpm_enabled) { | 780 | if ((rdev->pm.pm_method == PM_METHOD_DPM) && rdev->pm.dpm_enabled) { |
781 | radeon_uvd_count_handles(rdev, &rdev->pm.dpm.sd, | ||
782 | &rdev->pm.dpm.hd); | ||
781 | radeon_dpm_enable_uvd(rdev, false); | 783 | radeon_dpm_enable_uvd(rdev, false); |
782 | } else { | 784 | } else { |
783 | radeon_set_uvd_clocks(rdev, 0, 0); | 785 | radeon_set_uvd_clocks(rdev, 0, 0); |