diff options
author | Alex Deucher | 2015-12-18 11:33:30 -0500 |
---|---|---|
committer | Alex Deucher | 2016-01-13 12:13:33 -0500 |
commit | 403664bbf840e80a45c4b97115ac518b40487f91 (patch) | |
tree | 47c9cd95083363a39319e3015a6af9f708aa888d | |
parent | 5f57642672dd90e3183efcd9e6afbff1305a133a (diff) |
drm/amdgpu/cz: force vce clocks when sclks are forced
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/cz_dpm.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/cz_dpm.c b/drivers/gpu/drm/amd/amdgpu/cz_dpm.c index bdf5a22ba450..4dd17f2dd905 100644 --- a/drivers/gpu/drm/amd/amdgpu/cz_dpm.c +++ b/drivers/gpu/drm/amd/amdgpu/cz_dpm.c @@ -1986,6 +1986,14 @@ static int cz_dpm_force_dpm_level(struct amdgpu_device *adev, ret = cz_dpm_uvd_force_highest(adev); if (ret) return ret; + + /* vce */ + ret = cz_dpm_unforce_vce_dpm_levels(adev); + if (ret) + return ret; + ret = cz_dpm_vce_force_highest(adev); + if (ret) + return ret; break; case AMDGPU_DPM_FORCED_LEVEL_LOW: /* sclk */ @@ -2003,6 +2011,14 @@ static int cz_dpm_force_dpm_level(struct amdgpu_device *adev, ret = cz_dpm_uvd_force_lowest(adev); if (ret) return ret; + + /* vce */ + ret = cz_dpm_unforce_vce_dpm_levels(adev); + if (ret) + return ret; + ret = cz_dpm_vce_force_lowest(adev); + if (ret) + return ret; break; case AMDGPU_DPM_FORCED_LEVEL_AUTO: /* sclk */ @@ -2014,6 +2030,11 @@ static int cz_dpm_force_dpm_level(struct amdgpu_device *adev, ret = cz_dpm_unforce_uvd_dpm_levels(adev); if (ret) return ret; + + /* vce */ + ret = cz_dpm_unforce_vce_dpm_levels(adev); + if (ret) + return ret; break; default: break; @@ -2154,7 +2175,8 @@ static int cz_update_vce_dpm(struct amdgpu_device *adev) pi->vce_dpm.hard_min_clk = table->entries[table->count-1].ecclk; } else { /* non-stable p-state cases. without vce.Arbiter.EcclkHardMin */ - pi->vce_dpm.hard_min_clk = table->entries[0].ecclk; + /* leave it as set by user */ + /*pi->vce_dpm.hard_min_clk = table->entries[0].ecclk;*/ } cz_send_msg_to_smc_with_parameter(adev, |