Lines Matching refs:psp
44 static int psp_v13_0_init_microcode(struct psp_context *psp) in psp_v13_0_init_microcode() argument
46 struct amdgpu_device *adev = psp->adev; in psp_v13_0_init_microcode()
63 err = psp_init_sos_microcode(psp, chip_name); in psp_v13_0_init_microcode()
66 err = psp_init_ta_microcode(&adev->psp, chip_name); in psp_v13_0_init_microcode()
72 err = psp_init_asd_microcode(psp, chip_name); in psp_v13_0_init_microcode()
75 err = psp_init_toc_microcode(psp, chip_name); in psp_v13_0_init_microcode()
78 err = psp_init_ta_microcode(psp, chip_name); in psp_v13_0_init_microcode()
89 static bool psp_v13_0_is_sos_alive(struct psp_context *psp) in psp_v13_0_is_sos_alive() argument
91 struct amdgpu_device *adev = psp->adev; in psp_v13_0_is_sos_alive()
99 static int psp_v13_0_wait_for_bootloader(struct psp_context *psp) in psp_v13_0_wait_for_bootloader() argument
101 struct amdgpu_device *adev = psp->adev; in psp_v13_0_wait_for_bootloader()
109 ret = psp_wait_for(psp, in psp_v13_0_wait_for_bootloader()
122 static int psp_v13_0_bootloader_load_component(struct psp_context *psp, in psp_v13_0_bootloader_load_component() argument
128 struct amdgpu_device *adev = psp->adev; in psp_v13_0_bootloader_load_component()
133 if (psp_v13_0_is_sos_alive(psp)) in psp_v13_0_bootloader_load_component()
136 ret = psp_v13_0_wait_for_bootloader(psp); in psp_v13_0_bootloader_load_component()
140 memset(psp->fw_pri_buf, 0, PSP_1_MEG); in psp_v13_0_bootloader_load_component()
143 memcpy(psp->fw_pri_buf, bin_desc->start_addr, bin_desc->size_bytes); in psp_v13_0_bootloader_load_component()
147 (uint32_t)(psp->fw_pri_mc_addr >> 20)); in psp_v13_0_bootloader_load_component()
152 ret = psp_v13_0_wait_for_bootloader(psp); in psp_v13_0_bootloader_load_component()
157 static int psp_v13_0_bootloader_load_kdb(struct psp_context *psp) in psp_v13_0_bootloader_load_kdb() argument
159 return psp_v13_0_bootloader_load_component(psp, &psp->kdb, PSP_BL__LOAD_KEY_DATABASE); in psp_v13_0_bootloader_load_kdb()
162 static int psp_v13_0_bootloader_load_sysdrv(struct psp_context *psp) in psp_v13_0_bootloader_load_sysdrv() argument
164 return psp_v13_0_bootloader_load_component(psp, &psp->sys, PSP_BL__LOAD_SYSDRV); in psp_v13_0_bootloader_load_sysdrv()
167 static int psp_v13_0_bootloader_load_soc_drv(struct psp_context *psp) in psp_v13_0_bootloader_load_soc_drv() argument
169 return psp_v13_0_bootloader_load_component(psp, &psp->soc_drv, PSP_BL__LOAD_SOCDRV); in psp_v13_0_bootloader_load_soc_drv()
172 static int psp_v13_0_bootloader_load_intf_drv(struct psp_context *psp) in psp_v13_0_bootloader_load_intf_drv() argument
174 return psp_v13_0_bootloader_load_component(psp, &psp->intf_drv, PSP_BL__LOAD_INTFDRV); in psp_v13_0_bootloader_load_intf_drv()
177 static int psp_v13_0_bootloader_load_dbg_drv(struct psp_context *psp) in psp_v13_0_bootloader_load_dbg_drv() argument
179 return psp_v13_0_bootloader_load_component(psp, &psp->dbg_drv, PSP_BL__LOAD_DBGDRV); in psp_v13_0_bootloader_load_dbg_drv()
182 static int psp_v13_0_bootloader_load_sos(struct psp_context *psp) in psp_v13_0_bootloader_load_sos() argument
186 struct amdgpu_device *adev = psp->adev; in psp_v13_0_bootloader_load_sos()
191 if (psp_v13_0_is_sos_alive(psp)) in psp_v13_0_bootloader_load_sos()
194 ret = psp_v13_0_wait_for_bootloader(psp); in psp_v13_0_bootloader_load_sos()
198 memset(psp->fw_pri_buf, 0, PSP_1_MEG); in psp_v13_0_bootloader_load_sos()
201 memcpy(psp->fw_pri_buf, psp->sos.start_addr, psp->sos.size_bytes); in psp_v13_0_bootloader_load_sos()
205 (uint32_t)(psp->fw_pri_mc_addr >> 20)); in psp_v13_0_bootloader_load_sos()
212 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_81), in psp_v13_0_bootloader_load_sos()
219 static int psp_v13_0_ring_init(struct psp_context *psp, in psp_v13_0_ring_init() argument
224 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_init()
226 ring = &psp->km_ring; in psp_v13_0_ring_init()
245 static int psp_v13_0_ring_stop(struct psp_context *psp, in psp_v13_0_ring_stop() argument
249 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_stop()
258 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_101), in psp_v13_0_ring_stop()
267 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_64), in psp_v13_0_ring_stop()
274 static int psp_v13_0_ring_create(struct psp_context *psp, in psp_v13_0_ring_create() argument
279 struct psp_ring *ring = &psp->km_ring; in psp_v13_0_ring_create()
280 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_create()
283 ret = psp_v13_0_ring_stop(psp, ring_type); in psp_v13_0_ring_create()
304 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_101), in psp_v13_0_ring_create()
309 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_64), in psp_v13_0_ring_create()
334 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_64), in psp_v13_0_ring_create()
341 static int psp_v13_0_ring_destroy(struct psp_context *psp, in psp_v13_0_ring_destroy() argument
345 struct psp_ring *ring = &psp->km_ring; in psp_v13_0_ring_destroy()
346 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_destroy()
348 ret = psp_v13_0_ring_stop(psp, ring_type); in psp_v13_0_ring_destroy()
359 static uint32_t psp_v13_0_ring_get_wptr(struct psp_context *psp) in psp_v13_0_ring_get_wptr() argument
362 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_get_wptr()
372 static void psp_v13_0_ring_set_wptr(struct psp_context *psp, uint32_t value) in psp_v13_0_ring_set_wptr() argument
374 struct amdgpu_device *adev = psp->adev; in psp_v13_0_ring_set_wptr()
384 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
386 struct amdgpu_device *adev = psp->adev; in psp_v13_0_load_usbc_pd_fw()
397 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35), in psp_v13_0_load_usbc_pd_fw()
427 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
429 struct amdgpu_device *adev = psp->adev; in psp_v13_0_read_usbc_pd_fw()
434 ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35), in psp_v13_0_read_usbc_pd_fw()
460 void psp_v13_0_set_psp_funcs(struct psp_context *psp) in psp_v13_0_set_psp_funcs() argument
462 psp->funcs = &psp_v13_0_funcs; in psp_v13_0_set_psp_funcs()