drm/amdgpu/cz: force vce clocks when sclks are forced
authorAlex Deucher <alexander.deucher@amd.com>
Fri, 18 Dec 2015 16:33:30 +0000 (11:33 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 13 Jan 2016 17:13:33 +0000 (12:13 -0500)
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/cz_dpm.c

index bdf5a22ba450146b72875afb0f0ea48a28312732..4dd17f2dd9059125eace5ffd5fc2a8cf2eb46802 100644 (file)
@@ -1984,6 +1984,14 @@ static int cz_dpm_force_dpm_level(struct amdgpu_device *adev,
                if (ret)
                        return ret;
                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;
@@ -2001,6 +2009,14 @@ static int cz_dpm_force_dpm_level(struct amdgpu_device *adev,
                if (ret)
                        return ret;
                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;
@@ -2012,6 +2028,11 @@ static int cz_dpm_force_dpm_level(struct amdgpu_device *adev,
 
                /* uvd */
                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;
@@ -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,