Lines Matching full:sdma

182  * sDMA - System DMA
190 * (ring buffer, IBs, etc.), but sDMA has it's own
192 * used by the CP. sDMA supports copying data, writing
253 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_free_microcode()
254 release_firmware(adev->sdma.instance[i].fw); in sdma_v3_0_free_microcode()
255 adev->sdma.instance[i].fw = NULL; in sdma_v3_0_free_microcode()
307 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_init_microcode()
312 err = request_firmware(&adev->sdma.instance[i].fw, fw_name, adev->dev); in sdma_v3_0_init_microcode()
315 err = amdgpu_ucode_validate(adev->sdma.instance[i].fw); in sdma_v3_0_init_microcode()
318 hdr = (const struct sdma_firmware_header_v1_0 *)adev->sdma.instance[i].fw->data; in sdma_v3_0_init_microcode()
319 adev->sdma.instance[i].fw_version = le32_to_cpu(hdr->header.ucode_version); in sdma_v3_0_init_microcode()
320 adev->sdma.instance[i].feature_version = le32_to_cpu(hdr->ucode_feature_version); in sdma_v3_0_init_microcode()
321 if (adev->sdma.instance[i].feature_version >= 20) in sdma_v3_0_init_microcode()
322 adev->sdma.instance[i].burst_nop = true; in sdma_v3_0_init_microcode()
326 info->fw = adev->sdma.instance[i].fw; in sdma_v3_0_init_microcode()
335 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_init_microcode()
336 release_firmware(adev->sdma.instance[i].fw); in sdma_v3_0_init_microcode()
337 adev->sdma.instance[i].fw = NULL; in sdma_v3_0_init_microcode()
405 struct amdgpu_sdma_instance *sdma = amdgpu_sdma_get_instance_from_ring(ring); in sdma_v3_0_ring_insert_nop() local
409 if (sdma && sdma->burst_nop && (i == 0)) in sdma_v3_0_ring_insert_nop()
519 struct amdgpu_ring *sdma0 = &adev->sdma.instance[0].ring; in sdma_v3_0_gfx_stop()
520 struct amdgpu_ring *sdma1 = &adev->sdma.instance[1].ring; in sdma_v3_0_gfx_stop()
528 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_gfx_stop()
587 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_ctx_switch_enable()
629 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_enable()
657 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_gfx_resume()
658 ring = &adev->sdma.instance[i].ring; in sdma_v3_0_gfx_resume()
665 /* SDMA GFX */ in sdma_v3_0_gfx_resume()
755 /* enable sdma ring preemption */ in sdma_v3_0_gfx_resume()
758 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_gfx_resume()
759 ring = &adev->sdma.instance[i].ring; in sdma_v3_0_gfx_resume()
797 /* disable sdma engine before programing it */ in sdma_v3_0_start()
940 * Update PTEs by copying them from the GART using sDMA (CIK).
967 * Update PTEs by writing them manually using sDMA (CIK).
988 * sdma_v3_0_vm_set_pte_pde - update the page tables using sDMA
997 * Update the page tables using sDMA (CIK).
1025 struct amdgpu_sdma_instance *sdma = amdgpu_sdma_get_instance_from_ring(ring); in sdma_v3_0_ring_pad_ib() local
1031 if (sdma && sdma->burst_nop && (i == 0)) in sdma_v3_0_ring_pad_ib()
1066 * sdma_v3_0_ring_emit_vm_flush - cik vm flush using sDMA
1073 * using sDMA (VI).
1107 adev->sdma.num_instances = 1; in sdma_v3_0_early_init()
1110 adev->sdma.num_instances = SDMA_MAX_INSTANCE; in sdma_v3_0_early_init()
1128 /* SDMA trap event */ in sdma_v3_0_sw_init()
1130 &adev->sdma.trap_irq); in sdma_v3_0_sw_init()
1134 /* SDMA Privileged inst */ in sdma_v3_0_sw_init()
1136 &adev->sdma.illegal_inst_irq); in sdma_v3_0_sw_init()
1140 /* SDMA Privileged inst */ in sdma_v3_0_sw_init()
1142 &adev->sdma.illegal_inst_irq); in sdma_v3_0_sw_init()
1148 DRM_ERROR("Failed to load sdma firmware!\n"); in sdma_v3_0_sw_init()
1152 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_sw_init()
1153 ring = &adev->sdma.instance[i].ring; in sdma_v3_0_sw_init()
1162 sprintf(ring->name, "sdma%d", i); in sdma_v3_0_sw_init()
1163 r = amdgpu_ring_init(adev, ring, 1024, &adev->sdma.trap_irq, in sdma_v3_0_sw_init()
1179 for (i = 0; i < adev->sdma.num_instances; i++) in sdma_v3_0_sw_fini()
1180 amdgpu_ring_fini(&adev->sdma.instance[i].ring); in sdma_v3_0_sw_fini()
1266 adev->sdma.srbm_soft_reset = srbm_soft_reset; in sdma_v3_0_check_soft_reset()
1269 adev->sdma.srbm_soft_reset = 0; in sdma_v3_0_check_soft_reset()
1279 if (!adev->sdma.srbm_soft_reset) in sdma_v3_0_pre_soft_reset()
1282 srbm_soft_reset = adev->sdma.srbm_soft_reset; in sdma_v3_0_pre_soft_reset()
1298 if (!adev->sdma.srbm_soft_reset) in sdma_v3_0_post_soft_reset()
1301 srbm_soft_reset = adev->sdma.srbm_soft_reset; in sdma_v3_0_post_soft_reset()
1318 if (!adev->sdma.srbm_soft_reset) in sdma_v3_0_soft_reset()
1321 srbm_soft_reset = adev->sdma.srbm_soft_reset; in sdma_v3_0_soft_reset()
1397 DRM_DEBUG("IH: SDMA trap\n"); in sdma_v3_0_process_trap_irq()
1402 amdgpu_fence_process(&adev->sdma.instance[0].ring); in sdma_v3_0_process_trap_irq()
1415 amdgpu_fence_process(&adev->sdma.instance[1].ring); in sdma_v3_0_process_trap_irq()
1435 DRM_ERROR("Illegal instruction in SDMA command stream\n"); in sdma_v3_0_process_illegal_inst_irq()
1440 drm_sched_fault(&adev->sdma.instance[instance_id].ring.sched); in sdma_v3_0_process_illegal_inst_irq()
1452 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_update_sdma_medium_grain_clock_gating()
1466 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_update_sdma_medium_grain_clock_gating()
1491 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_update_sdma_medium_grain_light_sleep()
1499 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_update_sdma_medium_grain_light_sleep()
1609 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_set_ring_funcs()
1610 adev->sdma.instance[i].ring.funcs = &sdma_v3_0_ring_funcs; in sdma_v3_0_set_ring_funcs()
1611 adev->sdma.instance[i].ring.me = i; in sdma_v3_0_set_ring_funcs()
1626 adev->sdma.trap_irq.num_types = AMDGPU_SDMA_IRQ_LAST; in sdma_v3_0_set_irq_funcs()
1627 adev->sdma.trap_irq.funcs = &sdma_v3_0_trap_irq_funcs; in sdma_v3_0_set_irq_funcs()
1628 adev->sdma.illegal_inst_irq.funcs = &sdma_v3_0_illegal_inst_irq_funcs; in sdma_v3_0_set_irq_funcs()
1632 * sdma_v3_0_emit_copy_buffer - copy buffer using the sDMA engine
1661 * sdma_v3_0_emit_fill_buffer - fill buffer using the sDMA engine
1695 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring; in sdma_v3_0_set_buffer_funcs()
1711 for (i = 0; i < adev->sdma.num_instances; i++) { in sdma_v3_0_set_vm_pte_funcs()
1713 &adev->sdma.instance[i].ring.sched; in sdma_v3_0_set_vm_pte_funcs()
1715 adev->vm_manager.vm_pte_num_scheds = adev->sdma.num_instances; in sdma_v3_0_set_vm_pte_funcs()