Lines Matching refs:v3d
20 v3d_init_core(struct v3d_dev *v3d, int core) in v3d_init_core() argument
28 if (v3d->ver < V3D_GEN_41) in v3d_init_core()
40 v3d_init_hw_state(struct v3d_dev *v3d) in v3d_init_hw_state() argument
42 v3d_init_core(v3d, 0); in v3d_init_hw_state()
46 v3d_idle_axi(struct v3d_dev *v3d, int core) in v3d_idle_axi() argument
48 V3D_CORE_WRITE(core, V3D_GMP_CFG(v3d->ver), V3D_GMP_CFG_STOP_REQ); in v3d_idle_axi()
50 if (wait_for((V3D_CORE_READ(core, V3D_GMP_STATUS(v3d->ver)) & in v3d_idle_axi()
59 v3d_idle_gca(struct v3d_dev *v3d) in v3d_idle_gca() argument
61 if (v3d->ver >= V3D_GEN_41) in v3d_idle_gca()
74 v3d_reset_by_bridge(struct v3d_dev *v3d) in v3d_reset_by_bridge() argument
97 v3d_reset_v3d(struct v3d_dev *v3d) in v3d_reset_v3d() argument
99 if (v3d->reset) in v3d_reset_v3d()
100 reset_control_reset(v3d->reset); in v3d_reset_v3d()
102 v3d_reset_by_bridge(v3d); in v3d_reset_v3d()
104 v3d_init_hw_state(v3d); in v3d_reset_v3d()
108 v3d_reset_sms(struct v3d_dev *v3d) in v3d_reset_sms() argument
110 if (v3d->ver < V3D_GEN_71) in v3d_reset_sms()
124 v3d_reset(struct v3d_dev *v3d) in v3d_reset() argument
126 struct drm_device *dev = &v3d->drm; in v3d_reset()
135 v3d_idle_axi(v3d, 0); in v3d_reset()
137 v3d_irq_disable(v3d); in v3d_reset()
139 v3d_idle_gca(v3d); in v3d_reset()
140 v3d_reset_sms(v3d); in v3d_reset()
141 v3d_reset_v3d(v3d); in v3d_reset()
143 v3d_mmu_set_page_table(v3d); in v3d_reset()
144 v3d_irq_reset(v3d); in v3d_reset()
146 v3d_perfmon_stop(v3d, v3d->active_perfmon, false); in v3d_reset()
152 v3d_flush_l3(struct v3d_dev *v3d) in v3d_flush_l3() argument
154 if (v3d->ver < V3D_GEN_41) { in v3d_flush_l3()
160 if (v3d->ver < V3D_GEN_33) { in v3d_flush_l3()
171 v3d_invalidate_l2c(struct v3d_dev *v3d, int core) in v3d_invalidate_l2c() argument
173 if (v3d->ver >= V3D_GEN_33) in v3d_invalidate_l2c()
183 v3d_flush_l2t(struct v3d_dev *v3d, int core) in v3d_flush_l2t() argument
192 mutex_lock(&v3d->cache_clean_lock); in v3d_flush_l2t()
196 mutex_unlock(&v3d->cache_clean_lock); in v3d_flush_l2t()
208 v3d_clean_caches(struct v3d_dev *v3d) in v3d_clean_caches() argument
210 struct drm_device *dev = &v3d->drm; in v3d_clean_caches()
221 mutex_lock(&v3d->cache_clean_lock); in v3d_clean_caches()
231 mutex_unlock(&v3d->cache_clean_lock); in v3d_clean_caches()
238 v3d_invalidate_slices(struct v3d_dev *v3d, int core) in v3d_invalidate_slices() argument
248 v3d_invalidate_caches(struct v3d_dev *v3d) in v3d_invalidate_caches() argument
255 v3d_flush_l3(v3d); in v3d_invalidate_caches()
256 v3d_invalidate_l2c(v3d, 0); in v3d_invalidate_caches()
257 v3d_flush_l2t(v3d, 0); in v3d_invalidate_caches()
258 v3d_invalidate_slices(v3d, 0); in v3d_invalidate_caches()
264 struct v3d_dev *v3d = to_v3d_dev(dev); in v3d_gem_init() local
269 struct v3d_queue_state *queue = &v3d->queue[i]; in v3d_gem_init()
276 spin_lock_init(&v3d->mm_lock); in v3d_gem_init()
277 spin_lock_init(&v3d->job_lock); in v3d_gem_init()
278 ret = drmm_mutex_init(dev, &v3d->bo_lock); in v3d_gem_init()
281 ret = drmm_mutex_init(dev, &v3d->reset_lock); in v3d_gem_init()
284 ret = drmm_mutex_init(dev, &v3d->sched_lock); in v3d_gem_init()
287 ret = drmm_mutex_init(dev, &v3d->cache_clean_lock); in v3d_gem_init()
295 drm_mm_init(&v3d->mm, 1, pt_size / sizeof(u32) - 1); in v3d_gem_init()
297 v3d->pt = dma_alloc_wc(v3d->drm.dev, pt_size, in v3d_gem_init()
298 &v3d->pt_paddr, in v3d_gem_init()
300 if (!v3d->pt) { in v3d_gem_init()
301 drm_mm_takedown(&v3d->mm); in v3d_gem_init()
302 dev_err(v3d->drm.dev, in v3d_gem_init()
307 v3d_init_hw_state(v3d); in v3d_gem_init()
308 v3d_mmu_set_page_table(v3d); in v3d_gem_init()
310 v3d_gemfs_init(v3d); in v3d_gem_init()
312 ret = v3d_sched_init(v3d); in v3d_gem_init()
314 drm_mm_takedown(&v3d->mm); in v3d_gem_init()
315 dma_free_coherent(v3d->drm.dev, pt_size, (void *)v3d->pt, in v3d_gem_init()
316 v3d->pt_paddr); in v3d_gem_init()
326 struct v3d_dev *v3d = to_v3d_dev(dev); in v3d_gem_destroy() local
328 v3d_sched_fini(v3d); in v3d_gem_destroy()
329 v3d_gemfs_fini(v3d); in v3d_gem_destroy()
334 WARN_ON(v3d->bin_job); in v3d_gem_destroy()
335 WARN_ON(v3d->render_job); in v3d_gem_destroy()
336 WARN_ON(v3d->tfu_job); in v3d_gem_destroy()
337 WARN_ON(v3d->csd_job); in v3d_gem_destroy()
339 drm_mm_takedown(&v3d->mm); in v3d_gem_destroy()
341 dma_free_coherent(v3d->drm.dev, 4096 * 1024, (void *)v3d->pt, in v3d_gem_destroy()
342 v3d->pt_paddr); in v3d_gem_destroy()