Home
last modified time | relevance | path

Searched full:v3d (Results 1 – 25 of 77) sorted by relevance

1234

/linux-6.14.4/drivers/gpu/drm/v3d/
Dv3d_gem.c20 v3d_init_core(struct v3d_dev *v3d, int core) in v3d_init_core() argument
28 if (v3d->ver < 40) 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 >= 41) in v3d_idle_gca()
74 v3d_reset_by_bridge(struct v3d_dev *v3d) in v3d_reset_by_bridge() argument
[all …]
Dv3d_irq.c5 * DOC: Interrupt management for the V3D engine
41 struct v3d_dev *v3d = in v3d_overflow_mem_work() local
43 struct drm_device *dev = &v3d->drm; in v3d_overflow_mem_work()
63 spin_lock_irqsave(&v3d->job_lock, irqflags); in v3d_overflow_mem_work()
64 if (!v3d->bin_job) { in v3d_overflow_mem_work()
65 spin_unlock_irqrestore(&v3d->job_lock, irqflags); in v3d_overflow_mem_work()
70 list_add_tail(&bo->unref_head, &v3d->bin_job->render->unref_list); in v3d_overflow_mem_work()
71 spin_unlock_irqrestore(&v3d->job_lock, irqflags); in v3d_overflow_mem_work()
73 v3d_mmu_flush_all(v3d); in v3d_overflow_mem_work()
85 struct v3d_dev *v3d = arg; in v3d_irq() local
[all …]
Dv3d_drv.c5 * DOC: Broadcom V3D Graphics Driver
7 * This driver supports the Broadcom V3D 3.3 and 4.1 OpenGL ES GPUs.
8 * For V3D 2.x support, see the VC4 driver.
10 * The V3D GPU includes a tiled render (composed of a bin and render
32 #define DRIVER_NAME "v3d"
33 #define DRIVER_DESC "Broadcom V3D graphics"
48 struct v3d_dev *v3d = to_v3d_dev(dev); in v3d_get_param_ioctl() local
89 args->value = v3d_has_csd(v3d); in v3d_get_param_ioctl()
95 args->value = (v3d->ver >= 40); in v3d_get_param_ioctl()
104 args->value = v3d->perfmon_info.max_counters; in v3d_get_param_ioctl()
[all …]
Dv3d_sched.c5 * DOC: Broadcom V3D scheduling
121 v3d_switch_perfmon(struct v3d_dev *v3d, struct v3d_job *job) in v3d_switch_perfmon() argument
123 struct v3d_perfmon *perfmon = v3d->global_perfmon; in v3d_switch_perfmon()
128 if (perfmon == v3d->active_perfmon) in v3d_switch_perfmon()
131 if (perfmon != v3d->active_perfmon) in v3d_switch_perfmon()
132 v3d_perfmon_stop(v3d, v3d->active_perfmon, true); in v3d_switch_perfmon()
134 if (perfmon && v3d->active_perfmon != perfmon) in v3d_switch_perfmon()
135 v3d_perfmon_start(v3d, perfmon); in v3d_switch_perfmon()
141 struct v3d_dev *v3d = job->v3d; in v3d_job_start_stats() local
143 struct v3d_stats *global_stats = &v3d->queue[queue].stats; in v3d_job_start_stats()
[all …]
Dv3d_mmu.c5 * DOC: Broadcom V3D MMU
7 * The V3D 3.x hardware (compared to VC4) now includes an MMU. It has
8 * a single level of page tables for the V3D's 4GB address space to
38 int v3d_mmu_flush_all(struct v3d_dev *v3d) in v3d_mmu_flush_all() argument
48 dev_err(v3d->drm.dev, "MMUC flush wait idle failed\n"); in v3d_mmu_flush_all()
58 dev_err(v3d->drm.dev, "MMU TLB clear wait idle failed\n"); in v3d_mmu_flush_all()
63 int v3d_mmu_set_page_table(struct v3d_dev *v3d) in v3d_mmu_set_page_table() argument
65 V3D_WRITE(V3D_MMU_PT_PA_BASE, v3d->pt_paddr >> V3D_MMU_PAGE_SHIFT); in v3d_mmu_set_page_table()
76 (v3d->mmu_scratch_paddr >> V3D_MMU_PAGE_SHIFT) | in v3d_mmu_set_page_table()
80 return v3d_mmu_flush_all(v3d); in v3d_mmu_set_page_table()
[all …]
Dv3d_debugfs.c98 struct v3d_dev *v3d = to_v3d_dev(dev); in v3d_v3d_debugfs_regs() local
104 if (v3d->ver >= def->min_ver && v3d->ver <= def->max_ver) { in v3d_v3d_debugfs_regs()
113 if (v3d->ver >= def->min_ver && v3d->ver <= def->max_ver) { in v3d_v3d_debugfs_regs()
119 for (core = 0; core < v3d->cores; core++) { in v3d_v3d_debugfs_regs()
123 if (v3d->ver >= def->min_ver && v3d->ver <= def->max_ver) { in v3d_v3d_debugfs_regs()
133 if (v3d->ver >= def->min_ver && v3d->ver <= def->max_ver) { in v3d_v3d_debugfs_regs()
148 struct v3d_dev *v3d = to_v3d_dev(dev); in v3d_v3d_debugfs_ident() local
167 if (v3d->ver <= 42) { in v3d_v3d_debugfs_ident()
199 if (v3d->ver <= 42) { in v3d_v3d_debugfs_ident()
203 if (v3d->ver < 40) { in v3d_v3d_debugfs_ident()
[all …]
Dv3d_drv.h100 /* Short representation (e.g. 33, 41) of the V3D tech version */
103 /* Short representation (e.g. 5, 6) of the V3D tech revision */
127 /* virtual address bits from V3D to the MMU. */
130 /* Number of V3D cores. */
201 v3d_has_csd(struct v3d_dev *v3d) in v3d_has_csd() argument
203 return v3d->ver >= 41; in v3d_has_csd()
206 #define v3d_to_pdev(v3d) to_platform_device((v3d)->drm.dev) argument
210 struct v3d_dev *v3d; member
245 /* v3d seqno for signaled() test */
256 #define V3D_READ(offset) readl(v3d->hub_regs + offset)
[all …]
Dv3d_bo.c5 * DOC: V3D GEM BO management support
7 * Compared to VC4 (V3D 2.x), V3D 3.3 introduces an MMU between the
11 * Physically contiguous objects may still be imported to V3D, but the
15 * driver) for an example of how to integrate with V3D.
41 struct v3d_dev *v3d = to_v3d_dev(obj->dev); in v3d_free_object() local
49 mutex_lock(&v3d->bo_lock); in v3d_free_object()
50 v3d->bo_stats.num_allocated--; in v3d_free_object()
51 v3d->bo_stats.pages_allocated -= obj->size >> V3D_MMU_PAGE_SHIFT; in v3d_free_object()
52 mutex_unlock(&v3d->bo_lock); in v3d_free_object()
54 spin_lock(&v3d->mm_lock); in v3d_free_object()
[all …]
Dv3d_fence.c6 struct dma_fence *v3d_fence_create(struct v3d_dev *v3d, enum v3d_queue queue) in v3d_fence_create() argument
14 fence->dev = &v3d->drm; in v3d_fence_create()
16 fence->seqno = ++v3d->queue[queue].emit_seqno; in v3d_fence_create()
17 dma_fence_init(&fence->base, &v3d_fence_ops, &v3d->job_lock, in v3d_fence_create()
18 v3d->queue[queue].fence_context, fence->seqno); in v3d_fence_create()
25 return "v3d"; in v3d_fence_get_driver_name()
34 return "v3d-bin"; in v3d_fence_get_timeline_name()
36 return "v3d-render"; in v3d_fence_get_timeline_name()
38 return "v3d-tfu"; in v3d_fence_get_timeline_name()
40 return "v3d-csd"; in v3d_fence_get_timeline_name()
Dv3d_gemfs.c9 void v3d_gemfs_init(struct v3d_dev *v3d) in v3d_gemfs_init() argument
35 v3d->gemfs = gemfs; in v3d_gemfs_init()
36 drm_info(&v3d->drm, "Using Transparent Hugepages\n"); in v3d_gemfs_init()
41 v3d->gemfs = NULL; in v3d_gemfs_init()
42 drm_notice(&v3d->drm, in v3d_gemfs_init()
46 void v3d_gemfs_fini(struct v3d_dev *v3d) in v3d_gemfs_fini() argument
48 if (v3d->gemfs) in v3d_gemfs_fini()
49 kern_unmount(v3d->gemfs); in v3d_gemfs_fini()
Dv3d_perfmon.c198 void v3d_perfmon_init(struct v3d_dev *v3d) in v3d_perfmon_init() argument
203 if (v3d->ver >= 71) { in v3d_perfmon_init()
206 } else if (v3d->ver >= 42) { in v3d_perfmon_init()
211 v3d->perfmon_info.max_counters = max; in v3d_perfmon_init()
212 v3d->perfmon_info.counters = counters; in v3d_perfmon_init()
229 void v3d_perfmon_start(struct v3d_dev *v3d, struct v3d_perfmon *perfmon) in v3d_perfmon_start() argument
235 if (WARN_ON_ONCE(!perfmon || v3d->active_perfmon)) in v3d_perfmon_start()
244 v3d->ver); in v3d_perfmon_start()
248 V3D_PCTR_S1, v3d->ver); in v3d_perfmon_start()
251 V3D_PCTR_S2, v3d->ver); in v3d_perfmon_start()
[all …]
Dv3d_submit.c19 * to v3d, so we don't attach dma-buf fences to them.
54 * @job: V3D job being set up
144 DRM_ERROR("Cannot allocate memory for V3D job.\n"); in v3d_job_allocate()
159 v3d_job_init(struct v3d_dev *v3d, struct drm_file *file_priv, in v3d_job_init() argument
167 job->v3d = v3d; in v3d_job_init()
269 struct v3d_dev *v3d, in v3d_setup_csd_jobs_and_bos() argument
282 ret = v3d_job_init(v3d, file_priv, &(*job)->base, in v3d_setup_csd_jobs_and_bos()
293 ret = v3d_job_init(v3d, file_priv, *clean_job, in v3d_setup_csd_jobs_and_bos()
302 ret = v3d_lookup_bos(&v3d->drm, file_priv, *clean_job, in v3d_setup_csd_jobs_and_bos()
413 struct v3d_dev *v3d = v3d_priv->v3d; in v3d_get_cpu_indirect_csd_params() local
[all …]
DMakefile5 v3d-y := \
19 v3d-$(CONFIG_DEBUG_FS) += v3d_debugfs.o
21 obj-$(CONFIG_DRM_V3D) += v3d.o
DKconfig3 tristate "Broadcom V3D 3.x and newer"
12 V3D 3.x or newer GPUs. SoCs supported include the BCM2711,
Dv3d_sysfs.c15 struct v3d_dev *v3d = to_v3d_dev(drm); in gpu_stats_show() local
23 struct v3d_stats *stats = &v3d->queue[queue].stats; in gpu_stats_show()
Dv3d_regs.h29 /* Hub registers for shared hardware between V3D cores. */
76 /* GCA registers only exist in V3D < 41 */
140 /* Use these regs instead of the defaults (V3D 4.x only) */
149 /* V3D 4.x only */
217 /* Per-V3D-core registers */
453 /* V3D 7.x+ only */
463 /* V3D 7.x+ only */
/linux-6.14.4/drivers/gpu/drm/vc4/
Dvc4_v3d.c135 int ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev); in vc4_v3d_pm_get()
156 pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev); in vc4_v3d_pm_put()
157 pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev); in vc4_v3d_pm_put()
225 * To work around this, we allocate a single large buffer while V3D is
239 struct vc4_v3d *v3d = vc4->v3d; in bin_bo_alloc() local
244 if (!v3d) in bin_bo_alloc()
262 dev_err(&v3d->pdev->dev, in bin_bo_alloc()
374 struct vc4_v3d *v3d = dev_get_drvdata(dev); in vc4_v3d_runtime_suspend() local
375 struct vc4_dev *vc4 = v3d->vc4; in vc4_v3d_runtime_suspend()
379 clk_disable_unprepare(v3d->clk); in vc4_v3d_runtime_suspend()
[all …]
Dvc4_perfmon.c7 * DOC: VC4 V3D performance monitor module
9 * The V3D block provides 16 hardware counters which can count various events.
157 if (!vc4->v3d) { in vc4_perfmon_create_ioctl()
158 DRM_DEBUG("Creating perfmon no VC4 V3D probed\n"); in vc4_perfmon_create_ioctl()
211 if (!vc4->v3d) { in vc4_perfmon_destroy_ioctl()
212 DRM_DEBUG("Destroying perfmon no VC4 V3D probed\n"); in vc4_perfmon_destroy_ioctl()
239 if (!vc4->v3d) { in vc4_perfmon_get_values_ioctl()
240 DRM_DEBUG("Getting perfmon no VC4 V3D probed\n"); in vc4_perfmon_get_values_ioctl()
/linux-6.14.4/Documentation/gpu/
Dv3d.rst2 drm/v3d Broadcom V3D Graphics Driver
5 .. kernel-doc:: drivers/gpu/drm/v3d/v3d_drv.c
6 :doc: Broadcom V3D Graphics Driver
11 .. kernel-doc:: drivers/gpu/drm/v3d/v3d_bo.c
12 :doc: V3D GEM BO management support
16 .. kernel-doc:: drivers/gpu/drm/v3d/v3d_mmu.c
17 :doc: Broadcom V3D MMU
21 .. kernel-doc:: drivers/gpu/drm/v3d/v3d_sched.c
22 :doc: Broadcom V3D scheduling
27 .. kernel-doc:: drivers/gpu/drm/v3d/v3d_irq.c
[all …]
Dvc4.rst87 V3D binner command list (BCL) validation
93 V3D render command list (RCL) generation
104 V3D Interrupts
108 :doc: Interrupt management for the V3D engine
/linux-6.14.4/Documentation/devicetree/bindings/display/
Dbrcm,bcm2835-v3d.yaml4 $id: http://devicetree.org/schemas/display/brcm,bcm2835-v3d.yaml#
7 title: Broadcom VC4 (VideoCore4) V3D GPU
15 - brcm,bcm2835-v3d
16 - brcm,cygnus-v3d
39 v3d: v3d@7ec00000 {
40 compatible = "brcm,bcm2835-v3d";
/linux-6.14.4/Documentation/devicetree/bindings/gpu/
Dbrcm,bcm-v3d.yaml4 $id: http://devicetree.org/schemas/gpu/brcm,bcm-v3d.yaml#
7 title: Broadcom V3D GPU
19 - brcm,2711-v3d
20 - brcm,2712-v3d
21 - brcm,7268-v3d
22 - brcm,7278-v3d
66 compatible = "brcm,7268-v3d";
/linux-6.14.4/arch/arm/boot/dts/broadcom/
Dbcm2835-common.dtsi70 clock-names = "v3d", "peri_image", "h264", "isp";
138 v3d: v3d@7ec00000 { label
139 compatible = "brcm,bcm2835-v3d";
/linux-6.14.4/include/uapi/drm/
Dv3d_drm.h103 /* Enum for each of the V3D queues. */
196 * This is optional on V3D 3.3 (where the CL can set the value) but
197 * required on V3D 4.1.
241 * struct drm_v3d_create_bo - ioctl argument for creating V3D BOs.
252 * Returned offset for the BO in the V3D address space. This offset
263 * struct drm_v3d_mmap_bo - ioctl argument for mapping V3D BOs.
306 * Returns the offset for the BO in the V3D address space for this DRM fd.
611 * must no longer be used. These counters are only valid for V3D 4.2.
/linux-6.14.4/Documentation/devicetree/bindings/soc/bcm/
Dbrcm,bcm2835-pm.yaml50 - const: v3d
84 clock-names = "v3d", "peri_image", "h264", "isp";

1234