Lines Matching full:vc4
65 struct vc4_dev *vc4 = in vc4_overflow_mem_work() local
72 mutex_lock(&vc4->bin_bo_lock); in vc4_overflow_mem_work()
74 if (!vc4->bin_bo) in vc4_overflow_mem_work()
77 bo = vc4->bin_bo; in vc4_overflow_mem_work()
79 bin_bo_slot = vc4_v3d_get_bin_slot(vc4); in vc4_overflow_mem_work()
85 spin_lock_irqsave(&vc4->job_lock, irqflags); in vc4_overflow_mem_work()
87 if (vc4->bin_alloc_overflow) { in vc4_overflow_mem_work()
94 exec = vc4_first_bin_job(vc4); in vc4_overflow_mem_work()
96 exec = vc4_last_render_job(vc4); in vc4_overflow_mem_work()
98 exec->bin_slots |= vc4->bin_alloc_overflow; in vc4_overflow_mem_work()
103 vc4->bin_alloc_used &= ~vc4->bin_alloc_overflow; in vc4_overflow_mem_work()
106 vc4->bin_alloc_overflow = BIT(bin_bo_slot); in vc4_overflow_mem_work()
108 V3D_WRITE(V3D_BPOA, bo->base.dma_addr + bin_bo_slot * vc4->bin_alloc_size); in vc4_overflow_mem_work()
112 spin_unlock_irqrestore(&vc4->job_lock, irqflags); in vc4_overflow_mem_work()
115 mutex_unlock(&vc4->bin_bo_lock); in vc4_overflow_mem_work()
121 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_finish_bin_job() local
122 struct vc4_exec_info *next, *exec = vc4_first_bin_job(vc4); in vc4_irq_finish_bin_job()
130 next = vc4_first_bin_job(vc4); in vc4_irq_finish_bin_job()
143 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_cancel_bin_job() local
144 struct vc4_exec_info *exec = vc4_first_bin_job(vc4); in vc4_cancel_bin_job()
151 vc4_perfmon_stop(vc4, exec->perfmon, false); in vc4_cancel_bin_job()
153 list_move_tail(&exec->head, &vc4->bin_job_list); in vc4_cancel_bin_job()
160 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_finish_render_job() local
161 struct vc4_exec_info *exec = vc4_first_render_job(vc4); in vc4_irq_finish_render_job()
169 vc4->finished_seqno++; in vc4_irq_finish_render_job()
170 list_move_tail(&exec->head, &vc4->job_done_list); in vc4_irq_finish_render_job()
172 nextbin = vc4_first_bin_job(vc4); in vc4_irq_finish_render_job()
173 nextrender = vc4_first_render_job(vc4); in vc4_irq_finish_render_job()
180 vc4_perfmon_stop(vc4, exec->perfmon, true); in vc4_irq_finish_render_job()
200 wake_up_all(&vc4->job_wait_queue); in vc4_irq_finish_render_job()
201 schedule_work(&vc4->job_done_work); in vc4_irq_finish_render_job()
208 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq() local
225 schedule_work(&vc4->overflow_mem_work); in vc4_irq()
230 spin_lock(&vc4->job_lock); in vc4_irq()
232 spin_unlock(&vc4->job_lock); in vc4_irq()
237 spin_lock(&vc4->job_lock); in vc4_irq()
239 spin_unlock(&vc4->job_lock); in vc4_irq()
249 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_prepare() local
251 if (!vc4->v3d) in vc4_irq_prepare()
254 init_waitqueue_head(&vc4->job_wait_queue); in vc4_irq_prepare()
255 INIT_WORK(&vc4->overflow_mem_work, vc4_overflow_mem_work); in vc4_irq_prepare()
266 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_enable() local
268 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_irq_enable()
271 if (!vc4->v3d) in vc4_irq_enable()
283 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_disable() local
285 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_irq_disable()
288 if (!vc4->v3d) in vc4_irq_disable()
298 synchronize_irq(vc4->irq); in vc4_irq_disable()
300 cancel_work_sync(&vc4->overflow_mem_work); in vc4_irq_disable()
305 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_install() local
308 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_irq_install()
327 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_uninstall() local
329 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_irq_uninstall()
333 free_irq(vc4->irq, dev); in vc4_irq_uninstall()
339 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_reset() local
342 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_irq_reset()
356 spin_lock_irqsave(&vc4->job_lock, irqflags); in vc4_irq_reset()
359 spin_unlock_irqrestore(&vc4->job_lock, irqflags); in vc4_irq_reset()