Change-Id: Iea7861181c304cd25585f1e40a5a3f188a1de5df Signed-off-by: Chunming Zhou <David1.Zhou at amd.com> --- drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c index 532ea88..caaf1b5 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c @@ -1336,6 +1336,30 @@ static int sdma_v3_0_wait_for_idle(void *handle) return -ETIMEDOUT; } +static int sdma_v3_0_pre_soft_reset(void *handle, u32 reset_mask) +{ + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + + if (reset_mask & (AMDGPU_RESET_DMA | AMDGPU_RESET_DMA1)) { + sdma_v3_0_ctx_switch_enable(adev, false); + sdma_v3_0_enable(adev, false); + } + + return 0; +} + +static int sdma_v3_0_post_soft_reset(void *handle, u32 reset_mask) +{ + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + + if (reset_mask & (AMDGPU_RESET_DMA | AMDGPU_RESET_DMA1)) { + sdma_v3_0_gfx_resume(adev); + sdma_v3_0_rlc_resume(adev); + } + + return 0; +} + static int sdma_v3_0_soft_reset(void *handle) { u32 srbm_soft_reset = 0; @@ -1575,6 +1599,8 @@ const struct amd_ip_funcs sdma_v3_0_ip_funcs = { .resume = sdma_v3_0_resume, .is_idle = sdma_v3_0_is_idle, .wait_for_idle = sdma_v3_0_wait_for_idle, + .pre_soft_reset = sdma_v3_0_pre_soft_reset, + .post_soft_reset = sdma_v3_0_post_soft_reset, .soft_reset = sdma_v3_0_soft_reset, .set_clockgating_state = sdma_v3_0_set_clockgating_state, .set_powergating_state = sdma_v3_0_set_powergating_state, -- 1.9.1