Lines Matching refs:vcn
58 INIT_DELAYED_WORK(&adev->vcn.idle_work, amdgpu_vcn_idle_work_handler); in amdgpu_vcn_sw_init()
68 r = request_firmware(&adev->vcn.fw, fw_name, adev->dev); in amdgpu_vcn_sw_init()
75 r = amdgpu_ucode_validate(adev->vcn.fw); in amdgpu_vcn_sw_init()
79 release_firmware(adev->vcn.fw); in amdgpu_vcn_sw_init()
80 adev->vcn.fw = NULL; in amdgpu_vcn_sw_init()
84 hdr = (const struct common_firmware_header *)adev->vcn.fw->data; in amdgpu_vcn_sw_init()
85 adev->vcn.fw_version = le32_to_cpu(hdr->ucode_version); in amdgpu_vcn_sw_init()
119 AMDGPU_GEM_DOMAIN_VRAM, &adev->vcn.vcpu_bo, in amdgpu_vcn_sw_init()
120 &adev->vcn.gpu_addr, &adev->vcn.cpu_addr); in amdgpu_vcn_sw_init()
133 kvfree(adev->vcn.saved_bo); in amdgpu_vcn_sw_fini()
135 amdgpu_bo_free_kernel(&adev->vcn.vcpu_bo, in amdgpu_vcn_sw_fini()
136 &adev->vcn.gpu_addr, in amdgpu_vcn_sw_fini()
137 (void **)&adev->vcn.cpu_addr); in amdgpu_vcn_sw_fini()
139 amdgpu_ring_fini(&adev->vcn.ring_dec); in amdgpu_vcn_sw_fini()
141 for (i = 0; i < adev->vcn.num_enc_rings; ++i) in amdgpu_vcn_sw_fini()
142 amdgpu_ring_fini(&adev->vcn.ring_enc[i]); in amdgpu_vcn_sw_fini()
144 amdgpu_ring_fini(&adev->vcn.ring_jpeg); in amdgpu_vcn_sw_fini()
146 release_firmware(adev->vcn.fw); in amdgpu_vcn_sw_fini()
156 cancel_delayed_work_sync(&adev->vcn.idle_work); in amdgpu_vcn_suspend()
158 if (adev->vcn.vcpu_bo == NULL) in amdgpu_vcn_suspend()
161 size = amdgpu_bo_size(adev->vcn.vcpu_bo); in amdgpu_vcn_suspend()
162 ptr = adev->vcn.cpu_addr; in amdgpu_vcn_suspend()
164 adev->vcn.saved_bo = kvmalloc(size, GFP_KERNEL); in amdgpu_vcn_suspend()
165 if (!adev->vcn.saved_bo) in amdgpu_vcn_suspend()
168 memcpy_fromio(adev->vcn.saved_bo, ptr, size); in amdgpu_vcn_suspend()
178 if (adev->vcn.vcpu_bo == NULL) in amdgpu_vcn_resume()
181 size = amdgpu_bo_size(adev->vcn.vcpu_bo); in amdgpu_vcn_resume()
182 ptr = adev->vcn.cpu_addr; in amdgpu_vcn_resume()
184 if (adev->vcn.saved_bo != NULL) { in amdgpu_vcn_resume()
185 memcpy_toio(ptr, adev->vcn.saved_bo, size); in amdgpu_vcn_resume()
186 kvfree(adev->vcn.saved_bo); in amdgpu_vcn_resume()
187 adev->vcn.saved_bo = NULL; in amdgpu_vcn_resume()
192 hdr = (const struct common_firmware_header *)adev->vcn.fw->data; in amdgpu_vcn_resume()
195 memcpy_toio(adev->vcn.cpu_addr, adev->vcn.fw->data + offset, in amdgpu_vcn_resume()
209 container_of(work, struct amdgpu_device, vcn.idle_work.work); in amdgpu_vcn_idle_work_handler()
210 unsigned fences = amdgpu_fence_count_emitted(&adev->vcn.ring_dec); in amdgpu_vcn_idle_work_handler()
213 for (i = 0; i < adev->vcn.num_enc_rings; ++i) { in amdgpu_vcn_idle_work_handler()
214 fences += amdgpu_fence_count_emitted(&adev->vcn.ring_enc[i]); in amdgpu_vcn_idle_work_handler()
217 fences += amdgpu_fence_count_emitted(&adev->vcn.ring_jpeg); in amdgpu_vcn_idle_work_handler()
226 schedule_delayed_work(&adev->vcn.idle_work, VCN_IDLE_TIMEOUT); in amdgpu_vcn_idle_work_handler()
233 bool set_clocks = !cancel_delayed_work_sync(&adev->vcn.idle_work); in amdgpu_vcn_ring_begin_use()
246 schedule_delayed_work(&ring->adev->vcn.idle_work, VCN_IDLE_TIMEOUT); in amdgpu_vcn_ring_end_use()