Lines Matching refs:adev
53 struct amdgpu_device *adev = ring->adev; in amdgpu_umsch_mm_query_fence() local
56 r = amdgpu_fence_wait_polling(ring, ring->fence_drv.sync_seq, adev->usec_timeout); in amdgpu_umsch_mm_query_fence()
58 dev_err(adev->dev, "ring umsch timeout, emitted fence %u\n", in amdgpu_umsch_mm_query_fence()
69 struct amdgpu_device *adev = ring->adev; in umsch_mm_ring_set_wptr() local
80 struct amdgpu_device *adev = ring->adev; in umsch_mm_ring_get_rptr() local
88 struct amdgpu_device *adev = ring->adev; in umsch_mm_ring_get_wptr() local
106 struct amdgpu_device *adev = container_of(umsch, struct amdgpu_device, umsch_mm); in amdgpu_umsch_mm_ring_init() local
116 return amdgpu_ring_init(adev, ring, 1024, NULL, 0, AMDGPU_RING_PRIO_DEFAULT, NULL); in amdgpu_umsch_mm_ring_init()
122 struct amdgpu_device *adev = umsch->ring.adev; in amdgpu_umsch_mm_init_microcode() local
126 switch (amdgpu_ip_version(adev, VCN_HWIP, 0)) { in amdgpu_umsch_mm_init_microcode()
135 r = amdgpu_ucode_request(adev, &adev->umsch_mm.fw, AMDGPU_UCODE_REQUIRED, in amdgpu_umsch_mm_init_microcode()
138 release_firmware(adev->umsch_mm.fw); in amdgpu_umsch_mm_init_microcode()
139 adev->umsch_mm.fw = NULL; in amdgpu_umsch_mm_init_microcode()
143 umsch_mm_hdr = (const struct umsch_mm_firmware_header_v1_0 *)adev->umsch_mm.fw->data; in amdgpu_umsch_mm_init_microcode()
145 adev->umsch_mm.ucode_size = le32_to_cpu(umsch_mm_hdr->umsch_mm_ucode_size_bytes); in amdgpu_umsch_mm_init_microcode()
146 adev->umsch_mm.data_size = le32_to_cpu(umsch_mm_hdr->umsch_mm_ucode_data_size_bytes); in amdgpu_umsch_mm_init_microcode()
148 adev->umsch_mm.irq_start_addr = in amdgpu_umsch_mm_init_microcode()
151 adev->umsch_mm.uc_start_addr = in amdgpu_umsch_mm_init_microcode()
154 adev->umsch_mm.data_start_addr = in amdgpu_umsch_mm_init_microcode()
158 if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) { in amdgpu_umsch_mm_init_microcode()
161 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_UMSCH_MM_UCODE]; in amdgpu_umsch_mm_init_microcode()
163 info->fw = adev->umsch_mm.fw; in amdgpu_umsch_mm_init_microcode()
164 adev->firmware.fw_size += in amdgpu_umsch_mm_init_microcode()
167 info = &adev->firmware.ucode[AMDGPU_UCODE_ID_UMSCH_MM_DATA]; in amdgpu_umsch_mm_init_microcode()
169 info->fw = adev->umsch_mm.fw; in amdgpu_umsch_mm_init_microcode()
170 adev->firmware.fw_size += in amdgpu_umsch_mm_init_microcode()
180 struct amdgpu_device *adev = umsch->ring.adev; in amdgpu_umsch_mm_allocate_ucode_buffer() local
186 adev->umsch_mm.fw->data; in amdgpu_umsch_mm_allocate_ucode_buffer()
188 fw_data = (const __le32 *)(adev->umsch_mm.fw->data + in amdgpu_umsch_mm_allocate_ucode_buffer()
192 r = amdgpu_bo_create_reserved(adev, fw_size, in amdgpu_umsch_mm_allocate_ucode_buffer()
194 &adev->umsch_mm.ucode_fw_obj, in amdgpu_umsch_mm_allocate_ucode_buffer()
195 &adev->umsch_mm.ucode_fw_gpu_addr, in amdgpu_umsch_mm_allocate_ucode_buffer()
196 (void **)&adev->umsch_mm.ucode_fw_ptr); in amdgpu_umsch_mm_allocate_ucode_buffer()
198 dev_err(adev->dev, "(%d) failed to create umsch_mm fw ucode bo\n", r); in amdgpu_umsch_mm_allocate_ucode_buffer()
202 memcpy(adev->umsch_mm.ucode_fw_ptr, fw_data, fw_size); in amdgpu_umsch_mm_allocate_ucode_buffer()
204 amdgpu_bo_kunmap(adev->umsch_mm.ucode_fw_obj); in amdgpu_umsch_mm_allocate_ucode_buffer()
205 amdgpu_bo_unreserve(adev->umsch_mm.ucode_fw_obj); in amdgpu_umsch_mm_allocate_ucode_buffer()
212 struct amdgpu_device *adev = umsch->ring.adev; in amdgpu_umsch_mm_allocate_ucode_data_buffer() local
218 adev->umsch_mm.fw->data; in amdgpu_umsch_mm_allocate_ucode_data_buffer()
220 fw_data = (const __le32 *)(adev->umsch_mm.fw->data + in amdgpu_umsch_mm_allocate_ucode_data_buffer()
224 r = amdgpu_bo_create_reserved(adev, fw_size, in amdgpu_umsch_mm_allocate_ucode_data_buffer()
226 &adev->umsch_mm.data_fw_obj, in amdgpu_umsch_mm_allocate_ucode_data_buffer()
227 &adev->umsch_mm.data_fw_gpu_addr, in amdgpu_umsch_mm_allocate_ucode_data_buffer()
228 (void **)&adev->umsch_mm.data_fw_ptr); in amdgpu_umsch_mm_allocate_ucode_data_buffer()
230 dev_err(adev->dev, "(%d) failed to create umsch_mm fw data bo\n", r); in amdgpu_umsch_mm_allocate_ucode_data_buffer()
234 memcpy(adev->umsch_mm.data_fw_ptr, fw_data, fw_size); in amdgpu_umsch_mm_allocate_ucode_data_buffer()
236 amdgpu_bo_kunmap(adev->umsch_mm.data_fw_obj); in amdgpu_umsch_mm_allocate_ucode_data_buffer()
237 amdgpu_bo_unreserve(adev->umsch_mm.data_fw_obj); in amdgpu_umsch_mm_allocate_ucode_data_buffer()
243 struct amdgpu_device *adev = umsch->ring.adev; in amdgpu_umsch_mm_psp_execute_cmd_buf() local
246 .mc_addr = adev->umsch_mm.cmd_buf_gpu_addr, in amdgpu_umsch_mm_psp_execute_cmd_buf()
247 .ucode_size = ((uintptr_t)adev->umsch_mm.cmd_buf_curr_ptr - in amdgpu_umsch_mm_psp_execute_cmd_buf()
248 (uintptr_t)adev->umsch_mm.cmd_buf_ptr), in amdgpu_umsch_mm_psp_execute_cmd_buf()
251 return psp_execute_ip_fw_load(&adev->psp, &ucode); in amdgpu_umsch_mm_psp_execute_cmd_buf()
254 static void umsch_mm_agdb_index_init(struct amdgpu_device *adev) in umsch_mm_agdb_index_init() argument
259 umsch_mm_agdb_start = adev->doorbell_index.max_assignment + 1; in umsch_mm_agdb_index_init()
264 adev->umsch_mm.agdb_index[i] = umsch_mm_agdb_start + i; in umsch_mm_agdb_index_init()
267 static int umsch_mm_init(struct amdgpu_device *adev) in umsch_mm_init() argument
271 adev->umsch_mm.vmid_mask_mm_vpe = 0xf00; in umsch_mm_init()
272 adev->umsch_mm.engine_mask = (1 << UMSCH_SWIP_ENGINE_TYPE_VPE); in umsch_mm_init()
273 adev->umsch_mm.vpe_hqd_mask = 0xfe; in umsch_mm_init()
275 r = amdgpu_device_wb_get(adev, &adev->umsch_mm.wb_index); in umsch_mm_init()
277 dev_err(adev->dev, "failed to alloc wb for umsch: %d\n", r); in umsch_mm_init()
281 adev->umsch_mm.sch_ctx_gpu_addr = adev->wb.gpu_addr + in umsch_mm_init()
282 (adev->umsch_mm.wb_index * 4); in umsch_mm_init()
284 r = amdgpu_bo_create_kernel(adev, PAGE_SIZE, PAGE_SIZE, in umsch_mm_init()
286 &adev->umsch_mm.cmd_buf_obj, in umsch_mm_init()
287 &adev->umsch_mm.cmd_buf_gpu_addr, in umsch_mm_init()
288 (void **)&adev->umsch_mm.cmd_buf_ptr); in umsch_mm_init()
290 dev_err(adev->dev, "failed to allocate cmdbuf bo %d\n", r); in umsch_mm_init()
291 amdgpu_device_wb_free(adev, adev->umsch_mm.wb_index); in umsch_mm_init()
295 r = amdgpu_bo_create_kernel(adev, AMDGPU_UMSCHFW_LOG_SIZE, PAGE_SIZE, in umsch_mm_init()
298 &adev->umsch_mm.dbglog_bo, in umsch_mm_init()
299 &adev->umsch_mm.log_gpu_addr, in umsch_mm_init()
300 &adev->umsch_mm.log_cpu_addr); in umsch_mm_init()
302 dev_err(adev->dev, "(%d) failed to allocate umsch debug bo\n", r); in umsch_mm_init()
306 mutex_init(&adev->umsch_mm.mutex_hidden); in umsch_mm_init()
308 umsch_mm_agdb_index_init(adev); in umsch_mm_init()
316 struct amdgpu_device *adev = ip_block->adev; in umsch_mm_early_init() local
318 switch (amdgpu_ip_version(adev, VCN_HWIP, 0)) { in umsch_mm_early_init()
321 umsch_mm_v4_0_set_funcs(&adev->umsch_mm); in umsch_mm_early_init()
327 adev->umsch_mm.ring.funcs = &umsch_v4_0_ring_funcs; in umsch_mm_early_init()
328 umsch_mm_set_regs(&adev->umsch_mm); in umsch_mm_early_init()
335 struct amdgpu_device *adev = ip_block->adev; in umsch_mm_late_init() local
337 if (amdgpu_in_reset(adev) || adev->in_s0ix || adev->in_suspend) in umsch_mm_late_init()
345 struct amdgpu_device *adev = ip_block->adev; in umsch_mm_sw_init() local
348 r = umsch_mm_init(adev); in umsch_mm_sw_init()
352 amdgpu_umsch_fwlog_init(&adev->umsch_mm); in umsch_mm_sw_init()
353 r = umsch_mm_ring_init(&adev->umsch_mm); in umsch_mm_sw_init()
357 r = umsch_mm_init_microcode(&adev->umsch_mm); in umsch_mm_sw_init()
366 struct amdgpu_device *adev = ip_block->adev; in umsch_mm_sw_fini() local
368 release_firmware(adev->umsch_mm.fw); in umsch_mm_sw_fini()
369 adev->umsch_mm.fw = NULL; in umsch_mm_sw_fini()
371 amdgpu_ring_fini(&adev->umsch_mm.ring); in umsch_mm_sw_fini()
373 mutex_destroy(&adev->umsch_mm.mutex_hidden); in umsch_mm_sw_fini()
375 amdgpu_bo_free_kernel(&adev->umsch_mm.cmd_buf_obj, in umsch_mm_sw_fini()
376 &adev->umsch_mm.cmd_buf_gpu_addr, in umsch_mm_sw_fini()
377 (void **)&adev->umsch_mm.cmd_buf_ptr); in umsch_mm_sw_fini()
379 amdgpu_bo_free_kernel(&adev->umsch_mm.dbglog_bo, in umsch_mm_sw_fini()
380 &adev->umsch_mm.log_gpu_addr, in umsch_mm_sw_fini()
381 (void **)&adev->umsch_mm.log_cpu_addr); in umsch_mm_sw_fini()
383 amdgpu_device_wb_free(adev, adev->umsch_mm.wb_index); in umsch_mm_sw_fini()
390 struct amdgpu_device *adev = ip_block->adev; in umsch_mm_hw_init() local
393 r = umsch_mm_load_microcode(&adev->umsch_mm); in umsch_mm_hw_init()
397 umsch_mm_ring_start(&adev->umsch_mm); in umsch_mm_hw_init()
399 r = umsch_mm_set_hw_resources(&adev->umsch_mm); in umsch_mm_hw_init()
408 struct amdgpu_device *adev = ip_block->adev; in umsch_mm_hw_fini() local
410 umsch_mm_ring_stop(&adev->umsch_mm); in umsch_mm_hw_fini()
412 amdgpu_bo_free_kernel(&adev->umsch_mm.data_fw_obj, in umsch_mm_hw_fini()
413 &adev->umsch_mm.data_fw_gpu_addr, in umsch_mm_hw_fini()
414 (void **)&adev->umsch_mm.data_fw_ptr); in umsch_mm_hw_fini()
416 amdgpu_bo_free_kernel(&adev->umsch_mm.ucode_fw_obj, in umsch_mm_hw_fini()
417 &adev->umsch_mm.ucode_fw_gpu_addr, in umsch_mm_hw_fini()
418 (void **)&adev->umsch_mm.ucode_fw_ptr); in umsch_mm_hw_fini()
517 void amdgpu_debugfs_umsch_fwlog_init(struct amdgpu_device *adev, in amdgpu_debugfs_umsch_fwlog_init() argument
521 struct drm_minor *minor = adev_to_drm(adev)->primary; in amdgpu_debugfs_umsch_fwlog_init()