[PATCH 16/95] drm/amdgpu: Implement PSP cmd UAL_SET_NPA_CONFIG
Alex Deucher <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <[email protected]> |
From: Felix Kuehling <[email protected]> To set NPA translation configuration to PSP. Signed-off-by: Felix Kuehling <[email protected]> Reviewed-by: Mukul Joshi <[email protected]> Signed-off-by: Alex Deucher <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 30 +++++++++++++++++++++++++ drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h | 3 +++ 2 files changed, 33 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c index 47367ff8c3903..d68b1e5118732 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -837,6 +837,8 @@ static const char *psp_gfx_cmd_name(enum psp_gfx_cmd_id cmd_id) return "UAL_SET_VPOD_CONFIG"; case GFX_CMD_ID_UAL_SET_STATION_CONFIG: return "UAL_SET_STATION_CONFIG"; + case GFX_CMD_ID_UAL_SET_NPA_CONFIG: + return "UAL_SET_NPA_CONFIG"; default: return "UNKNOWN CMD"; } @@ -1392,6 +1394,34 @@ int psp_ual_set_station_config(struct psp_context *psp, uint32_t intf_ver, return ret; } +int psp_ual_set_npa_config(struct psp_context *psp, uint32_t intf_ver, + unsigned int vmid, bool enable) +{ + struct psp_gfx_cmd_resp *cmd; + int ret; + + /* TBD check interface version 1.x */ + if (intf_ver > 0x1ffff) { + pr_warn("PSP UAL interface version mismatch: 0x%x\n", intf_ver); + return -EOPNOTSUPP; + } + + cmd = acquire_psp_cmd_buf(psp); + + cmd->cmd_id = GFX_CMD_ID_UAL_SET_NPA_CONFIG; + cmd->cmd.cmd_set_npa_config_ual.vmid = vmid; + cmd->cmd.cmd_set_npa_config_ual.enable_npa_translation = enable; + + ret = psp_cmd_submit_buf(psp, NULL, cmd, psp->fence_buf_mc_addr); + + if (!ret && 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 60ee3dc25113b..ee37170c1c2b3 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h @@ -725,4 +725,7 @@ int psp_ual_set_vpod_config(struct psp_context *psp, uint32_t intf_ver, int psp_ual_set_station_config(struct psp_context *psp, uint32_t intf_ver, const struct amdgpu_ualink_station_config *stations); +int psp_ual_set_npa_config(struct psp_context *psp, uint32_t intf_ver, + unsigned int vmid, bool enable); + #endif -- 2.55.0