issue unload_ta_cmd to tOS to unload asd driver

Change-Id: I697cfc1774205ed6cbe22eb3c16143b603543564
Signed-off-by: Hawking Zhang <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 36 +++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
index bdc9e7ae4892..0e8907179e07 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
@@ -356,6 +356,40 @@ static int psp_asd_load(struct psp_context *psp)
        return ret;
 }
 
+static void psp_prep_asd_unload_cmd_buf(struct psp_gfx_cmd_resp *cmd,
+                                       uint32_t asd_session_id)
+{
+       cmd->cmd_id = GFX_CMD_ID_UNLOAD_TA;
+       cmd->cmd.cmd_unload_ta.session_id = asd_session_id;
+}
+
+static int psp_asd_unload(struct psp_context *psp)
+{
+       int ret;
+       struct psp_gfx_cmd_resp *cmd;
+
+       if (amdgpu_sriov_vf(psp->adev))
+               return 0;
+
+       if (!psp->asd_context.asd_initialized)
+               return 0;
+
+       cmd = kzalloc(sizeof(struct psp_gfx_cmd_resp), GFP_KERNEL);
+       if (!cmd)
+               return -ENOMEM;
+
+       psp_prep_asd_unload_cmd_buf(cmd, psp->asd_context.session_id);
+
+       ret = psp_cmd_submit_buf(psp, NULL, cmd,
+                                psp->fence_buf_mc_addr);
+       if (!ret)
+               psp->asd_context.asd_initialized = false;
+
+       kfree(cmd);
+
+       return ret;
+}
+
 static void psp_prep_reg_prog_cmd_buf(struct psp_gfx_cmd_resp *cmd,
                uint32_t id, uint32_t value)
 {
@@ -1583,6 +1617,8 @@ static int psp_hw_fini(void *handle)
                psp_hdcp_terminate(psp);
        }
 
+       psp_asd_unload(psp);
+
        psp_ring_destroy(psp, PSP_RING_TYPE__KM);
 
        pptr = amdgpu_sriov_vf(psp->adev) ? &tmr_buf : NULL;
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to