summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c
diff options
context:
space:
mode:
authorLang Yu <Lang.Yu@amd.com>2023-10-07 12:43:13 +0800
committerAlex Deucher <alexander.deucher@amd.com>2023-10-13 10:59:24 -0400
commit617b472431ad42d437fe3ad94efc0b61397252ec (patch)
treea901bd48fa022bdc7e64beaa1e93448f81dc669a /drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c
parent558fcb7d1157a902c5ca880289e78d121fc3a484 (diff)
drm/amdgpu/umsch: fix psp frontdoor loading
These changes are missed in rebase. Signed-off-by: Lang Yu <Lang.Yu@amd.com> Reviewed-by: Veerabadhran Gopalakrishnan <Veerabadhran.Gopalakrishnan@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c35
1 files changed, 12 insertions, 23 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c
index 4825c3353db4..8889006cdd9d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_umsch_mm.c
@@ -76,17 +76,6 @@ struct umsch_mm_test {
uint32_t num_queues;
};
-int umsch_mm_psp_update_sram(struct amdgpu_device *adev, u32 ucode_size)
-{
- struct amdgpu_firmware_info ucode = {
- .ucode_id = AMDGPU_UCODE_ID_UMSCH_MM_CMD_BUFFER,
- .mc_addr = adev->umsch_mm.cmd_buf_gpu_addr,
- .ucode_size = ucode_size,
- };
-
- return psp_execute_ip_fw_load(&adev->psp, &ucode);
-}
-
static int map_ring_data(struct amdgpu_device *adev, struct amdgpu_vm *vm,
struct amdgpu_bo *bo, struct amdgpu_bo_va **bo_va,
uint64_t addr, uint32_t size)
@@ -693,15 +682,17 @@ int amdgpu_umsch_mm_allocate_ucode_data_buffer(struct amdgpu_umsch_mm *umsch)
return 0;
}
-void* amdgpu_umsch_mm_add_cmd(struct amdgpu_umsch_mm *umsch,
- void* cmd_ptr, uint32_t reg_offset, uint32_t reg_data)
+int amdgpu_umsch_mm_psp_execute_cmd_buf(struct amdgpu_umsch_mm *umsch)
{
- uint32_t* ptr = (uint32_t *)cmd_ptr;
-
- *ptr++ = (reg_offset << 2);
- *ptr++ = reg_data;
+ struct amdgpu_device *adev = umsch->ring.adev;
+ struct amdgpu_firmware_info ucode = {
+ .ucode_id = AMDGPU_UCODE_ID_UMSCH_MM_CMD_BUFFER,
+ .mc_addr = adev->umsch_mm.cmd_buf_gpu_addr,
+ .ucode_size = ((uintptr_t)adev->umsch_mm.cmd_buf_curr_ptr -
+ (uintptr_t)adev->umsch_mm.cmd_buf_ptr),
+ };
- return ptr;
+ return psp_execute_ip_fw_load(&adev->psp, &ucode);
}
static void umsch_mm_agdb_index_init(struct amdgpu_device *adev)
@@ -823,11 +814,9 @@ static int umsch_mm_hw_init(void *handle)
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
int r;
- if (adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT) {
- r = umsch_mm_load_microcode(&adev->umsch_mm);
- if (r)
- return r;
- }
+ r = umsch_mm_load_microcode(&adev->umsch_mm);
+ if (r)
+ return r;
umsch_mm_ring_start(&adev->umsch_mm);