| /kernel/linux/linux-6.6/drivers/gpu/drm/vc4/ |
| D | vc4_bo.c | 7 * DOC: VC4 GEM BO management support 9 * The VC4 GPU architecture (both scanout and rendering) has direct 44 static void vc4_bo_stats_print(struct drm_printer *p, struct vc4_dev *vc4) in vc4_bo_stats_print() argument 48 for (i = 0; i < vc4->num_labels; i++) { in vc4_bo_stats_print() 49 if (!vc4->bo_labels[i].num_allocated) in vc4_bo_stats_print() 53 vc4->bo_labels[i].name, in vc4_bo_stats_print() 54 vc4->bo_labels[i].size_allocated / 1024, in vc4_bo_stats_print() 55 vc4->bo_labels[i].num_allocated); in vc4_bo_stats_print() 58 mutex_lock(&vc4->purgeable.lock); in vc4_bo_stats_print() 59 if (vc4->purgeable.num) in vc4_bo_stats_print() [all …]
|
| D | vc4_irq.c | 63 struct vc4_dev *vc4 = in vc4_overflow_mem_work() local 70 mutex_lock(&vc4->bin_bo_lock); in vc4_overflow_mem_work() 72 if (!vc4->bin_bo) in vc4_overflow_mem_work() 75 bo = vc4->bin_bo; in vc4_overflow_mem_work() 77 bin_bo_slot = vc4_v3d_get_bin_slot(vc4); in vc4_overflow_mem_work() 83 spin_lock_irqsave(&vc4->job_lock, irqflags); in vc4_overflow_mem_work() 85 if (vc4->bin_alloc_overflow) { in vc4_overflow_mem_work() 92 exec = vc4_first_bin_job(vc4); in vc4_overflow_mem_work() 94 exec = vc4_last_render_job(vc4); in vc4_overflow_mem_work() 96 exec->bin_slots |= vc4->bin_alloc_overflow; in vc4_overflow_mem_work() [all …]
|
| D | vc4_v3d.c | 101 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_v3d_debugfs_ident() local 102 int ret = vc4_v3d_pm_get(vc4); in vc4_v3d_debugfs_ident() 117 vc4_v3d_pm_put(vc4); in vc4_v3d_debugfs_ident() 128 vc4_v3d_pm_get(struct vc4_dev *vc4) in vc4_v3d_pm_get() argument 130 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_v3d_pm_get() 133 mutex_lock(&vc4->power_lock); in vc4_v3d_pm_get() 134 if (vc4->power_refcount++ == 0) { in vc4_v3d_pm_get() 135 int ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev); in vc4_v3d_pm_get() 138 vc4->power_refcount--; in vc4_v3d_pm_get() 139 mutex_unlock(&vc4->power_lock); in vc4_v3d_pm_get() [all …]
|
| D | vc4_perfmon.c | 7 * DOC: VC4 V3D performance monitor module 20 struct vc4_dev *vc4; in vc4_perfmon_get() local 25 vc4 = perfmon->dev; in vc4_perfmon_get() 26 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_perfmon_get() 34 struct vc4_dev *vc4; in vc4_perfmon_put() local 39 vc4 = perfmon->dev; in vc4_perfmon_put() 40 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_perfmon_put() 47 void vc4_perfmon_start(struct vc4_dev *vc4, struct vc4_perfmon *perfmon) in vc4_perfmon_start() argument 52 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_perfmon_start() 55 if (WARN_ON_ONCE(!perfmon || vc4->active_perfmon)) in vc4_perfmon_start() [all …]
|
| D | vc4_gem.c | 42 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_queue_hangcheck() local 44 mod_timer(&vc4->hangcheck.timer, in vc4_queue_hangcheck() 74 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_get_hang_state_ioctl() local 79 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_get_hang_state_ioctl() 82 if (!vc4->v3d) { in vc4_get_hang_state_ioctl() 83 DRM_DEBUG("VC4_GET_HANG_STATE with no VC4 V3D probed\n"); in vc4_get_hang_state_ioctl() 87 spin_lock_irqsave(&vc4->job_lock, irqflags); in vc4_get_hang_state_ioctl() 88 kernel_state = vc4->hang_state; in vc4_get_hang_state_ioctl() 90 spin_unlock_irqrestore(&vc4->job_lock, irqflags); in vc4_get_hang_state_ioctl() 100 spin_unlock_irqrestore(&vc4->job_lock, irqflags); in vc4_get_hang_state_ioctl() [all …]
|
| D | vc4_drv.c | 8 * DOC: Broadcom VC4 Graphics Driver 46 #define DRIVER_NAME "vc4" 47 #define DRIVER_DESC "Broadcom VC4 graphics" 94 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_get_param_ioctl() local 101 if (WARN_ON_ONCE(vc4->is_vc5)) in vc4_get_param_ioctl() 104 if (!vc4->v3d) in vc4_get_param_ioctl() 109 ret = vc4_v3d_pm_get(vc4); in vc4_get_param_ioctl() 113 vc4_v3d_pm_put(vc4); in vc4_get_param_ioctl() 116 ret = vc4_v3d_pm_get(vc4); in vc4_get_param_ioctl() 120 vc4_v3d_pm_put(vc4); in vc4_get_param_ioctl() [all …]
|
| D | vc4_hvs.c | 7 * DOC: VC4 HVS module. 72 struct drm_device *drm = &hvs->vc4->base; in vc4_hvs_dump_state() 98 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_hvs_debugfs_underrun() local 101 drm_printf(&p, "%d\n", atomic_read(&vc4->underrun)); in vc4_hvs_debugfs_underrun() 110 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_hvs_debugfs_dlist() local 111 struct vc4_hvs *hvs = vc4->hvs; in vc4_hvs_debugfs_dlist() 131 dlist_word = readl((u32 __iomem *)vc4->hvs->dlist + j); in vc4_hvs_debugfs_dlist() 218 struct drm_device *drm = &hvs->vc4->base; in vc4_hvs_lut_load() 227 if (hvs->vc4->is_vc5) in vc4_hvs_lut_load() 267 struct drm_device *drm = &hvs->vc4->base; in vc4_hvs_get_fifo_frame_count() [all …]
|
| D | vc4_kms.c | 7 * DOC: VC4 KMS 50 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_get_ctm_state() local 54 ret = drm_modeset_lock(&vc4->ctm_state_lock, state->acquire_ctx); in vc4_get_ctm_state() 94 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_ctm_obj_fini() local 96 drm_atomic_private_obj_fini(&vc4->ctm_manager); in vc4_ctm_obj_fini() 99 static int vc4_ctm_obj_init(struct vc4_dev *vc4) in vc4_ctm_obj_init() argument 103 drm_modeset_lock_init(&vc4->ctm_state_lock); in vc4_ctm_obj_init() 109 drm_atomic_private_obj_init(&vc4->base, &vc4->ctm_manager, &ctm_state->base, in vc4_ctm_obj_init() 112 return drmm_add_action_or_reset(&vc4->base, vc4_ctm_obj_fini, NULL); in vc4_ctm_obj_init() 135 vc4_ctm_commit(struct vc4_dev *vc4, struct drm_atomic_state *state) in vc4_ctm_commit() argument [all …]
|
| D | Kconfig | 3 tristate "Broadcom VC4 Graphics" 24 VC4 GPU, such as the Raspberry Pi or other BCM2708/BCM2835. 31 bool "Broadcom VC4 HDMI CEC Support" 35 Choose this option if you have a Broadcom VC4 GPU 39 tristate "KUnit tests for VC4" if !KUNIT_ALL_TESTS 44 This builds unit tests for the VC4 DRM/KMS driver. This option is 46 developers working on the VC4 driver.
|
| /kernel/linux/linux-5.10/drivers/gpu/drm/vc4/ |
| D | vc4_bo.c | 7 * DOC: VC4 GEM BO management support 9 * The VC4 GPU architecture (both scanout and rendering) has direct 40 static void vc4_bo_stats_print(struct drm_printer *p, struct vc4_dev *vc4) in vc4_bo_stats_print() argument 44 for (i = 0; i < vc4->num_labels; i++) { in vc4_bo_stats_print() 45 if (!vc4->bo_labels[i].num_allocated) in vc4_bo_stats_print() 49 vc4->bo_labels[i].name, in vc4_bo_stats_print() 50 vc4->bo_labels[i].size_allocated / 1024, in vc4_bo_stats_print() 51 vc4->bo_labels[i].num_allocated); in vc4_bo_stats_print() 54 mutex_lock(&vc4->purgeable.lock); in vc4_bo_stats_print() 55 if (vc4->purgeable.num) in vc4_bo_stats_print() [all …]
|
| D | vc4_irq.c | 60 struct vc4_dev *vc4 = in vc4_overflow_mem_work() local 67 mutex_lock(&vc4->bin_bo_lock); in vc4_overflow_mem_work() 69 if (!vc4->bin_bo) in vc4_overflow_mem_work() 72 bo = vc4->bin_bo; in vc4_overflow_mem_work() 74 bin_bo_slot = vc4_v3d_get_bin_slot(vc4); in vc4_overflow_mem_work() 80 spin_lock_irqsave(&vc4->job_lock, irqflags); in vc4_overflow_mem_work() 82 if (vc4->bin_alloc_overflow) { in vc4_overflow_mem_work() 89 exec = vc4_first_bin_job(vc4); in vc4_overflow_mem_work() 91 exec = vc4_last_render_job(vc4); in vc4_overflow_mem_work() 93 exec->bin_slots |= vc4->bin_alloc_overflow; in vc4_overflow_mem_work() [all …]
|
| D | vc4_v3d.c | 103 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_v3d_debugfs_ident() local 104 int ret = vc4_v3d_pm_get(vc4); in vc4_v3d_debugfs_ident() 119 vc4_v3d_pm_put(vc4); in vc4_v3d_debugfs_ident() 130 vc4_v3d_pm_get(struct vc4_dev *vc4) in vc4_v3d_pm_get() argument 132 mutex_lock(&vc4->power_lock); in vc4_v3d_pm_get() 133 if (vc4->power_refcount++ == 0) { in vc4_v3d_pm_get() 134 int ret = pm_runtime_get_sync(&vc4->v3d->pdev->dev); in vc4_v3d_pm_get() 137 vc4->power_refcount--; in vc4_v3d_pm_get() 138 mutex_unlock(&vc4->power_lock); in vc4_v3d_pm_get() 142 mutex_unlock(&vc4->power_lock); in vc4_v3d_pm_get() [all …]
|
| D | vc4_gem.c | 42 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_queue_hangcheck() local 44 mod_timer(&vc4->hangcheck.timer, in vc4_queue_hangcheck() 74 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_get_hang_state_ioctl() local 79 if (!vc4->v3d) { in vc4_get_hang_state_ioctl() 80 DRM_DEBUG("VC4_GET_HANG_STATE with no VC4 V3D probed\n"); in vc4_get_hang_state_ioctl() 84 spin_lock_irqsave(&vc4->job_lock, irqflags); in vc4_get_hang_state_ioctl() 85 kernel_state = vc4->hang_state; in vc4_get_hang_state_ioctl() 87 spin_unlock_irqrestore(&vc4->job_lock, irqflags); in vc4_get_hang_state_ioctl() 97 spin_unlock_irqrestore(&vc4->job_lock, irqflags); in vc4_get_hang_state_ioctl() 101 vc4->hang_state = NULL; in vc4_get_hang_state_ioctl() [all …]
|
| D | vc4_kms.c | 7 * DOC: VC4 KMS 67 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_get_ctm_state() local 71 ret = drm_modeset_lock(&vc4->ctm_state_lock, state->acquire_ctx); in vc4_get_ctm_state() 111 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_ctm_obj_fini() local 113 drm_atomic_private_obj_fini(&vc4->ctm_manager); in vc4_ctm_obj_fini() 116 static int vc4_ctm_obj_init(struct vc4_dev *vc4) in vc4_ctm_obj_init() argument 120 drm_modeset_lock_init(&vc4->ctm_state_lock); in vc4_ctm_obj_init() 126 drm_atomic_private_obj_init(&vc4->base, &vc4->ctm_manager, &ctm_state->base, in vc4_ctm_obj_init() 129 return drmm_add_action_or_reset(&vc4->base, vc4_ctm_obj_fini, NULL); in vc4_ctm_obj_init() 152 vc4_ctm_commit(struct vc4_dev *vc4, struct drm_atomic_state *state) in vc4_ctm_commit() argument [all …]
|
| D | vc4_drv.c | 8 * DOC: Broadcom VC4 Graphics Driver 44 #define DRIVER_NAME "vc4" 45 #define DRIVER_DESC "Broadcom VC4 graphics" 70 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_get_param_ioctl() local 77 if (!vc4->v3d) in vc4_get_param_ioctl() 82 ret = vc4_v3d_pm_get(vc4); in vc4_get_param_ioctl() 86 vc4_v3d_pm_put(vc4); in vc4_get_param_ioctl() 89 ret = vc4_v3d_pm_get(vc4); in vc4_get_param_ioctl() 93 vc4_v3d_pm_put(vc4); in vc4_get_param_ioctl() 96 ret = vc4_v3d_pm_get(vc4); in vc4_get_param_ioctl() [all …]
|
| D | vc4_perfmon.c | 7 * DOC: VC4 V3D performance monitor module 30 void vc4_perfmon_start(struct vc4_dev *vc4, struct vc4_perfmon *perfmon) in vc4_perfmon_start() argument 35 if (WARN_ON_ONCE(!perfmon || vc4->active_perfmon)) in vc4_perfmon_start() 44 vc4->active_perfmon = perfmon; in vc4_perfmon_start() 47 void vc4_perfmon_stop(struct vc4_dev *vc4, struct vc4_perfmon *perfmon, in vc4_perfmon_stop() argument 52 if (WARN_ON_ONCE(!vc4->active_perfmon || in vc4_perfmon_stop() 53 perfmon != vc4->active_perfmon)) in vc4_perfmon_stop() 62 vc4->active_perfmon = NULL; in vc4_perfmon_stop() 103 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_perfmon_create_ioctl() local 110 if (!vc4->v3d) { in vc4_perfmon_create_ioctl() [all …]
|
| D | vc4_hvs.c | 7 * DOC: VC4 HVS module. 69 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_hvs_dump_state() local 70 struct drm_printer p = drm_info_printer(&vc4->hvs->pdev->dev); in vc4_hvs_dump_state() 73 drm_print_regset32(&p, &vc4->hvs->regset); in vc4_hvs_dump_state() 79 readl((u32 __iomem *)vc4->hvs->dlist + i + 0), in vc4_hvs_dump_state() 80 readl((u32 __iomem *)vc4->hvs->dlist + i + 1), in vc4_hvs_dump_state() 81 readl((u32 __iomem *)vc4->hvs->dlist + i + 2), in vc4_hvs_dump_state() 82 readl((u32 __iomem *)vc4->hvs->dlist + i + 3)); in vc4_hvs_dump_state() 90 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_hvs_debugfs_underrun() local 93 drm_printf(&p, "%d\n", atomic_read(&vc4->underrun)); in vc4_hvs_debugfs_underrun() [all …]
|
| D | vc4_debugfs.c | 26 struct vc4_dev *vc4 = to_vc4_dev(minor->dev); in vc4_debugfs_init() local 30 minor->debugfs_root, &vc4->load_tracker_enabled); in vc4_debugfs_init() 32 list_for_each_entry(entry, &vc4->debugfs_list, link) { in vc4_debugfs_init() 50 * Registers a debugfs file with a callback function for a vc4 component. 53 * called a given DRM minor, while the various VC4 components want to 63 struct vc4_dev *vc4 = to_vc4_dev(dev); in vc4_debugfs_add_file() local 75 list_add(&entry->link, &vc4->debugfs_list); in vc4_debugfs_add_file()
|
| D | vc4_drv.h | 261 /* Time in jiffies when the BO was put in vc4->bo_cache. */ 297 /* vc4 seqno for signaled() test */ 314 struct vc4_dev *vc4; member 547 #define V3D_READ(offset) readl(vc4->v3d->regs + offset) 548 #define V3D_WRITE(offset, val) writel(val, vc4->v3d->regs + offset) 549 #define HVS_READ(offset) readl(vc4->hvs->regs + offset) 550 #define HVS_WRITE(offset, val) writel(val, vc4->hvs->regs + offset) 584 /* Pointers for our position in vc4->job_list */ 685 vc4_first_bin_job(struct vc4_dev *vc4) in vc4_first_bin_job() argument 687 return list_first_entry_or_null(&vc4->bin_job_list, in vc4_first_bin_job() [all …]
|
| D | Kconfig | 3 tristate "Broadcom VC4 Graphics" 18 VC4 GPU, such as the Raspberry Pi or other BCM2708/BCM2835. 25 bool "Broadcom VC4 HDMI CEC Support" 29 Choose this option if you have a Broadcom VC4 GPU
|
| /kernel/linux/linux-5.10/Documentation/gpu/ |
| D | vc4.rst | 2 drm/vc4 Broadcom VC4 Graphics Driver 5 .. kernel-doc:: drivers/gpu/drm/vc4/vc4_drv.c 6 :doc: Broadcom VC4 Graphics Driver 18 .. kernel-doc:: drivers/gpu/drm/vc4/vc4_crtc.c 19 :doc: VC4 CRTC module 24 .. kernel-doc:: drivers/gpu/drm/vc4/vc4_hvs.c 25 :doc: VC4 HVS module. 30 .. kernel-doc:: drivers/gpu/drm/vc4/vc4_plane.c 31 :doc: VC4 plane module 36 .. kernel-doc:: drivers/gpu/drm/vc4/vc4_hdmi.c [all …]
|
| /kernel/linux/linux-6.6/Documentation/gpu/ |
| D | vc4.rst | 2 drm/vc4 Broadcom VC4 Graphics Driver 5 .. kernel-doc:: drivers/gpu/drm/vc4/vc4_drv.c 6 :doc: Broadcom VC4 Graphics Driver 18 .. kernel-doc:: drivers/gpu/drm/vc4/vc4_crtc.c 19 :doc: VC4 CRTC module 24 .. kernel-doc:: drivers/gpu/drm/vc4/vc4_hvs.c 25 :doc: VC4 HVS module. 30 .. kernel-doc:: drivers/gpu/drm/vc4/vc4_plane.c 31 :doc: VC4 plane module 36 .. kernel-doc:: drivers/gpu/drm/vc4/vc4_hdmi.c [all …]
|
| /kernel/linux/linux-6.6/Documentation/devicetree/bindings/display/ |
| D | brcm,bcm2835-vc4.yaml | 4 $id: http://devicetree.org/schemas/display/brcm,bcm2835-vc4.yaml# 7 title: Broadcom VC4 (VideoCore4) GPU 13 The VC4 device present on the Raspberry Pi includes a display system 21 - brcm,bcm2835-vc4 22 - brcm,cygnus-vc4 31 vc4: gpu { 32 compatible = "brcm,bcm2835-vc4";
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/display/ |
| D | brcm,bcm2835-vc4.yaml | 4 $id: http://devicetree.org/schemas/display/brcm,bcm2835-vc4.yaml# 7 title: Broadcom VC4 (VideoCore4) GPU 13 The VC4 device present on the Raspberry Pi includes a display system 21 - brcm,bcm2835-vc4 22 - brcm,cygnus-vc4 31 vc4: gpu { 32 compatible = "brcm,bcm2835-vc4";
|
| /kernel/linux/linux-6.6/drivers/gpu/drm/vc4/tests/ |
| D | vc4_mock.c | 168 struct vc4_dev *vc4; in __mock_device() local 175 vc4 = drm_kunit_helper_alloc_drm_device_with_driver(test, dev, in __mock_device() 178 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vc4); in __mock_device() 180 vc4->dev = dev; in __mock_device() 181 vc4->is_vc5 = is_vc5; in __mock_device() 183 vc4->hvs = __vc4_hvs_alloc(vc4, NULL); in __mock_device() 184 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vc4->hvs); in __mock_device() 186 drm = &vc4->base; in __mock_device() 201 return vc4; in __mock_device()
|