Home
last modified time | relevance | path

Searched refs:ptdev (Results 1 – 9 of 9) sorted by relevance

/linux/drivers/gpu/drm/panthor/
H A Dpanthor_device.c30 static int panthor_clk_init(struct panthor_device *ptdev) in panthor_clk_init() argument
32 ptdev->clks.core = devm_clk_get(ptdev->base.dev, NULL); in panthor_clk_init()
33 if (IS_ERR(ptdev->clks.core)) in panthor_clk_init()
34 return dev_err_probe(ptdev->base.dev, in panthor_clk_init()
35 PTR_ERR(ptdev->clks.core), in panthor_clk_init()
38 ptdev->clks.stacks = devm_clk_get_optional(ptdev->base.dev, "stacks"); in panthor_clk_init()
39 if (IS_ERR(ptdev->clks.stacks)) in panthor_clk_init()
40 return dev_err_probe(ptdev->base.dev, in panthor_clk_init()
41 PTR_ERR(ptdev->clks.stacks), in panthor_clk_init()
44 ptdev->clks.coregroup = devm_clk_get_optional(ptdev->base.dev, "coregroup"); in panthor_clk_init()
[all …]
H A Dpanthor_gpu.c60 static void panthor_gpu_coherency_set(struct panthor_device *ptdev) in panthor_gpu_coherency_set() argument
62 gpu_write(ptdev->gpu->iomem, GPU_COHERENCY_PROTOCOL, in panthor_gpu_coherency_set()
63 ptdev->gpu_info.selected_coherency); in panthor_gpu_coherency_set()
66 static void panthor_gpu_l2_config_set(struct panthor_device *ptdev) in panthor_gpu_l2_config_set() argument
68 struct panthor_gpu *gpu = ptdev->gpu; in panthor_gpu_l2_config_set()
69 const struct panthor_soc_data *data = ptdev->soc_data; in panthor_gpu_l2_config_set()
76 if (GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id) < 11) { in panthor_gpu_l2_config_set()
77 drm_err(&ptdev->base, "Custom ASN hash not supported by the device"); in panthor_gpu_l2_config_set()
89 static void panthor_gpu_irq_handler(struct panthor_device *ptdev, u32 status) in panthor_gpu_irq_handler() argument
91 struct panthor_gpu *gpu = ptdev->gpu; in panthor_gpu_irq_handler()
[all …]
H A Dpanthor_pwr.c59 static void panthor_pwr_irq_handler(struct panthor_device *ptdev, u32 status) in panthor_pwr_irq_handler() argument
61 struct panthor_pwr *pwr = ptdev->pwr; in panthor_pwr_irq_handler()
63 spin_lock(&ptdev->pwr->reqs_lock); in panthor_pwr_irq_handler()
67 drm_err(&ptdev->base, "PWR_IRQ: COMMAND_NOT_ALLOWED"); in panthor_pwr_irq_handler()
70 drm_err(&ptdev->base, "PWR_IRQ: COMMAND_INVALID"); in panthor_pwr_irq_handler()
72 if (status & ptdev->pwr->pending_reqs) { in panthor_pwr_irq_handler()
73 ptdev->pwr->pending_reqs &= ~status; in panthor_pwr_irq_handler()
74 wake_up_all(&ptdev->pwr->reqs_acked); in panthor_pwr_irq_handler()
76 spin_unlock(&ptdev->pwr->reqs_lock); in panthor_pwr_irq_handler()
80 static void panthor_pwr_write_command(struct panthor_device *ptdev, u32 command, u64 args) in panthor_pwr_write_command() argument
[all …]
H A Dpanthor_fw.c276 struct panthor_vm *panthor_fw_vm(struct panthor_device *ptdev) in panthor_fw_vm() argument
278 return ptdev->fw->vm; in panthor_fw_vm()
288 panthor_fw_get_glb_iface(struct panthor_device *ptdev) in panthor_fw_get_glb_iface() argument
290 return &ptdev->fw->iface.global; in panthor_fw_get_glb_iface()
301 panthor_fw_get_csg_iface(struct panthor_device *ptdev, u32 csg_slot) in panthor_fw_get_csg_iface() argument
303 if (drm_WARN_ON(&ptdev->base, csg_slot >= MAX_CSGS)) in panthor_fw_get_csg_iface()
306 return &ptdev->fw->iface.groups[csg_slot]; in panthor_fw_get_csg_iface()
318 panthor_fw_get_cs_iface(struct panthor_device *ptdev, u32 csg_slot, u32 cs_slot) in panthor_fw_get_cs_iface() argument
320 if (drm_WARN_ON(&ptdev->base, csg_slot >= MAX_CSGS || cs_slot >= MAX_CS_PER_CSG)) in panthor_fw_get_cs_iface()
323 return &ptdev->fw->iface.streams[csg_slot][cs_slot]; in panthor_fw_get_cs_iface()
[all …]
H A Dpanthor_mmu.c257 struct panthor_device *ptdev; member
461 drm_WARN_ON(&vm->ptdev->base, vm->op_ctx); in alloc_pt()
462 p = alloc_pages_node(dev_to_node(vm->ptdev->base.dev), in alloc_pt()
472 if (drm_WARN_ON(&vm->ptdev->base, size != SZ_4K)) in alloc_pt()
478 if (drm_WARN_ON(&vm->ptdev->base, !vm->op_ctx) || in alloc_pt()
479 drm_WARN_ON(&vm->ptdev->base, in alloc_pt()
514 if (drm_WARN_ON(&vm->ptdev->base, size != SZ_4K)) in free_pt()
521 static int wait_ready(struct panthor_device *ptdev, u32 as_nr) in wait_ready() argument
523 struct panthor_mmu *mmu = ptdev->mmu; in wait_ready()
534 panthor_device_schedule_reset(ptdev); in wait_ready()
[all …]
H A Dpanthor_sched.c147 struct panthor_device *ptdev; member
536 struct panthor_device *ptdev; member
735 if (!queue_work((group)->ptdev->scheduler->wq, &(group)->wname ## _work)) \
749 !panthor_device_reset_is_pending((sched)->ptdev)) \
765 !panthor_device_reset_is_pending((sched)->ptdev)) \
869 struct panthor_device *ptdev = group->ptdev; in panthor_queue_get_syncwait_obj() local
882 if (drm_WARN_ON(&ptdev->base, IS_ERR_OR_NULL(bo))) in panthor_queue_get_syncwait_obj()
887 if (drm_WARN_ON(&ptdev->base, ret)) in panthor_queue_get_syncwait_obj()
891 if (drm_WARN_ON(&ptdev->base, !queue->syncwait.kmap)) in panthor_queue_get_syncwait_obj()
967 struct panthor_device *ptdev = group->ptdev; in group_release() local
[all …]
H A Dpanthor_pwr.h9 void panthor_pwr_unplug(struct panthor_device *ptdev);
11 int panthor_pwr_init(struct panthor_device *ptdev);
13 int panthor_pwr_reset_soft(struct panthor_device *ptdev);
15 void panthor_pwr_l2_power_off(struct panthor_device *ptdev);
17 int panthor_pwr_l2_power_on(struct panthor_device *ptdev);
19 void panthor_pwr_suspend(struct panthor_device *ptdev);
21 void panthor_pwr_resume(struct panthor_device *ptdev);
H A Dpanthor_device.h83 struct panthor_device *ptdev; member
344 struct panthor_device *ptdev; member
374 int panthor_device_init(struct panthor_device *ptdev);
375 void panthor_device_unplug(struct panthor_device *ptdev);
380 static inline void panthor_device_schedule_reset(struct panthor_device *ptdev) in panthor_device_schedule_reset() argument
382 if (!atomic_cmpxchg(&ptdev->reset.pending, 0, 1) && in panthor_device_schedule_reset()
383 atomic_read(&ptdev->pm.state) == PANTHOR_DEVICE_PM_STATE_ACTIVE) in panthor_device_schedule_reset()
384 queue_work(ptdev->reset.wq, &ptdev->reset.work); in panthor_device_schedule_reset()
392 static inline bool panthor_device_reset_is_pending(struct panthor_device *ptdev) in panthor_device_reset_is_pending() argument
394 return atomic_read(&ptdev->reset.pending) != 0; in panthor_device_reset_is_pending()
[all …]
H A Dpanthor_gem.c29 void panthor_gem_init(struct panthor_device *ptdev) in panthor_gem_init() argument
37 err = drm_gem_huge_mnt_create(&ptdev->base, "within_size"); in panthor_gem_init()
38 if (drm_gem_get_huge_mnt(&ptdev->base)) in panthor_gem_init()
39 drm_info(&ptdev->base, "Using Transparent Hugepage\n"); in panthor_gem_init()
41 drm_warn(&ptdev->base, "Can't use Transparent Hugepage (%d)\n", in panthor_gem_init()
53 struct panthor_device *ptdev = container_of(bo->base.dev, in panthor_gem_debugfs_bo_add() local
59 mutex_lock(&ptdev->gems.lock); in panthor_gem_debugfs_bo_add()
60 list_add_tail(&bo->debugfs.node, &ptdev->gems.node); in panthor_gem_debugfs_bo_add()
61 mutex_unlock(&ptdev->gems.lock); in panthor_gem_debugfs_bo_add()
66 struct panthor_device *ptdev = container_of(bo->base.dev, in panthor_gem_debugfs_bo_rm() local
[all …]