diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 13 | 
1 files changed, 11 insertions, 2 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c index 8fec802d3908..e2c06780ce49 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c @@ -321,6 +321,10 @@ static void amdgpu_vce_idle_work_handler(struct work_struct *work)  			amdgpu_dpm_enable_vce(adev, false);  		} else {  			amdgpu_asic_set_vce_clocks(adev, 0, 0); +			amdgpu_set_powergating_state(adev, AMD_IP_BLOCK_TYPE_VCE, +							    AMD_PG_STATE_GATE); +			amdgpu_set_clockgating_state(adev, AMD_IP_BLOCK_TYPE_VCE, +							    AMD_CG_STATE_GATE);  		}  	} else {  		schedule_delayed_work(&adev->vce.idle_work, VCE_IDLE_TIMEOUT); @@ -346,6 +350,11 @@ void amdgpu_vce_ring_begin_use(struct amdgpu_ring *ring)  			amdgpu_dpm_enable_vce(adev, true);  		} else {  			amdgpu_asic_set_vce_clocks(adev, 53300, 40000); +			amdgpu_set_clockgating_state(adev, AMD_IP_BLOCK_TYPE_VCE, +							    AMD_CG_STATE_UNGATE); +			amdgpu_set_powergating_state(adev, AMD_IP_BLOCK_TYPE_VCE, +							    AMD_PG_STATE_UNGATE); +  		}  	}  	mutex_unlock(&adev->vce.idle_mutex); @@ -455,7 +464,7 @@ int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,  	for (i = ib->length_dw; i < ib_size_dw; ++i)  		ib->ptr[i] = 0x0; -	r = amdgpu_ib_schedule(ring, 1, ib, NULL, NULL, &f); +	r = amdgpu_ib_schedule(ring, 1, ib, NULL, &f);  	job->fence = dma_fence_get(f);  	if (r)  		goto err; @@ -518,7 +527,7 @@ int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,  		ib->ptr[i] = 0x0;  	if (direct) { -		r = amdgpu_ib_schedule(ring, 1, ib, NULL, NULL, &f); +		r = amdgpu_ib_schedule(ring, 1, ib, NULL, &f);  		job->fence = dma_fence_get(f);  		if (r)  			goto err; |