diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/psp_v3_1.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/psp_v3_1.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c b/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c index 2a535a4b8d5b..bcbe30dfff39 100644 --- a/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c +++ b/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c | |||
@@ -319,7 +319,7 @@ int psp_v3_1_ring_create(struct psp_context *psp, enum psp_ring_type ring_type) | |||
319 | return ret; | 319 | return ret; |
320 | } | 320 | } |
321 | 321 | ||
322 | int psp_v3_1_ring_destroy(struct psp_context *psp, enum psp_ring_type ring_type) | 322 | int psp_v3_1_ring_stop(struct psp_context *psp, enum psp_ring_type ring_type) |
323 | { | 323 | { |
324 | int ret = 0; | 324 | int ret = 0; |
325 | struct psp_ring *ring; | 325 | struct psp_ring *ring; |
@@ -339,6 +339,19 @@ int psp_v3_1_ring_destroy(struct psp_context *psp, enum psp_ring_type ring_type) | |||
339 | ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_64), | 339 | ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_64), |
340 | 0x80000000, 0x80000000, false); | 340 | 0x80000000, 0x80000000, false); |
341 | 341 | ||
342 | return ret; | ||
343 | } | ||
344 | |||
345 | int psp_v3_1_ring_destroy(struct psp_context *psp, enum psp_ring_type ring_type) | ||
346 | { | ||
347 | int ret = 0; | ||
348 | struct psp_ring *ring = &psp->km_ring; | ||
349 | struct amdgpu_device *adev = psp->adev; | ||
350 | |||
351 | ret = psp_v3_1_ring_stop(psp, ring_type); | ||
352 | if (ret) | ||
353 | DRM_ERROR("Fail to stop psp ring\n"); | ||
354 | |||
342 | amdgpu_bo_free_kernel(&adev->firmware.rbuf, | 355 | amdgpu_bo_free_kernel(&adev->firmware.rbuf, |
343 | &ring->ring_mem_mc_addr, | 356 | &ring->ring_mem_mc_addr, |
344 | (void **)&ring->ring_mem); | 357 | (void **)&ring->ring_mem); |