Lines Matching refs:psp

68 static int psp_v13_0_init_microcode(struct psp_context *psp)  in psp_v13_0_init_microcode()  argument
70 struct amdgpu_device *adev = psp->adev; in psp_v13_0_init_microcode()
91 err = psp_init_sos_microcode(psp, chip_name); in psp_v13_0_init_microcode()
96 err = psp_init_ta_microcode(&adev->psp, chip_name); in psp_v13_0_init_microcode()
105 err = psp_init_toc_microcode(psp, chip_name); in psp_v13_0_init_microcode()
108 err = psp_init_ta_microcode(psp, chip_name); in psp_v13_0_init_microcode()
115 err = psp_init_sos_microcode(psp, chip_name); in psp_v13_0_init_microcode()
119 err = psp_init_ta_microcode(psp, chip_name); in psp_v13_0_init_microcode()
130 static bool psp_v13_0_is_sos_alive(struct psp_context *psp) in psp_v13_0_is_sos_alive() argument
132 struct amdgpu_device *adev = psp->adev; in psp_v13_0_is_sos_alive()
140 static int psp_v13_0_wait_for_bootloader(struct psp_context *psp) in psp_v13_0_wait_for_bootloader() argument
142 struct amdgpu_device *adev = psp->adev; in psp_v13_0_wait_for_bootloader()
150 ret = psp_wait_for(psp, in psp_v13_0_wait_for_bootloader()
163 static int psp_v13_0_bootloader_load_component(struct psp_context *psp, in psp_v13_0_bootloader_load_component() argument
169 struct amdgpu_device *adev = psp->adev; in psp_v13_0_bootloader_load_component()
174 if (psp_v13_0_is_sos_alive(psp)) in psp_v13_0_bootloader_load_component()
177 ret = psp_v13_0_wait_for_bootloader(psp); in psp_v13_0_bootloader_load_component()
181 memset(psp->fw_pri_buf, 0, PSP_1_MEG); in psp_v13_0_bootloader_load_component()
184 memcpy(psp->fw_pri_buf, bin_desc->start_addr, bin_desc->size_bytes); in psp_v13_0_bootloader_load_component()
188 (uint32_t)(psp->fw_pri_mc_addr >> 20)); in psp_v13_0_bootloader_load_component()
193 ret = psp_v13_0_wait_for_bootloader(psp); in psp_v13_0_bootloader_load_component()
198 static int psp_v13_0_bootloader_load_kdb(struct psp_context *psp) in psp_v13_0_bootloader_load_kdb() argument
200 return psp_v13_0_bootloader_load_component(psp, &psp->kdb, PSP_BL__LOAD_KEY_DATABASE); in psp_v13_0_bootloader_load_kdb()
203 static int psp_v13_0_bootloader_load_spl(struct psp_context *psp) in psp_v13_0_bootloader_load_spl() argument
205 return psp_v13_0_bootloader_load_component(psp, &psp->kdb, PSP_BL__LOAD_TOS_SPL_TABLE); in psp_v13_0_bootloader_load_spl()
208 static int psp_v13_0_bootloader_load_sysdrv(struct psp_context *psp) in psp_v13_0_bootloader_load_sysdrv() argument
210 return psp_v13_0_bootloader_load_component(psp, &psp->sys, PSP_BL__LOAD_SYSDRV); in psp_v13_0_bootloader_load_sysdrv()
213 static int psp_v13_0_bootloader_load_soc_drv(struct psp_context *psp) in psp_v13_0_bootloader_load_soc_drv() argument
215 return psp_v13_0_bootloader_load_component(psp, &psp->soc_drv, PSP_BL__LOAD_SOCDRV); in psp_v13_0_bootloader_load_soc_drv()
218 static int psp_v13_0_bootloader_load_intf_drv(struct psp_context *psp) in psp_v13_0_bootloader_load_intf_drv() argument
220 return psp_v13_0_bootloader_load_component(psp, &psp->intf_drv, PSP_BL__LOAD_INTFDRV); in psp_v13_0_bootloader_load_intf_drv()
223 static int psp_v13_0_bootloader_load_dbg_drv(struct psp_context *psp) in psp_v13_0_bootloader_load_dbg_drv() argument
225 return psp_v13_0_bootloader_load_component(psp, &psp->dbg_drv, PSP_BL__LOAD_DBGDRV); in psp_v13_0_bootloader_load_dbg_drv()
228 static int psp_v13_0_bootloader_load_ras_drv(struct psp_context *psp) in psp_v13_0_bootloader_load_ras_drv() argument
230 return psp_v13_0_bootloader_load_component(psp, &psp->ras_drv, PSP_BL__LOAD_RASDRV); in psp_v13_0_bootloader_load_ras_drv()
234 static int psp_v13_0_bootloader_load_sos(struct psp_context *psp) in psp_v13_0_bootloader_load_sos() argument
238 struct amdgpu_device *adev = psp->adev; in psp_v13_0_bootloader_load_sos()
243 if (psp_v13_0_is_sos_alive(psp)) in psp_v13_0_bootloader_load_sos()
246 ret = psp_v13_0_wait_for_bootloader(psp); in psp_v13_0_bootloader_load_sos()
250 memset(psp->fw_pri_buf, 0, PSP_1_MEG); in psp_v13_0_bootloader_load_sos()
253 memcpy(psp->fw_pri_buf, psp->sos.start_addr, psp->sos.size_bytes); in psp_v13_0_bootloader_load_sos()
257 (uint32_t)(psp->fw_pri_mc_addr >> 20)); in psp_v13_0_bootloader_load_sos()
264 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_81), in psp_v13_0_bootloader_load_sos()
271 static int psp_v13_0_ring_init(struct psp_context *psp, in psp_v13_0_ring_init() argument
276 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_init()
278 ring = &psp->km_ring; in psp_v13_0_ring_init()
297 static int psp_v13_0_ring_stop(struct psp_context *psp, in psp_v13_0_ring_stop() argument
301 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_stop()
310 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_101), in psp_v13_0_ring_stop()
319 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_64), in psp_v13_0_ring_stop()
326 static int psp_v13_0_ring_create(struct psp_context *psp, in psp_v13_0_ring_create() argument
331 struct psp_ring *ring = &psp->km_ring; in psp_v13_0_ring_create()
332 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_create()
335 ret = psp_v13_0_ring_stop(psp, ring_type); in psp_v13_0_ring_create()
356 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_101), in psp_v13_0_ring_create()
361 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_64), in psp_v13_0_ring_create()
386 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_64), in psp_v13_0_ring_create()
393 static int psp_v13_0_ring_destroy(struct psp_context *psp, in psp_v13_0_ring_destroy() argument
397 struct psp_ring *ring = &psp->km_ring; in psp_v13_0_ring_destroy()
398 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_destroy()
400 ret = psp_v13_0_ring_stop(psp, ring_type); in psp_v13_0_ring_destroy()
411 static uint32_t psp_v13_0_ring_get_wptr(struct psp_context *psp) in psp_v13_0_ring_get_wptr() argument
414 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_get_wptr()
424 static void psp_v13_0_ring_set_wptr(struct psp_context *psp, uint32_t value) in psp_v13_0_ring_set_wptr() argument
426 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_set_wptr()
436 static int psp_v13_0_memory_training_send_msg(struct psp_context *psp, int msg) in psp_v13_0_memory_training_send_msg() argument
442 struct amdgpu_device *adev = psp->adev; in psp_v13_0_memory_training_send_msg()
444 data_32 = (psp->mem_train_ctx.c2p_train_data_offset >> 20); in psp_v13_0_memory_training_send_msg()
450 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35), in psp_v13_0_memory_training_send_msg()
468 static int psp_v13_0_memory_training(struct psp_context *psp, uint32_t ops) in psp_v13_0_memory_training() argument
470 struct psp_memory_training_context *ctx = &psp->mem_train_ctx; in psp_v13_0_memory_training()
472 struct amdgpu_device *adev = psp->adev; in psp_v13_0_memory_training()
486 if (psp_v13_0_is_sos_alive(psp)) { in psp_v13_0_memory_training()
551 ret = psp_v13_0_memory_training_send_msg(psp, PSP_BL__DRAM_LONG_TRAIN); in psp_v13_0_memory_training()
570 …amdgpu_device_vram_access(psp->adev, ctx->p2c_train_data_offset, ctx->sys_cache, ctx->train_data_s… in psp_v13_0_memory_training()
574 …amdgpu_device_vram_access(psp->adev, ctx->c2p_train_data_offset, ctx->sys_cache, ctx->train_data_s… in psp_v13_0_memory_training()
578 ret = psp_v13_0_memory_training_send_msg(psp, (amdgpu_force_long_training > 0) ? in psp_v13_0_memory_training()
589 static int psp_v13_0_load_usbc_pd_fw(struct psp_context *psp, uint64_t fw_pri_mc_addr) in psp_v13_0_load_usbc_pd_fw() argument
591 struct amdgpu_device *adev = psp->adev; in psp_v13_0_load_usbc_pd_fw()
602 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35), in psp_v13_0_load_usbc_pd_fw()
632 static int psp_v13_0_read_usbc_pd_fw(struct psp_context *psp, uint32_t *fw_ver) in psp_v13_0_read_usbc_pd_fw() argument
634 struct amdgpu_device *adev = psp->adev; in psp_v13_0_read_usbc_pd_fw()
639 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35), in psp_v13_0_read_usbc_pd_fw()
647 static int psp_v13_0_exec_spi_cmd(struct psp_context *psp, int cmd) in psp_v13_0_exec_spi_cmd() argument
650 struct amdgpu_device *adev = psp->adev; in psp_v13_0_exec_spi_cmd()
663 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_115), in psp_v13_0_exec_spi_cmd()
680 static int psp_v13_0_update_spirom(struct psp_context *psp, in psp_v13_0_update_spirom() argument
683 struct amdgpu_device *adev = psp->adev; in psp_v13_0_update_spirom()
687 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_115), in psp_v13_0_update_spirom()
696 ret = psp_v13_0_exec_spi_cmd(psp, C2PMSG_CMD_SPI_UPDATE_ROM_IMAGE_ADDR_LO); in psp_v13_0_update_spirom()
702 ret = psp_v13_0_exec_spi_cmd(psp, C2PMSG_CMD_SPI_UPDATE_ROM_IMAGE_ADDR_HI); in psp_v13_0_update_spirom()
706 psp->vbflash_done = true; in psp_v13_0_update_spirom()
708 ret = psp_v13_0_exec_spi_cmd(psp, C2PMSG_CMD_SPI_UPDATE_FLASH_IMAGE); in psp_v13_0_update_spirom()
715 static int psp_v13_0_vbflash_status(struct psp_context *psp) in psp_v13_0_vbflash_status() argument
717 struct amdgpu_device *adev = psp->adev; in psp_v13_0_vbflash_status()
745 void psp_v13_0_set_psp_funcs(struct psp_context *psp) in psp_v13_0_set_psp_funcs() argument
747 psp->funcs = &psp_v13_0_funcs; in psp_v13_0_set_psp_funcs()