]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
Merge tag 'xfs-for-linus-4.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_pm.c
index 89782543f85470ab53ea4d31601e3bdfabe6637f..ed13baa7c976632de924671854a3c2eef7ef883e 100644 (file)
@@ -581,7 +581,6 @@ force:
        }
 
        mutex_lock(&adev->ddev->struct_mutex);
-       down_write(&adev->pm.mclk_lock);
        mutex_lock(&adev->ring_lock);
 
        /* update whether vce is active */
@@ -629,7 +628,6 @@ force:
 
 done:
        mutex_unlock(&adev->ring_lock);
-       up_write(&adev->pm.mclk_lock);
        mutex_unlock(&adev->ddev->struct_mutex);
 }
 
@@ -658,19 +656,27 @@ void amdgpu_dpm_enable_uvd(struct amdgpu_device *adev, bool enable)
 
 void amdgpu_dpm_enable_vce(struct amdgpu_device *adev, bool enable)
 {
-       if (enable) {
+       if (adev->pm.funcs->powergate_vce) {
                mutex_lock(&adev->pm.mutex);
-               adev->pm.dpm.vce_active = true;
-               /* XXX select vce level based on ring/task */
-               adev->pm.dpm.vce_level = AMDGPU_VCE_LEVEL_AC_ALL;
+               /* enable/disable VCE */
+               amdgpu_dpm_powergate_vce(adev, !enable);
+
                mutex_unlock(&adev->pm.mutex);
        } else {
-               mutex_lock(&adev->pm.mutex);
-               adev->pm.dpm.vce_active = false;
-               mutex_unlock(&adev->pm.mutex);
-       }
+               if (enable) {
+                       mutex_lock(&adev->pm.mutex);
+                       adev->pm.dpm.vce_active = true;
+                       /* XXX select vce level based on ring/task */
+                       adev->pm.dpm.vce_level = AMDGPU_VCE_LEVEL_AC_ALL;
+                       mutex_unlock(&adev->pm.mutex);
+               } else {
+                       mutex_lock(&adev->pm.mutex);
+                       adev->pm.dpm.vce_active = false;
+                       mutex_unlock(&adev->pm.mutex);
+               }
 
-       amdgpu_pm_compute_clocks(adev);
+               amdgpu_pm_compute_clocks(adev);
+       }
 }
 
 void amdgpu_pm_print_power_states(struct amdgpu_device *adev)
This page took 0.032082 seconds and 4 git commands to generate.