diff options
author | James Zhu <James.Zhu@amd.com> | 2018-12-03 22:04:28 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-12-18 17:38:24 -0500 |
commit | f9872f100aefd3b80eb4a61dbea326ee28cdc94a (patch) | |
tree | 43fe72a472a4a20ba1e3366ce307fbd86cf9aa75 /drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | |
parent | a3a0ebd10a9b6cf6c33885016393729112c85083 (diff) |
drm/amdgpu/vcn: Update vcn.cur_state during suspend
Replace vcn_v1_0_stop with vcn_v1_0_set_powergating_state during suspend,
to keep adev->vcn.cur_state update. It will fix VCN S3 hung issue.
Signed-off-by: James Zhu <James.Zhu@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c index c1a03505f956..4f8352044563 100644 --- a/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | |||
@@ -48,6 +48,7 @@ static void vcn_v1_0_set_enc_ring_funcs(struct amdgpu_device *adev); | |||
48 | static void vcn_v1_0_set_jpeg_ring_funcs(struct amdgpu_device *adev); | 48 | static void vcn_v1_0_set_jpeg_ring_funcs(struct amdgpu_device *adev); |
49 | static void vcn_v1_0_set_irq_funcs(struct amdgpu_device *adev); | 49 | static void vcn_v1_0_set_irq_funcs(struct amdgpu_device *adev); |
50 | static void vcn_v1_0_jpeg_ring_set_patch_ring(struct amdgpu_ring *ring, uint32_t ptr); | 50 | static void vcn_v1_0_jpeg_ring_set_patch_ring(struct amdgpu_ring *ring, uint32_t ptr); |
51 | static int vcn_v1_0_set_powergating_state(void *handle, enum amd_powergating_state state); | ||
51 | 52 | ||
52 | /** | 53 | /** |
53 | * vcn_v1_0_early_init - set function pointers | 54 | * vcn_v1_0_early_init - set function pointers |
@@ -214,7 +215,7 @@ static int vcn_v1_0_hw_fini(void *handle) | |||
214 | struct amdgpu_ring *ring = &adev->vcn.ring_dec; | 215 | struct amdgpu_ring *ring = &adev->vcn.ring_dec; |
215 | 216 | ||
216 | if (RREG32_SOC15(VCN, 0, mmUVD_STATUS)) | 217 | if (RREG32_SOC15(VCN, 0, mmUVD_STATUS)) |
217 | vcn_v1_0_stop(adev); | 218 | vcn_v1_0_set_powergating_state(adev, AMD_PG_STATE_GATE); |
218 | 219 | ||
219 | ring->sched.ready = false; | 220 | ring->sched.ready = false; |
220 | 221 | ||