drm/amdgpu: no need to ungate uvd/vce clock when fini.

Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Rex Zhu 2016-11-24 21:44:44 +08:00 committed by Alex Deucher
parent 6b16cf7785
commit 8201a67a49
1 changed files with 13 additions and 7 deletions

View File

@ -1470,20 +1470,26 @@ static int amdgpu_fini(struct amdgpu_device *adev)
amdgpu_wb_fini(adev); amdgpu_wb_fini(adev);
amdgpu_vram_scratch_fini(adev); amdgpu_vram_scratch_fini(adev);
} }
/* ungate blocks before hw fini so that we can shutdown the blocks safely */
r = adev->ip_blocks[i].version->funcs->set_clockgating_state((void *)adev, if (adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_UVD &&
AMD_CG_STATE_UNGATE); adev->ip_blocks[i].version->type != AMD_IP_BLOCK_TYPE_VCE) {
if (r) { /* ungate blocks before hw fini so that we can shutdown the blocks safely */
DRM_ERROR("set_clockgating_state(ungate) of IP block <%s> failed %d\n", r = adev->ip_blocks[i].version->funcs->set_clockgating_state((void *)adev,
adev->ip_blocks[i].version->funcs->name, r); AMD_CG_STATE_UNGATE);
return r; if (r) {
DRM_ERROR("set_clockgating_state(ungate) of IP block <%s> failed %d\n",
adev->ip_blocks[i].version->funcs->name, r);
return r;
}
} }
r = adev->ip_blocks[i].version->funcs->hw_fini((void *)adev); r = adev->ip_blocks[i].version->funcs->hw_fini((void *)adev);
/* XXX handle errors */ /* XXX handle errors */
if (r) { if (r) {
DRM_DEBUG("hw_fini of IP block <%s> failed %d\n", DRM_DEBUG("hw_fini of IP block <%s> failed %d\n",
adev->ip_blocks[i].version->funcs->name, r); adev->ip_blocks[i].version->funcs->name, r);
} }
adev->ip_blocks[i].status.hw = false; adev->ip_blocks[i].status.hw = false;
} }