Lines Matching refs:psp
88 static int psp_v11_0_init_microcode(struct psp_context *psp) in psp_v11_0_init_microcode() argument
90 struct amdgpu_device *adev = psp->adev; in psp_v11_0_init_microcode()
101 err = psp_init_sos_microcode(psp, ucode_prefix); in psp_v11_0_init_microcode()
104 err = psp_init_asd_microcode(psp, ucode_prefix); in psp_v11_0_init_microcode()
107 err = psp_init_ta_microcode(psp, ucode_prefix); in psp_v11_0_init_microcode()
108 adev->psp.securedisplay_context.context.bin_desc.size_bytes = 0; in psp_v11_0_init_microcode()
113 err = psp_init_sos_microcode(psp, ucode_prefix); in psp_v11_0_init_microcode()
116 err = psp_init_asd_microcode(psp, ucode_prefix); in psp_v11_0_init_microcode()
119 err = psp_init_ta_microcode(psp, ucode_prefix); in psp_v11_0_init_microcode()
120 adev->psp.securedisplay_context.context.bin_desc.size_bytes = 0; in psp_v11_0_init_microcode()
126 err = psp_init_sos_microcode(psp, ucode_prefix); in psp_v11_0_init_microcode()
129 err = psp_init_ta_microcode(psp, ucode_prefix); in psp_v11_0_init_microcode()
132 err = psp_init_asd_microcode(psp, ucode_prefix); in psp_v11_0_init_microcode()
135 err = psp_init_toc_microcode(psp, ucode_prefix); in psp_v11_0_init_microcode()
144 static int psp_v11_0_wait_for_bootloader(struct psp_context *psp) in psp_v11_0_wait_for_bootloader() argument
146 struct amdgpu_device *adev = psp->adev; in psp_v11_0_wait_for_bootloader()
154 ret = psp_wait_for(psp, in psp_v11_0_wait_for_bootloader()
167 static bool psp_v11_0_is_sos_alive(struct psp_context *psp) in psp_v11_0_is_sos_alive() argument
169 struct amdgpu_device *adev = psp->adev; in psp_v11_0_is_sos_alive()
177 static int psp_v11_0_bootloader_load_component(struct psp_context *psp, in psp_v11_0_bootloader_load_component() argument
183 struct amdgpu_device *adev = psp->adev; in psp_v11_0_bootloader_load_component()
188 if (psp_v11_0_is_sos_alive(psp)) in psp_v11_0_bootloader_load_component()
191 ret = psp_v11_0_wait_for_bootloader(psp); in psp_v11_0_bootloader_load_component()
196 psp_copy_fw(psp, bin_desc->start_addr, bin_desc->size_bytes); in psp_v11_0_bootloader_load_component()
200 (uint32_t)(psp->fw_pri_mc_addr >> 20)); in psp_v11_0_bootloader_load_component()
205 ret = psp_v11_0_wait_for_bootloader(psp); in psp_v11_0_bootloader_load_component()
210 static int psp_v11_0_bootloader_load_kdb(struct psp_context *psp) in psp_v11_0_bootloader_load_kdb() argument
212 return psp_v11_0_bootloader_load_component(psp, &psp->kdb, PSP_BL__LOAD_KEY_DATABASE); in psp_v11_0_bootloader_load_kdb()
215 static int psp_v11_0_bootloader_load_spl(struct psp_context *psp) in psp_v11_0_bootloader_load_spl() argument
217 return psp_v11_0_bootloader_load_component(psp, &psp->spl, PSP_BL__LOAD_TOS_SPL_TABLE); in psp_v11_0_bootloader_load_spl()
220 static int psp_v11_0_bootloader_load_sysdrv(struct psp_context *psp) in psp_v11_0_bootloader_load_sysdrv() argument
222 return psp_v11_0_bootloader_load_component(psp, &psp->sys, PSP_BL__LOAD_SYSDRV); in psp_v11_0_bootloader_load_sysdrv()
225 static int psp_v11_0_bootloader_load_sos(struct psp_context *psp) in psp_v11_0_bootloader_load_sos() argument
229 struct amdgpu_device *adev = psp->adev; in psp_v11_0_bootloader_load_sos()
234 if (psp_v11_0_is_sos_alive(psp)) in psp_v11_0_bootloader_load_sos()
237 ret = psp_v11_0_wait_for_bootloader(psp); in psp_v11_0_bootloader_load_sos()
242 psp_copy_fw(psp, psp->sos.start_addr, psp->sos.size_bytes); in psp_v11_0_bootloader_load_sos()
246 (uint32_t)(psp->fw_pri_mc_addr >> 20)); in psp_v11_0_bootloader_load_sos()
253 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_81), in psp_v11_0_bootloader_load_sos()
260 static int psp_v11_0_ring_stop(struct psp_context *psp, in psp_v11_0_ring_stop() argument
264 struct amdgpu_device *adev = psp->adev; in psp_v11_0_ring_stop()
279 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_101), in psp_v11_0_ring_stop()
282 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_64), in psp_v11_0_ring_stop()
288 static int psp_v11_0_ring_create(struct psp_context *psp, in psp_v11_0_ring_create() argument
293 struct psp_ring *ring = &psp->km_ring; in psp_v11_0_ring_create()
294 struct amdgpu_device *adev = psp->adev; in psp_v11_0_ring_create()
298 ret = psp_v11_0_ring_stop(psp, ring_type); in psp_v11_0_ring_create()
319 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_101), in psp_v11_0_ring_create()
324 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_64), in psp_v11_0_ring_create()
349 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_64), in psp_v11_0_ring_create()
357 static int psp_v11_0_ring_destroy(struct psp_context *psp, in psp_v11_0_ring_destroy() argument
361 struct psp_ring *ring = &psp->km_ring; in psp_v11_0_ring_destroy()
362 struct amdgpu_device *adev = psp->adev; in psp_v11_0_ring_destroy()
364 ret = psp_v11_0_ring_stop(psp, ring_type); in psp_v11_0_ring_destroy()
375 static int psp_v11_0_mode1_reset(struct psp_context *psp) in psp_v11_0_mode1_reset() argument
379 struct amdgpu_device *adev = psp->adev; in psp_v11_0_mode1_reset()
383 ret = psp_wait_for(psp, offset, 0x80000000, 0x8000FFFF, false); in psp_v11_0_mode1_reset()
397 ret = psp_wait_for(psp, offset, 0x80000000, 0x80000000, false); in psp_v11_0_mode1_reset()
409 static int psp_v11_0_memory_training_send_msg(struct psp_context *psp, int msg) in psp_v11_0_memory_training_send_msg() argument
415 struct amdgpu_device *adev = psp->adev; in psp_v11_0_memory_training_send_msg()
417 data_32 = (psp->mem_train_ctx.c2p_train_data_offset >> 20); in psp_v11_0_memory_training_send_msg()
423 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_35), in psp_v11_0_memory_training_send_msg()
443 static int psp_v11_0_memory_training(struct psp_context *psp, uint32_t ops) in psp_v11_0_memory_training() argument
445 struct psp_memory_training_context *ctx = &psp->mem_train_ctx; in psp_v11_0_memory_training()
447 struct amdgpu_device *adev = psp->adev; in psp_v11_0_memory_training()
461 if (psp_v11_0_is_sos_alive(psp)) { in psp_v11_0_memory_training()
526 ret = psp_v11_0_memory_training_send_msg(psp, PSP_BL__DRAM_LONG_TRAIN); in psp_v11_0_memory_training()
545 …amdgpu_device_vram_access(psp->adev, ctx->p2c_train_data_offset, ctx->sys_cache, ctx->train_data_s… in psp_v11_0_memory_training()
549 …amdgpu_device_vram_access(psp->adev, ctx->c2p_train_data_offset, ctx->sys_cache, ctx->train_data_s… in psp_v11_0_memory_training()
553 ret = psp_v11_0_memory_training_send_msg(psp, (amdgpu_force_long_training > 0) ? in psp_v11_0_memory_training()
564 static uint32_t psp_v11_0_ring_get_wptr(struct psp_context *psp) in psp_v11_0_ring_get_wptr() argument
567 struct amdgpu_device *adev = psp->adev; in psp_v11_0_ring_get_wptr()
570 data = psp->km_ring.ring_wptr; in psp_v11_0_ring_get_wptr()
577 static void psp_v11_0_ring_set_wptr(struct psp_context *psp, uint32_t value) in psp_v11_0_ring_set_wptr() argument
579 struct amdgpu_device *adev = psp->adev; in psp_v11_0_ring_set_wptr()
584 psp->km_ring.ring_wptr = value; in psp_v11_0_ring_set_wptr()
589 static int psp_v11_0_load_usbc_pd_fw(struct psp_context *psp, uint64_t fw_pri_mc_addr) in psp_v11_0_load_usbc_pd_fw() argument
591 struct amdgpu_device *adev = psp->adev; in psp_v11_0_load_usbc_pd_fw()
602 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_35), in psp_v11_0_load_usbc_pd_fw()
632 static int psp_v11_0_read_usbc_pd_fw(struct psp_context *psp, uint32_t *fw_ver) in psp_v11_0_read_usbc_pd_fw() argument
634 struct amdgpu_device *adev = psp->adev; in psp_v11_0_read_usbc_pd_fw()
639 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_35), in psp_v11_0_read_usbc_pd_fw()
664 void psp_v11_0_set_psp_funcs(struct psp_context *psp) in psp_v11_0_set_psp_funcs() argument
666 psp->funcs = &psp_v11_0_funcs; in psp_v11_0_set_psp_funcs()