Lines Matching full:vc4
60 struct vc4_dev *vc4 = in vc4_overflow_mem_work() local
62 struct vc4_bo *bo = vc4->bin_bo; in vc4_overflow_mem_work()
67 bin_bo_slot = vc4_v3d_get_bin_slot(vc4); in vc4_overflow_mem_work()
73 spin_lock_irqsave(&vc4->job_lock, irqflags); in vc4_overflow_mem_work()
75 if (vc4->bin_alloc_overflow) { in vc4_overflow_mem_work()
82 exec = vc4_first_bin_job(vc4); in vc4_overflow_mem_work()
84 exec = vc4_last_render_job(vc4); in vc4_overflow_mem_work()
86 exec->bin_slots |= vc4->bin_alloc_overflow; in vc4_overflow_mem_work()
91 vc4->bin_alloc_used &= ~vc4->bin_alloc_overflow; in vc4_overflow_mem_work()
94 vc4->bin_alloc_overflow = BIT(bin_bo_slot); in vc4_overflow_mem_work()
96 V3D_WRITE(V3D_BPOA, bo->base.paddr + bin_bo_slot * vc4->bin_alloc_size); in vc4_overflow_mem_work()
100 spin_unlock_irqrestore(&vc4->job_lock, irqflags); in vc4_overflow_mem_work()
106 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_finish_bin_job() local
107 struct vc4_exec_info *next, *exec = vc4_first_bin_job(vc4); in vc4_irq_finish_bin_job()
113 next = vc4_first_bin_job(vc4); in vc4_irq_finish_bin_job()
126 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_cancel_bin_job() local
127 struct vc4_exec_info *exec = vc4_first_bin_job(vc4); in vc4_cancel_bin_job()
134 vc4_perfmon_stop(vc4, exec->perfmon, false); in vc4_cancel_bin_job()
136 list_move_tail(&exec->head, &vc4->bin_job_list); in vc4_cancel_bin_job()
143 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_finish_render_job() local
144 struct vc4_exec_info *exec = vc4_first_render_job(vc4); in vc4_irq_finish_render_job()
150 vc4->finished_seqno++; in vc4_irq_finish_render_job()
151 list_move_tail(&exec->head, &vc4->job_done_list); in vc4_irq_finish_render_job()
153 nextbin = vc4_first_bin_job(vc4); in vc4_irq_finish_render_job()
154 nextrender = vc4_first_render_job(vc4); in vc4_irq_finish_render_job()
161 vc4_perfmon_stop(vc4, exec->perfmon, true); in vc4_irq_finish_render_job()
181 wake_up_all(&vc4->job_wait_queue); in vc4_irq_finish_render_job()
182 schedule_work(&vc4->job_done_work); in vc4_irq_finish_render_job()
189 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq() local
206 schedule_work(&vc4->overflow_mem_work); in vc4_irq()
211 spin_lock(&vc4->job_lock); in vc4_irq()
213 spin_unlock(&vc4->job_lock); in vc4_irq()
218 spin_lock(&vc4->job_lock); in vc4_irq()
220 spin_unlock(&vc4->job_lock); in vc4_irq()
230 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_preinstall() local
232 init_waitqueue_head(&vc4->job_wait_queue); in vc4_irq_preinstall()
233 INIT_WORK(&vc4->overflow_mem_work, vc4_overflow_mem_work); in vc4_irq_preinstall()
244 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_postinstall() local
255 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_uninstall() local
266 cancel_work_sync(&vc4->overflow_mem_work); in vc4_irq_uninstall()
272 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_irq_reset() local
286 spin_lock_irqsave(&vc4->job_lock, irqflags); in vc4_irq_reset()
289 spin_unlock_irqrestore(&vc4->job_lock, irqflags); in vc4_irq_reset()