From: Lijo Lazar <[email protected]>

Add interface to get ASP ualink interface version.

Signed-off-by: Lijo Lazar <[email protected]>
Reviewed-by: Mukul Joshi <[email protected]>
Reviewed-by: Felix Kuehling <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 25 +++++++++++++++++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h |  1 +
 2 files changed, 26 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
index a0f6df5067e6e..5c82d1d808157 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
@@ -827,6 +827,8 @@ static const char *psp_gfx_cmd_name(enum psp_gfx_cmd_id 
cmd_id)
                return "NPS_MODE_CHANGE";
        case GFX_CMD_ID_PERF_HW:
                return "PERF MONITORING HW";
+       case GFX_CMD_ID_UAL_GET_INTERFACE_VER:
+               return "UAL_GET_INTERFACE_VER";
        default:
                return "UNKNOWN CMD";
        }
@@ -1187,6 +1189,29 @@ static int psp_get_fw_reservation_info(struct 
psp_context *psp,
        return 0;
 }
 
+int psp_ual_get_interface_version(struct psp_context *psp, uint32_t *intf_ver)
+{
+       struct psp_gfx_cmd_resp *cmd;
+       int ret;
+
+       cmd = acquire_psp_cmd_buf(psp);
+
+       cmd->cmd_id = GFX_CMD_ID_UAL_GET_INTERFACE_VER;
+
+       ret = psp_cmd_submit_buf(psp, NULL, cmd, psp->fence_buf_mc_addr);
+
+       if (!ret && !cmd->resp.status) {
+               *intf_ver = cmd->resp.uresp.get_intf_ver_ual.intf_ver;
+       } else if (!ret) {
+               pr_debug("ual_get_if_ver: PSP status %x\n", cmd->resp.status);
+               ret = -EINVAL;
+       }
+
+       release_psp_cmd_buf(psp);
+
+       return ret;
+}
+
 int psp_update_fw_reservation(struct psp_context *psp)
 {
        int ret;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
index 0aef9ee83bd0c..5968595647fef 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
@@ -705,5 +705,6 @@ int amdgpu_psp_irq_mgr_register(
        struct amdgpu_psp_irq_mgr *mgr,
        const struct amdgpu_psp_irq_handler *handlers, int count,
        const struct amdgpu_psp_irq_handler *default_handler);
+int psp_ual_get_interface_version(struct psp_context *psp, uint32_t *intf_ver);
 
 #endif
-- 
2.55.0

Reply via email to