Commit ac1509d1 authored by Candice Li's avatar Candice Li Committed by Alex Deucher

drm/amdgpu: Create common PSP TA load function

Creat common PSP TA load function and update PSP ta_mem_context
with size information.
Signed-off-by: default avatarCandice Li <candice.li@amd.com>
Reviewed-by: default avatarJohn Clements <john.clements@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 68e7d0ba
...@@ -901,22 +901,20 @@ int psp_reg_program(struct psp_context *psp, enum psp_reg_prog_id reg, ...@@ -901,22 +901,20 @@ int psp_reg_program(struct psp_context *psp, enum psp_reg_prog_id reg,
static void psp_prep_ta_load_cmd_buf(struct psp_gfx_cmd_resp *cmd, static void psp_prep_ta_load_cmd_buf(struct psp_gfx_cmd_resp *cmd,
uint64_t ta_bin_mc, uint64_t ta_bin_mc,
uint32_t ta_bin_size, uint32_t ta_bin_size,
uint64_t ta_shared_mc, struct ta_mem_context *mem_ctx)
uint32_t ta_shared_size)
{ {
cmd->cmd_id = GFX_CMD_ID_LOAD_TA; cmd->cmd_id = GFX_CMD_ID_LOAD_TA;
cmd->cmd.cmd_load_ta.app_phy_addr_lo = lower_32_bits(ta_bin_mc); cmd->cmd.cmd_load_ta.app_phy_addr_lo = lower_32_bits(ta_bin_mc);
cmd->cmd.cmd_load_ta.app_phy_addr_hi = upper_32_bits(ta_bin_mc); cmd->cmd.cmd_load_ta.app_phy_addr_hi = upper_32_bits(ta_bin_mc);
cmd->cmd.cmd_load_ta.app_len = ta_bin_size; cmd->cmd.cmd_load_ta.app_len = ta_bin_size;
cmd->cmd.cmd_load_ta.cmd_buf_phy_addr_lo = lower_32_bits(ta_shared_mc); cmd->cmd.cmd_load_ta.cmd_buf_phy_addr_lo = lower_32_bits(mem_ctx->shared_mc_addr);
cmd->cmd.cmd_load_ta.cmd_buf_phy_addr_hi = upper_32_bits(ta_shared_mc); cmd->cmd.cmd_load_ta.cmd_buf_phy_addr_hi = upper_32_bits(mem_ctx->shared_mc_addr);
cmd->cmd.cmd_load_ta.cmd_buf_len = ta_shared_size; cmd->cmd.cmd_load_ta.cmd_buf_len = mem_ctx->shared_mem_size;
} }
static int psp_ta_init_shared_buf(struct psp_context *psp, static int psp_ta_init_shared_buf(struct psp_context *psp,
struct ta_mem_context *mem_ctx, struct ta_mem_context *mem_ctx)
uint32_t shared_mem_size)
{ {
int ret; int ret;
...@@ -924,8 +922,8 @@ static int psp_ta_init_shared_buf(struct psp_context *psp, ...@@ -924,8 +922,8 @@ static int psp_ta_init_shared_buf(struct psp_context *psp,
* Allocate 16k memory aligned to 4k from Frame Buffer (local * Allocate 16k memory aligned to 4k from Frame Buffer (local
* physical) for ta to host memory * physical) for ta to host memory
*/ */
ret = amdgpu_bo_create_kernel(psp->adev, shared_mem_size, PAGE_SIZE, ret = amdgpu_bo_create_kernel(psp->adev, mem_ctx->shared_mem_size,
AMDGPU_GEM_DOMAIN_VRAM, PAGE_SIZE, AMDGPU_GEM_DOMAIN_VRAM,
&mem_ctx->shared_bo, &mem_ctx->shared_bo,
&mem_ctx->shared_mc_addr, &mem_ctx->shared_mc_addr,
&mem_ctx->shared_buf); &mem_ctx->shared_buf);
...@@ -941,8 +939,7 @@ static void psp_ta_free_shared_buf(struct ta_mem_context *mem_ctx) ...@@ -941,8 +939,7 @@ static void psp_ta_free_shared_buf(struct ta_mem_context *mem_ctx)
static int psp_xgmi_init_shared_buf(struct psp_context *psp) static int psp_xgmi_init_shared_buf(struct psp_context *psp)
{ {
return psp_ta_init_shared_buf(psp, &psp->xgmi_context.context.mem_context, return psp_ta_init_shared_buf(psp, &psp->xgmi_context.context.mem_context);
PSP_XGMI_SHARED_MEM_SIZE);
} }
static void psp_prep_ta_invoke_cmd_buf(struct psp_gfx_cmd_resp *cmd, static void psp_prep_ta_invoke_cmd_buf(struct psp_gfx_cmd_resp *cmd,
...@@ -971,31 +968,27 @@ static int psp_ta_invoke(struct psp_context *psp, ...@@ -971,31 +968,27 @@ static int psp_ta_invoke(struct psp_context *psp,
return ret; return ret;
} }
static int psp_xgmi_load(struct psp_context *psp) static int psp_ta_load(struct psp_context *psp,
struct psp_bin_desc *bin_desc,
struct ta_context *context)
{ {
int ret; int ret;
struct psp_gfx_cmd_resp *cmd; struct psp_gfx_cmd_resp *cmd;
/*
* TODO: bypass the loading in sriov for now
*/
cmd = acquire_psp_cmd_buf(psp); cmd = acquire_psp_cmd_buf(psp);
psp_copy_fw(psp, psp->xgmi.start_addr, psp->xgmi.size_bytes); psp_copy_fw(psp, bin_desc->start_addr, bin_desc->size_bytes);
psp_prep_ta_load_cmd_buf(cmd, psp_prep_ta_load_cmd_buf(cmd,
psp->fw_pri_mc_addr, psp->fw_pri_mc_addr,
psp->xgmi.size_bytes, bin_desc->size_bytes,
psp->xgmi_context.context.mem_context.shared_mc_addr, &context->mem_context);
PSP_XGMI_SHARED_MEM_SIZE);
ret = psp_cmd_submit_buf(psp, NULL, cmd, ret = psp_cmd_submit_buf(psp, NULL, cmd,
psp->fence_buf_mc_addr); psp->fence_buf_mc_addr);
if (!ret) { if (!ret) {
psp->xgmi_context.context.initialized = true; context->session_id = cmd->resp.session_id;
psp->xgmi_context.context.session_id = cmd->resp.session_id;
} }
release_psp_cmd_buf(psp); release_psp_cmd_buf(psp);
...@@ -1003,6 +996,11 @@ static int psp_xgmi_load(struct psp_context *psp) ...@@ -1003,6 +996,11 @@ static int psp_xgmi_load(struct psp_context *psp)
return ret; return ret;
} }
static int psp_xgmi_load(struct psp_context *psp)
{
return psp_ta_load(psp, &psp->xgmi, &psp->xgmi_context.context);
}
static int psp_xgmi_unload(struct psp_context *psp) static int psp_xgmi_unload(struct psp_context *psp)
{ {
return psp_ta_unload(psp, psp->xgmi_context.context.session_id); return psp_ta_unload(psp, psp->xgmi_context.context.session_id);
...@@ -1051,6 +1049,8 @@ int psp_xgmi_initialize(struct psp_context *psp, bool set_extended_data, bool lo ...@@ -1051,6 +1049,8 @@ int psp_xgmi_initialize(struct psp_context *psp, bool set_extended_data, bool lo
if (!load_ta) if (!load_ta)
goto invoke; goto invoke;
psp->xgmi_context.context.mem_context.shared_mem_size = PSP_XGMI_SHARED_MEM_SIZE;
if (!psp->xgmi_context.context.initialized) { if (!psp->xgmi_context.context.initialized) {
ret = psp_xgmi_init_shared_buf(psp); ret = psp_xgmi_init_shared_buf(psp);
if (ret) if (ret)
...@@ -1059,7 +1059,9 @@ int psp_xgmi_initialize(struct psp_context *psp, bool set_extended_data, bool lo ...@@ -1059,7 +1059,9 @@ int psp_xgmi_initialize(struct psp_context *psp, bool set_extended_data, bool lo
/* Load XGMI TA */ /* Load XGMI TA */
ret = psp_xgmi_load(psp); ret = psp_xgmi_load(psp);
if (ret) if (!ret)
psp->xgmi_context.context.initialized = true;
else
return ret; return ret;
invoke: invoke:
...@@ -1281,57 +1283,12 @@ int psp_xgmi_set_topology_info(struct psp_context *psp, ...@@ -1281,57 +1283,12 @@ int psp_xgmi_set_topology_info(struct psp_context *psp,
// ras begin // ras begin
static int psp_ras_init_shared_buf(struct psp_context *psp) static int psp_ras_init_shared_buf(struct psp_context *psp)
{ {
return psp_ta_init_shared_buf(psp, &psp->ras_context.context.mem_context, return psp_ta_init_shared_buf(psp, &psp->ras_context.context.mem_context);
PSP_RAS_SHARED_MEM_SIZE);
} }
static int psp_ras_load(struct psp_context *psp) static int psp_ras_load(struct psp_context *psp)
{ {
int ret; return psp_ta_load(psp, &psp->ras, &psp->ras_context.context);
struct psp_gfx_cmd_resp *cmd;
struct ta_ras_shared_memory *ras_cmd;
/*
* TODO: bypass the loading in sriov for now
*/
if (amdgpu_sriov_vf(psp->adev))
return 0;
psp_copy_fw(psp, psp->ras.start_addr, psp->ras.size_bytes);
ras_cmd = (struct ta_ras_shared_memory *)psp->ras_context.context.mem_context.shared_buf;
if (psp->adev->gmc.xgmi.connected_to_cpu)
ras_cmd->ras_in_message.init_flags.poison_mode_en = 1;
else
ras_cmd->ras_in_message.init_flags.dgpu_mode = 1;
cmd = acquire_psp_cmd_buf(psp);
psp_prep_ta_load_cmd_buf(cmd,
psp->fw_pri_mc_addr,
psp->ras.size_bytes,
psp->ras_context.context.mem_context.shared_mc_addr,
PSP_RAS_SHARED_MEM_SIZE);
ret = psp_cmd_submit_buf(psp, NULL, cmd,
psp->fence_buf_mc_addr);
if (!ret) {
psp->ras_context.context.session_id = cmd->resp.session_id;
if (!ras_cmd->ras_status)
psp->ras_context.context.initialized = true;
else
dev_warn(psp->adev->dev, "RAS Init Status: 0x%X\n", ras_cmd->ras_status);
}
release_psp_cmd_buf(psp);
if (ret || ras_cmd->ras_status)
amdgpu_ras_fini(psp->adev);
return ret;
} }
static int psp_ras_unload(struct psp_context *psp) static int psp_ras_unload(struct psp_context *psp)
...@@ -1458,6 +1415,7 @@ static int psp_ras_initialize(struct psp_context *psp) ...@@ -1458,6 +1415,7 @@ static int psp_ras_initialize(struct psp_context *psp)
int ret; int ret;
uint32_t boot_cfg = 0xFF; uint32_t boot_cfg = 0xFF;
struct amdgpu_device *adev = psp->adev; struct amdgpu_device *adev = psp->adev;
struct ta_ras_shared_memory *ras_cmd;
/* /*
* TODO: bypass the initialize in sriov for now * TODO: bypass the initialize in sriov for now
...@@ -1512,17 +1470,33 @@ static int psp_ras_initialize(struct psp_context *psp) ...@@ -1512,17 +1470,33 @@ static int psp_ras_initialize(struct psp_context *psp)
} }
} }
psp->ras_context.context.mem_context.shared_mem_size = PSP_RAS_SHARED_MEM_SIZE;
if (!psp->ras_context.context.initialized) { if (!psp->ras_context.context.initialized) {
ret = psp_ras_init_shared_buf(psp); ret = psp_ras_init_shared_buf(psp);
if (ret) if (ret)
return ret; return ret;
} }
ras_cmd = (struct ta_ras_shared_memory *)psp->ras_context.context.mem_context.shared_buf;
memset(ras_cmd, 0, sizeof(struct ta_ras_shared_memory));
if (psp->adev->gmc.xgmi.connected_to_cpu)
ras_cmd->ras_in_message.init_flags.poison_mode_en = 1;
else
ras_cmd->ras_in_message.init_flags.dgpu_mode = 1;
ret = psp_ras_load(psp); ret = psp_ras_load(psp);
if (ret)
return ret;
return 0; if (!ret && !ras_cmd->ras_status)
psp->ras_context.context.initialized = true;
else {
if (ras_cmd->ras_status)
dev_warn(psp->adev->dev, "RAS Init Status: 0x%X\n", ras_cmd->ras_status);
amdgpu_ras_fini(psp->adev);
}
return ret;
} }
int psp_ras_trigger_error(struct psp_context *psp, int psp_ras_trigger_error(struct psp_context *psp,
...@@ -1556,43 +1530,12 @@ int psp_ras_trigger_error(struct psp_context *psp, ...@@ -1556,43 +1530,12 @@ int psp_ras_trigger_error(struct psp_context *psp,
// HDCP start // HDCP start
static int psp_hdcp_init_shared_buf(struct psp_context *psp) static int psp_hdcp_init_shared_buf(struct psp_context *psp)
{ {
return psp_ta_init_shared_buf(psp, &psp->hdcp_context.context.mem_context, return psp_ta_init_shared_buf(psp, &psp->hdcp_context.context.mem_context);
PSP_HDCP_SHARED_MEM_SIZE);
} }
static int psp_hdcp_load(struct psp_context *psp) static int psp_hdcp_load(struct psp_context *psp)
{ {
int ret; return psp_ta_load(psp, &psp->hdcp, &psp->hdcp_context.context);
struct psp_gfx_cmd_resp *cmd;
/*
* TODO: bypass the loading in sriov for now
*/
if (amdgpu_sriov_vf(psp->adev))
return 0;
psp_copy_fw(psp, psp->hdcp.start_addr,
psp->hdcp.size_bytes);
cmd = acquire_psp_cmd_buf(psp);
psp_prep_ta_load_cmd_buf(cmd,
psp->fw_pri_mc_addr,
psp->hdcp.size_bytes,
psp->hdcp_context.context.mem_context.shared_mc_addr,
PSP_HDCP_SHARED_MEM_SIZE);
ret = psp_cmd_submit_buf(psp, NULL, cmd, psp->fence_buf_mc_addr);
if (!ret) {
psp->hdcp_context.context.initialized = true;
psp->hdcp_context.context.session_id = cmd->resp.session_id;
mutex_init(&psp->hdcp_context.mutex);
}
release_psp_cmd_buf(psp);
return ret;
} }
static int psp_hdcp_initialize(struct psp_context *psp) static int psp_hdcp_initialize(struct psp_context *psp)
{ {
...@@ -1610,6 +1553,8 @@ static int psp_hdcp_initialize(struct psp_context *psp) ...@@ -1610,6 +1553,8 @@ static int psp_hdcp_initialize(struct psp_context *psp)
return 0; return 0;
} }
psp->hdcp_context.context.mem_context.shared_mem_size = PSP_HDCP_SHARED_MEM_SIZE;
if (!psp->hdcp_context.context.initialized) { if (!psp->hdcp_context.context.initialized) {
ret = psp_hdcp_init_shared_buf(psp); ret = psp_hdcp_init_shared_buf(psp);
if (ret) if (ret)
...@@ -1617,10 +1562,12 @@ static int psp_hdcp_initialize(struct psp_context *psp) ...@@ -1617,10 +1562,12 @@ static int psp_hdcp_initialize(struct psp_context *psp)
} }
ret = psp_hdcp_load(psp); ret = psp_hdcp_load(psp);
if (ret) if (!ret) {
return ret; psp->hdcp_context.context.initialized = true;
mutex_init(&psp->hdcp_context.mutex);
}
return 0; return ret;
} }
static int psp_hdcp_unload(struct psp_context *psp) static int psp_hdcp_unload(struct psp_context *psp)
...@@ -1673,42 +1620,12 @@ static int psp_hdcp_terminate(struct psp_context *psp) ...@@ -1673,42 +1620,12 @@ static int psp_hdcp_terminate(struct psp_context *psp)
// DTM start // DTM start
static int psp_dtm_init_shared_buf(struct psp_context *psp) static int psp_dtm_init_shared_buf(struct psp_context *psp)
{ {
return psp_ta_init_shared_buf(psp, &psp->dtm_context.context.mem_context, return psp_ta_init_shared_buf(psp, &psp->dtm_context.context.mem_context);
PSP_DTM_SHARED_MEM_SIZE);
} }
static int psp_dtm_load(struct psp_context *psp) static int psp_dtm_load(struct psp_context *psp)
{ {
int ret; return psp_ta_load(psp, &psp->dtm, &psp->dtm_context.context);
struct psp_gfx_cmd_resp *cmd;
/*
* TODO: bypass the loading in sriov for now
*/
if (amdgpu_sriov_vf(psp->adev))
return 0;
psp_copy_fw(psp, psp->dtm.start_addr, psp->dtm.size_bytes);
cmd = acquire_psp_cmd_buf(psp);
psp_prep_ta_load_cmd_buf(cmd,
psp->fw_pri_mc_addr,
psp->dtm.size_bytes,
psp->dtm_context.context.mem_context.shared_mc_addr,
PSP_DTM_SHARED_MEM_SIZE);
ret = psp_cmd_submit_buf(psp, NULL, cmd, psp->fence_buf_mc_addr);
if (!ret) {
psp->dtm_context.context.initialized = true;
psp->dtm_context.context.session_id = cmd->resp.session_id;
mutex_init(&psp->dtm_context.mutex);
}
release_psp_cmd_buf(psp);
return ret;
} }
static int psp_dtm_initialize(struct psp_context *psp) static int psp_dtm_initialize(struct psp_context *psp)
...@@ -1727,6 +1644,8 @@ static int psp_dtm_initialize(struct psp_context *psp) ...@@ -1727,6 +1644,8 @@ static int psp_dtm_initialize(struct psp_context *psp)
return 0; return 0;
} }
psp->dtm_context.context.mem_context.shared_mem_size = PSP_DTM_SHARED_MEM_SIZE;
if (!psp->dtm_context.context.initialized) { if (!psp->dtm_context.context.initialized) {
ret = psp_dtm_init_shared_buf(psp); ret = psp_dtm_init_shared_buf(psp);
if (ret) if (ret)
...@@ -1734,10 +1653,12 @@ static int psp_dtm_initialize(struct psp_context *psp) ...@@ -1734,10 +1653,12 @@ static int psp_dtm_initialize(struct psp_context *psp)
} }
ret = psp_dtm_load(psp); ret = psp_dtm_load(psp);
if (ret) if (!ret) {
return ret; psp->dtm_context.context.initialized = true;
mutex_init(&psp->dtm_context.mutex);
}
return 0; return ret;
} }
static int psp_dtm_unload(struct psp_context *psp) static int psp_dtm_unload(struct psp_context *psp)
...@@ -1790,36 +1711,12 @@ static int psp_dtm_terminate(struct psp_context *psp) ...@@ -1790,36 +1711,12 @@ static int psp_dtm_terminate(struct psp_context *psp)
// RAP start // RAP start
static int psp_rap_init_shared_buf(struct psp_context *psp) static int psp_rap_init_shared_buf(struct psp_context *psp)
{ {
return psp_ta_init_shared_buf(psp, &psp->rap_context.context.mem_context, return psp_ta_init_shared_buf(psp, &psp->rap_context.context.mem_context);
PSP_RAP_SHARED_MEM_SIZE);
} }
static int psp_rap_load(struct psp_context *psp) static int psp_rap_load(struct psp_context *psp)
{ {
int ret; return psp_ta_load(psp, &psp->rap, &psp->rap_context.context);
struct psp_gfx_cmd_resp *cmd;
psp_copy_fw(psp, psp->rap.start_addr, psp->rap.size_bytes);
cmd = acquire_psp_cmd_buf(psp);
psp_prep_ta_load_cmd_buf(cmd,
psp->fw_pri_mc_addr,
psp->rap.size_bytes,
psp->rap_context.context.mem_context.shared_mc_addr,
PSP_RAP_SHARED_MEM_SIZE);
ret = psp_cmd_submit_buf(psp, NULL, cmd, psp->fence_buf_mc_addr);
if (!ret) {
psp->rap_context.context.initialized = true;
psp->rap_context.context.session_id = cmd->resp.session_id;
mutex_init(&psp->rap_context.mutex);
}
release_psp_cmd_buf(psp);
return ret;
} }
static int psp_rap_unload(struct psp_context *psp) static int psp_rap_unload(struct psp_context *psp)
...@@ -1844,6 +1741,8 @@ static int psp_rap_initialize(struct psp_context *psp) ...@@ -1844,6 +1741,8 @@ static int psp_rap_initialize(struct psp_context *psp)
return 0; return 0;
} }
psp->rap_context.context.mem_context.shared_mem_size = PSP_RAP_SHARED_MEM_SIZE;
if (!psp->rap_context.context.initialized) { if (!psp->rap_context.context.initialized) {
ret = psp_rap_init_shared_buf(psp); ret = psp_rap_init_shared_buf(psp);
if (ret) if (ret)
...@@ -1851,7 +1750,10 @@ static int psp_rap_initialize(struct psp_context *psp) ...@@ -1851,7 +1750,10 @@ static int psp_rap_initialize(struct psp_context *psp)
} }
ret = psp_rap_load(psp); ret = psp_rap_load(psp);
if (ret) if (!ret) {
psp->rap_context.context.initialized = true;
mutex_init(&psp->rap_context.mutex);
} else
return ret; return ret;
ret = psp_rap_invoke(psp, TA_CMD_RAP__INITIALIZE, &status); ret = psp_rap_invoke(psp, TA_CMD_RAP__INITIALIZE, &status);
...@@ -1923,35 +1825,13 @@ int psp_rap_invoke(struct psp_context *psp, uint32_t ta_cmd_id, enum ta_rap_stat ...@@ -1923,35 +1825,13 @@ int psp_rap_invoke(struct psp_context *psp, uint32_t ta_cmd_id, enum ta_rap_stat
static int psp_securedisplay_init_shared_buf(struct psp_context *psp) static int psp_securedisplay_init_shared_buf(struct psp_context *psp)
{ {
return psp_ta_init_shared_buf( return psp_ta_init_shared_buf(
psp, &psp->securedisplay_context.context.mem_context, psp, &psp->securedisplay_context.context.mem_context);
PSP_SECUREDISPLAY_SHARED_MEM_SIZE);
} }
static int psp_securedisplay_load(struct psp_context *psp) static int psp_securedisplay_load(struct psp_context *psp)
{ {
int ret; return psp_ta_load(psp, &psp->securedisplay,
struct psp_gfx_cmd_resp *cmd = acquire_psp_cmd_buf(psp); &psp->securedisplay_context.context);
memset(psp->fw_pri_buf, 0, PSP_1_MEG);
memcpy(psp->fw_pri_buf, psp->securedisplay.start_addr, psp->securedisplay.size_bytes);
psp_prep_ta_load_cmd_buf(cmd,
psp->fw_pri_mc_addr,
psp->securedisplay.size_bytes,
psp->securedisplay_context.context.mem_context.shared_mc_addr,
PSP_SECUREDISPLAY_SHARED_MEM_SIZE);
ret = psp_cmd_submit_buf(psp, NULL, cmd, psp->fence_buf_mc_addr);
if (!ret) {
psp->securedisplay_context.context.initialized = true;
psp->securedisplay_context.context.session_id = cmd->resp.session_id;
mutex_init(&psp->securedisplay_context.mutex);
}
release_psp_cmd_buf(psp);
return ret;
} }
static int psp_securedisplay_unload(struct psp_context *psp) static int psp_securedisplay_unload(struct psp_context *psp)
...@@ -1976,6 +1856,9 @@ static int psp_securedisplay_initialize(struct psp_context *psp) ...@@ -1976,6 +1856,9 @@ static int psp_securedisplay_initialize(struct psp_context *psp)
return 0; return 0;
} }
psp->securedisplay_context.context.mem_context.shared_mem_size =
PSP_SECUREDISPLAY_SHARED_MEM_SIZE;
if (!psp->securedisplay_context.context.initialized) { if (!psp->securedisplay_context.context.initialized) {
ret = psp_securedisplay_init_shared_buf(psp); ret = psp_securedisplay_init_shared_buf(psp);
if (ret) if (ret)
...@@ -1983,7 +1866,10 @@ static int psp_securedisplay_initialize(struct psp_context *psp) ...@@ -1983,7 +1866,10 @@ static int psp_securedisplay_initialize(struct psp_context *psp)
} }
ret = psp_securedisplay_load(psp); ret = psp_securedisplay_load(psp);
if (ret) if (!ret) {
psp->securedisplay_context.context.initialized = true;
mutex_init(&psp->securedisplay_context.mutex);
} else
return ret; return ret;
psp_prep_securedisplay_cmd_buf(psp, &securedisplay_cmd, psp_prep_securedisplay_cmd_buf(psp, &securedisplay_cmd,
......
...@@ -34,17 +34,19 @@ ...@@ -34,17 +34,19 @@
#define PSP_FENCE_BUFFER_SIZE 0x1000 #define PSP_FENCE_BUFFER_SIZE 0x1000
#define PSP_CMD_BUFFER_SIZE 0x1000 #define PSP_CMD_BUFFER_SIZE 0x1000
#define PSP_XGMI_SHARED_MEM_SIZE 0x4000
#define PSP_RAS_SHARED_MEM_SIZE 0x4000
#define PSP_1_MEG 0x100000 #define PSP_1_MEG 0x100000
#define PSP_TMR_SIZE(adev) ((adev)->asic_type == CHIP_ALDEBARAN ? 0x800000 : 0x400000) #define PSP_TMR_SIZE(adev) ((adev)->asic_type == CHIP_ALDEBARAN ? 0x800000 : 0x400000)
#define PSP_HDCP_SHARED_MEM_SIZE 0x4000
#define PSP_DTM_SHARED_MEM_SIZE 0x4000
#define PSP_RAP_SHARED_MEM_SIZE 0x4000
#define PSP_SECUREDISPLAY_SHARED_MEM_SIZE 0x4000
#define PSP_SHARED_MEM_SIZE 0x4000
#define PSP_FW_NAME_LEN 0x24 #define PSP_FW_NAME_LEN 0x24
enum psp_shared_mem_size {
PSP_XGMI_SHARED_MEM_SIZE = 0x4000,
PSP_RAS_SHARED_MEM_SIZE = 0x4000,
PSP_HDCP_SHARED_MEM_SIZE = 0x4000,
PSP_DTM_SHARED_MEM_SIZE = 0x4000,
PSP_RAP_SHARED_MEM_SIZE = 0x4000,
PSP_SECUREDISPLAY_SHARED_MEM_SIZE = 0x4000,
};
struct psp_context; struct psp_context;
struct psp_xgmi_node_info; struct psp_xgmi_node_info;
struct psp_xgmi_topology_info; struct psp_xgmi_topology_info;
...@@ -140,6 +142,7 @@ struct ta_mem_context { ...@@ -140,6 +142,7 @@ struct ta_mem_context {
struct amdgpu_bo *shared_bo; struct amdgpu_bo *shared_bo;
uint64_t shared_mc_addr; uint64_t shared_mc_addr;
void *shared_buf; void *shared_buf;
enum psp_shared_mem_size shared_mem_size;
}; };
struct ta_context { struct ta_context {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment