aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/psp_v3_1.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/psp_v3_1.c15
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
322int psp_v3_1_ring_destroy(struct psp_context *psp, enum psp_ring_type ring_type) 322int 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
345int 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);