From aed631fc6759325d4311f165c5acf4da57ee0a40 Mon Sep 17 00:00:00 2001 From: Lijo Lazar Date: Wed, 11 Feb 2026 15:27:48 +0530 Subject: [PATCH] drm/amdgpu: Fetch asp ualink interface version Add interface to get ASP ualink interface version. Signed-off-by: Lijo Lazar Reviewed-by: Mukul Joshi Reviewed-by: Felix Kuehling Signed-off-by: Alex Deucher --- 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 a679f796ec1a..e547b8e53df9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -833,6 +833,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"; } @@ -1193,6 +1195,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 0aef9ee83bd0..5968595647fe 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