Lines Matching full:v3d

22 v3d_init_core(struct v3d_dev *v3d, int core)  in v3d_init_core()  argument
30 if (v3d->ver < 40) in v3d_init_core()
42 v3d_init_hw_state(struct v3d_dev *v3d) in v3d_init_hw_state() argument
44 v3d_init_core(v3d, 0); in v3d_init_hw_state()
48 v3d_idle_axi(struct v3d_dev *v3d, int core) in v3d_idle_axi() argument
61 v3d_idle_gca(struct v3d_dev *v3d) in v3d_idle_gca() argument
63 if (v3d->ver >= 41) in v3d_idle_gca()
76 v3d_reset_by_bridge(struct v3d_dev *v3d) in v3d_reset_by_bridge() argument
99 v3d_reset_v3d(struct v3d_dev *v3d) in v3d_reset_v3d() argument
101 if (v3d->reset) in v3d_reset_v3d()
102 reset_control_reset(v3d->reset); in v3d_reset_v3d()
104 v3d_reset_by_bridge(v3d); in v3d_reset_v3d()
106 v3d_init_hw_state(v3d); in v3d_reset_v3d()
110 v3d_reset(struct v3d_dev *v3d) in v3d_reset() argument
112 struct drm_device *dev = &v3d->drm; in v3d_reset()
121 v3d_idle_axi(v3d, 0); in v3d_reset()
123 v3d_idle_gca(v3d); in v3d_reset()
124 v3d_reset_v3d(v3d); in v3d_reset()
126 v3d_mmu_set_page_table(v3d); in v3d_reset()
127 v3d_irq_reset(v3d); in v3d_reset()
129 v3d_perfmon_stop(v3d, v3d->active_perfmon, false); in v3d_reset()
135 v3d_flush_l3(struct v3d_dev *v3d) in v3d_flush_l3() argument
137 if (v3d->ver < 41) { in v3d_flush_l3()
143 if (v3d->ver < 33) { in v3d_flush_l3()
151 * uniforms and instructions on V3D 3.2.
154 v3d_invalidate_l2c(struct v3d_dev *v3d, int core) in v3d_invalidate_l2c() argument
156 if (v3d->ver > 32) in v3d_invalidate_l2c()
166 v3d_flush_l2t(struct v3d_dev *v3d, int core) in v3d_flush_l2t() argument
175 mutex_lock(&v3d->cache_clean_lock); in v3d_flush_l2t()
179 mutex_unlock(&v3d->cache_clean_lock); in v3d_flush_l2t()
191 v3d_clean_caches(struct v3d_dev *v3d) in v3d_clean_caches() argument
193 struct drm_device *dev = &v3d->drm; in v3d_clean_caches()
204 mutex_lock(&v3d->cache_clean_lock); in v3d_clean_caches()
214 mutex_unlock(&v3d->cache_clean_lock); in v3d_clean_caches()
221 v3d_invalidate_slices(struct v3d_dev *v3d, int core) in v3d_invalidate_slices() argument
231 v3d_invalidate_caches(struct v3d_dev *v3d) in v3d_invalidate_caches() argument
238 v3d_flush_l3(v3d); in v3d_invalidate_caches()
239 v3d_invalidate_l2c(v3d, 0); in v3d_invalidate_caches()
240 v3d_flush_l2t(v3d, 0); in v3d_invalidate_caches()
241 v3d_invalidate_slices(v3d, 0); in v3d_invalidate_caches()
249 * to v3d, so we don't attach dma-buf fences to them.
279 * @job: V3D job being set up
377 pm_runtime_mark_last_busy(job->v3d->drm.dev); in v3d_job_free()
378 pm_runtime_put_autosuspend(job->v3d->drm.dev); in v3d_job_free()
439 v3d_job_init(struct v3d_dev *v3d, struct drm_file *file_priv, in v3d_job_init() argument
446 job->v3d = v3d; in v3d_job_init()
449 ret = pm_runtime_get_sync(v3d->drm.dev); in v3d_job_init()
468 pm_runtime_put_autosuspend(v3d->drm.dev); in v3d_job_init()
520 * v3d_submit_cl_ioctl() - Submits a job (frame) to the V3D.
535 struct v3d_dev *v3d = to_v3d_dev(dev); in v3d_submit_cl_ioctl() local
545 trace_v3d_submit_cl_ioctl(&v3d->drm, args->rcl_start, args->rcl_end); in v3d_submit_cl_ioctl()
564 ret = v3d_job_init(v3d, file_priv, &render->base, in v3d_submit_cl_ioctl()
578 ret = v3d_job_init(v3d, file_priv, &bin->base, in v3d_submit_cl_ioctl()
601 ret = v3d_job_init(v3d, file_priv, clean_job, v3d_job_free, 0); in v3d_submit_cl_ioctl()
632 mutex_lock(&v3d->sched_lock); in v3d_submit_cl_ioctl()
663 mutex_unlock(&v3d->sched_lock); in v3d_submit_cl_ioctl()
680 mutex_unlock(&v3d->sched_lock); in v3d_submit_cl_ioctl()
694 * v3d_submit_tfu_ioctl() - Submits a TFU (texture formatting) job to the V3D.
706 struct v3d_dev *v3d = to_v3d_dev(dev); in v3d_submit_tfu_ioctl() local
713 trace_v3d_submit_tfu_ioctl(&v3d->drm, args->iia); in v3d_submit_tfu_ioctl()
719 ret = v3d_job_init(v3d, file_priv, &job->base, in v3d_submit_tfu_ioctl()
763 mutex_lock(&v3d->sched_lock); in v3d_submit_tfu_ioctl()
767 mutex_unlock(&v3d->sched_lock); in v3d_submit_tfu_ioctl()
779 mutex_unlock(&v3d->sched_lock); in v3d_submit_tfu_ioctl()
789 * v3d_submit_csd_ioctl() - Submits a CSD (texture formatting) job to the V3D.
801 struct v3d_dev *v3d = to_v3d_dev(dev); in v3d_submit_csd_ioctl() local
809 trace_v3d_submit_csd_ioctl(&v3d->drm, args->cfg[5], args->cfg[6]); in v3d_submit_csd_ioctl()
811 if (!v3d_has_csd(v3d)) { in v3d_submit_csd_ioctl()
820 ret = v3d_job_init(v3d, file_priv, &job->base, in v3d_submit_csd_ioctl()
834 ret = v3d_job_init(v3d, file_priv, clean_job, v3d_job_free, 0); in v3d_submit_csd_ioctl()
861 mutex_lock(&v3d->sched_lock); in v3d_submit_csd_ioctl()
874 mutex_unlock(&v3d->sched_lock); in v3d_submit_csd_ioctl()
888 mutex_unlock(&v3d->sched_lock); in v3d_submit_csd_ioctl()
901 struct v3d_dev *v3d = to_v3d_dev(dev); in v3d_gem_init() local
906 v3d->queue[i].fence_context = dma_fence_context_alloc(1); in v3d_gem_init()
908 spin_lock_init(&v3d->mm_lock); in v3d_gem_init()
909 spin_lock_init(&v3d->job_lock); in v3d_gem_init()
910 mutex_init(&v3d->bo_lock); in v3d_gem_init()
911 mutex_init(&v3d->reset_lock); in v3d_gem_init()
912 mutex_init(&v3d->sched_lock); in v3d_gem_init()
913 mutex_init(&v3d->cache_clean_lock); in v3d_gem_init()
919 drm_mm_init(&v3d->mm, 1, pt_size / sizeof(u32) - 1); in v3d_gem_init()
921 v3d->pt = dma_alloc_wc(v3d->drm.dev, pt_size, in v3d_gem_init()
922 &v3d->pt_paddr, in v3d_gem_init()
924 if (!v3d->pt) { in v3d_gem_init()
925 drm_mm_takedown(&v3d->mm); in v3d_gem_init()
926 dev_err(v3d->drm.dev, in v3d_gem_init()
932 v3d_init_hw_state(v3d); in v3d_gem_init()
933 v3d_mmu_set_page_table(v3d); in v3d_gem_init()
935 ret = v3d_sched_init(v3d); in v3d_gem_init()
937 drm_mm_takedown(&v3d->mm); in v3d_gem_init()
938 dma_free_coherent(v3d->drm.dev, 4096 * 1024, (void *)v3d->pt, in v3d_gem_init()
939 v3d->pt_paddr); in v3d_gem_init()
948 struct v3d_dev *v3d = to_v3d_dev(dev); in v3d_gem_destroy() local
950 v3d_sched_fini(v3d); in v3d_gem_destroy()
953 * unregistering V3D. in v3d_gem_destroy()
955 WARN_ON(v3d->bin_job); in v3d_gem_destroy()
956 WARN_ON(v3d->render_job); in v3d_gem_destroy()
958 drm_mm_takedown(&v3d->mm); in v3d_gem_destroy()
960 dma_free_coherent(v3d->drm.dev, 4096 * 1024, (void *)v3d->pt, in v3d_gem_destroy()
961 v3d->pt_paddr); in v3d_gem_destroy()