Lines Matching refs:psp

40 	struct psp_context *psp = &adev->psp;  in psp_early_init()  local
48 psp_v3_1_set_psp_funcs(psp); in psp_early_init()
51 psp_v10_0_set_psp_funcs(psp); in psp_early_init()
57 psp->adev = adev; in psp_early_init()
68 struct psp_context *psp = &adev->psp; in psp_sw_init() local
71 ret = psp_init_microcode(psp); in psp_sw_init()
87 release_firmware(adev->psp.sos_fw); in psp_sw_fini()
88 adev->psp.sos_fw = NULL; in psp_sw_fini()
89 release_firmware(adev->psp.asd_fw); in psp_sw_fini()
90 adev->psp.asd_fw = NULL; in psp_sw_fini()
94 int psp_wait_for(struct psp_context *psp, uint32_t reg_index, in psp_wait_for() argument
99 struct amdgpu_device *adev = psp->adev; in psp_wait_for()
117 psp_cmd_submit_buf(struct psp_context *psp, in psp_cmd_submit_buf() argument
124 memset(psp->cmd_buf_mem, 0, PSP_CMD_BUFFER_SIZE); in psp_cmd_submit_buf()
126 memcpy(psp->cmd_buf_mem, cmd, sizeof(struct psp_gfx_cmd_resp)); in psp_cmd_submit_buf()
128 ret = psp_cmd_submit(psp, ucode, psp->cmd_buf_mc_addr, in psp_cmd_submit_buf()
131 while (*((unsigned int *)psp->fence_buf) != index) { in psp_cmd_submit_buf()
136 ucode->tmr_mc_addr_lo = psp->cmd_buf_mem->resp.fw_addr_lo; in psp_cmd_submit_buf()
137 ucode->tmr_mc_addr_hi = psp->cmd_buf_mem->resp.fw_addr_hi; in psp_cmd_submit_buf()
153 static int psp_tmr_init(struct psp_context *psp) in psp_tmr_init() argument
164 ret = amdgpu_bo_create_kernel(psp->adev, 0x300000, 0x100000, in psp_tmr_init()
166 &psp->tmr_bo, (u64 *)&psp->tmr_mc_addr, &psp->tmr_buf); in psp_tmr_init()
171 static int psp_tmr_load(struct psp_context *psp) in psp_tmr_load() argument
180 psp_prep_tmr_cmd_buf(cmd, psp->tmr_mc_addr, 0x300000); in psp_tmr_load()
182 ret = psp_cmd_submit_buf(psp, NULL, cmd, in psp_tmr_load()
183 psp->fence_buf_mc_addr, 1); in psp_tmr_load()
210 static int psp_asd_init(struct psp_context *psp) in psp_asd_init() argument
218 ret = amdgpu_bo_create_kernel(psp->adev, PSP_ASD_SHARED_MEM_SIZE, in psp_asd_init()
220 &psp->asd_shared_bo, in psp_asd_init()
221 (u64 *)&psp->asd_shared_mc_addr, in psp_asd_init()
222 &psp->asd_shared_buf); in psp_asd_init()
227 static int psp_asd_load(struct psp_context *psp) in psp_asd_load() argument
236 if (amdgpu_sriov_vf(psp->adev)) in psp_asd_load()
243 memset(psp->fw_pri_buf, 0, PSP_1_MEG); in psp_asd_load()
244 memcpy(psp->fw_pri_buf, psp->asd_start_addr, psp->asd_ucode_size); in psp_asd_load()
246 psp_prep_asd_cmd_buf(cmd, psp->fw_pri_mc_addr, psp->asd_shared_mc_addr, in psp_asd_load()
247 psp->asd_ucode_size, PSP_ASD_SHARED_MEM_SIZE); in psp_asd_load()
249 ret = psp_cmd_submit_buf(psp, NULL, cmd, in psp_asd_load()
250 psp->fence_buf_mc_addr, 2); in psp_asd_load()
257 static int psp_hw_start(struct psp_context *psp) in psp_hw_start() argument
259 struct amdgpu_device *adev = psp->adev; in psp_hw_start()
263 ret = psp_bootloader_load_sysdrv(psp); in psp_hw_start()
267 ret = psp_bootloader_load_sos(psp); in psp_hw_start()
272 ret = psp_ring_create(psp, PSP_RING_TYPE__KM); in psp_hw_start()
276 ret = psp_tmr_load(psp); in psp_hw_start()
280 ret = psp_asd_load(psp); in psp_hw_start()
287 static int psp_np_fw_load(struct psp_context *psp) in psp_np_fw_load() argument
291 struct amdgpu_device* adev = psp->adev; in psp_np_fw_load()
299 psp_smu_reload_quirk(psp)) in psp_np_fw_load()
308 ret = psp_prep_cmd_buf(ucode, psp->cmd); in psp_np_fw_load()
312 ret = psp_cmd_submit_buf(psp, ucode, psp->cmd, in psp_np_fw_load()
313 psp->fence_buf_mc_addr, i + 3); in psp_np_fw_load()
330 struct psp_context *psp = &adev->psp; in psp_load_fw() local
335 psp->cmd = kzalloc(sizeof(struct psp_gfx_cmd_resp), GFP_KERNEL); in psp_load_fw()
336 if (!psp->cmd) in psp_load_fw()
341 &psp->fw_pri_bo, in psp_load_fw()
342 (u64 *)&psp->fw_pri_mc_addr, in psp_load_fw()
343 &psp->fw_pri_buf); in psp_load_fw()
349 &psp->fence_buf_bo, in psp_load_fw()
350 (u64 *)&psp->fence_buf_mc_addr, in psp_load_fw()
351 &psp->fence_buf); in psp_load_fw()
357 &psp->cmd_buf_bo, (u64 *)&psp->cmd_buf_mc_addr, in psp_load_fw()
358 (void **)&psp->cmd_buf_mem); in psp_load_fw()
362 memset(psp->fence_buf, 0, PSP_FENCE_BUFFER_SIZE); in psp_load_fw()
364 ret = psp_ring_init(psp, PSP_RING_TYPE__KM); in psp_load_fw()
368 ret = psp_tmr_init(psp); in psp_load_fw()
372 ret = psp_asd_init(psp); in psp_load_fw()
377 ret = psp_hw_start(psp); in psp_load_fw()
381 ret = psp_np_fw_load(psp); in psp_load_fw()
388 amdgpu_bo_free_kernel(&psp->cmd_buf_bo, in psp_load_fw()
389 (u64 *)&psp->cmd_buf_mc_addr, in psp_load_fw()
390 (void **)&psp->cmd_buf_mem); in psp_load_fw()
392 amdgpu_bo_free_kernel(&psp->fence_buf_bo, in psp_load_fw()
393 (u64 *)&psp->fence_buf_mc_addr, &psp->fence_buf); in psp_load_fw()
395 amdgpu_bo_free_kernel(&psp->fw_pri_bo, in psp_load_fw()
396 (u64 *)&psp->fw_pri_mc_addr, &psp->fw_pri_buf); in psp_load_fw()
398 kfree(psp->cmd); in psp_load_fw()
399 psp->cmd = NULL; in psp_load_fw()
439 struct psp_context *psp = &adev->psp; in psp_hw_fini() local
446 psp_ring_destroy(psp, PSP_RING_TYPE__KM); in psp_hw_fini()
448 amdgpu_bo_free_kernel(&psp->tmr_bo, (u64 *)&psp->tmr_mc_addr, &psp->tmr_buf); in psp_hw_fini()
449 amdgpu_bo_free_kernel(&psp->fw_pri_bo, in psp_hw_fini()
450 (u64 *)&psp->fw_pri_mc_addr, &psp->fw_pri_buf); in psp_hw_fini()
451 amdgpu_bo_free_kernel(&psp->fence_buf_bo, in psp_hw_fini()
452 (u64 *)&psp->fence_buf_mc_addr, &psp->fence_buf); in psp_hw_fini()
453 amdgpu_bo_free_kernel(&psp->asd_shared_bo, (u64 *)&psp->asd_shared_mc_addr, in psp_hw_fini()
454 &psp->asd_shared_buf); in psp_hw_fini()
455 amdgpu_bo_free_kernel(&psp->cmd_buf_bo, (u64 *)&psp->cmd_buf_mc_addr, in psp_hw_fini()
456 (void **)&psp->cmd_buf_mem); in psp_hw_fini()
458 kfree(psp->cmd); in psp_hw_fini()
459 psp->cmd = NULL; in psp_hw_fini()
468 struct psp_context *psp = &adev->psp; in psp_suspend() local
473 ret = psp_ring_stop(psp, PSP_RING_TYPE__KM); in psp_suspend()
486 struct psp_context *psp = &adev->psp; in psp_resume() local
495 ret = psp_hw_start(psp); in psp_resume()
499 ret = psp_np_fw_load(psp); in psp_resume()
518 return psp_mode1_reset(&adev->psp); in psp_gpu_reset()
538 return psp_compare_sram_data(&adev->psp, ucode, ucode_type); in psp_check_fw_loading_status()