Lines Matching full:sdma

81  * sDMA - System DMA
89 * (ring buffer, IBs, etc.), but sDMA has it's own
91 * used by the CP. sDMA supports copying data, writing
116 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v2_4_free_microcode()
117 release_firmware(adev->sdma.instance[i].fw); in sdma_v2_4_free_microcode()
118 adev->sdma.instance[i].fw = NULL; in sdma_v2_4_free_microcode()
149 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v2_4_init_microcode()
154 err = request_firmware(&adev->sdma.instance[i].fw, fw_name, adev->dev); in sdma_v2_4_init_microcode()
157 err = amdgpu_ucode_validate(adev->sdma.instance[i].fw); in sdma_v2_4_init_microcode()
160 hdr = (const struct sdma_firmware_header_v1_0 *)adev->sdma.instance[i].fw->data; in sdma_v2_4_init_microcode()
161 adev->sdma.instance[i].fw_version = le32_to_cpu(hdr->header.ucode_version); in sdma_v2_4_init_microcode()
162 adev->sdma.instance[i].feature_version = le32_to_cpu(hdr->ucode_feature_version); in sdma_v2_4_init_microcode()
163 if (adev->sdma.instance[i].feature_version >= 20) in sdma_v2_4_init_microcode()
164 adev->sdma.instance[i].burst_nop = true; in sdma_v2_4_init_microcode()
169 info->fw = adev->sdma.instance[i].fw; in sdma_v2_4_init_microcode()
179 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v2_4_init_microcode()
180 release_firmware(adev->sdma.instance[i].fw); in sdma_v2_4_init_microcode()
181 adev->sdma.instance[i].fw = NULL; in sdma_v2_4_init_microcode()
231 struct amdgpu_sdma_instance *sdma = amdgpu_sdma_get_instance_from_ring(ring); in sdma_v2_4_ring_insert_nop() local
235 if (sdma && sdma->burst_nop && (i == 0)) in sdma_v2_4_ring_insert_nop()
345 struct amdgpu_ring *sdma0 = &adev->sdma.instance[0].ring; in sdma_v2_4_gfx_stop()
346 struct amdgpu_ring *sdma1 = &adev->sdma.instance[1].ring; in sdma_v2_4_gfx_stop()
354 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v2_4_gfx_stop()
394 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v2_4_enable()
420 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v2_4_gfx_resume()
421 ring = &adev->sdma.instance[i].ring; in sdma_v2_4_gfx_resume()
427 /* SDMA GFX */ in sdma_v2_4_gfx_resume()
486 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v2_4_gfx_resume()
487 ring = &adev->sdma.instance[i].ring; in sdma_v2_4_gfx_resume()
669 * Update PTEs by copying them from the GART using sDMA (CIK).
696 * Update PTEs by writing them manually using sDMA (CIK).
717 * sdma_v2_4_vm_set_pte_pde - update the page tables using sDMA
726 * Update the page tables using sDMA (CIK).
754 struct amdgpu_sdma_instance *sdma = amdgpu_sdma_get_instance_from_ring(ring); in sdma_v2_4_ring_pad_ib() local
760 if (sdma && sdma->burst_nop && (i == 0)) in sdma_v2_4_ring_pad_ib()
795 * sdma_v2_4_ring_emit_vm_flush - cik vm flush using sDMA
802 * using sDMA (VI).
834 adev->sdma.num_instances = SDMA_MAX_INSTANCE; in sdma_v2_4_early_init()
850 /* SDMA trap event */ in sdma_v2_4_sw_init()
852 &adev->sdma.trap_irq); in sdma_v2_4_sw_init()
856 /* SDMA Privileged inst */ in sdma_v2_4_sw_init()
858 &adev->sdma.illegal_inst_irq); in sdma_v2_4_sw_init()
862 /* SDMA Privileged inst */ in sdma_v2_4_sw_init()
864 &adev->sdma.illegal_inst_irq); in sdma_v2_4_sw_init()
870 DRM_ERROR("Failed to load sdma firmware!\n"); in sdma_v2_4_sw_init()
874 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v2_4_sw_init()
875 ring = &adev->sdma.instance[i].ring; in sdma_v2_4_sw_init()
878 sprintf(ring->name, "sdma%d", i); in sdma_v2_4_sw_init()
879 r = amdgpu_ring_init(adev, ring, 1024, &adev->sdma.trap_irq, in sdma_v2_4_sw_init()
895 for (i = 0; i < adev->sdma.num_instances; i++) in sdma_v2_4_sw_fini()
896 amdgpu_ring_fini(&adev->sdma.instance[i].ring); in sdma_v2_4_sw_fini()
1063 DRM_DEBUG("IH: SDMA trap\n"); in sdma_v2_4_process_trap_irq()
1068 amdgpu_fence_process(&adev->sdma.instance[0].ring); in sdma_v2_4_process_trap_irq()
1081 amdgpu_fence_process(&adev->sdma.instance[1].ring); in sdma_v2_4_process_trap_irq()
1101 DRM_ERROR("Illegal instruction in SDMA command stream\n"); in sdma_v2_4_process_illegal_inst_irq()
1106 drm_sched_fault(&adev->sdma.instance[instance_id].ring.sched); in sdma_v2_4_process_illegal_inst_irq()
1171 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v2_4_set_ring_funcs()
1172 adev->sdma.instance[i].ring.funcs = &sdma_v2_4_ring_funcs; in sdma_v2_4_set_ring_funcs()
1173 adev->sdma.instance[i].ring.me = i; in sdma_v2_4_set_ring_funcs()
1188 adev->sdma.trap_irq.num_types = AMDGPU_SDMA_IRQ_LAST; in sdma_v2_4_set_irq_funcs()
1189 adev->sdma.trap_irq.funcs = &sdma_v2_4_trap_irq_funcs; in sdma_v2_4_set_irq_funcs()
1190 adev->sdma.illegal_inst_irq.funcs = &sdma_v2_4_illegal_inst_irq_funcs; in sdma_v2_4_set_irq_funcs()
1194 * sdma_v2_4_emit_copy_buffer - copy buffer using the sDMA engine
1223 * sdma_v2_4_emit_fill_buffer - fill buffer using the sDMA engine
1257 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring; in sdma_v2_4_set_buffer_funcs()
1273 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v2_4_set_vm_pte_funcs()
1275 &adev->sdma.instance[i].ring.sched; in sdma_v2_4_set_vm_pte_funcs()
1277 adev->vm_manager.vm_pte_num_scheds = adev->sdma.num_instances; in sdma_v2_4_set_vm_pte_funcs()