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.c260 struct panthor_device *ptdev; member
476 drm_WARN_ON(&vm->ptdev->base, vm->op_ctx); in alloc_pt()
477 p = alloc_pages_node(dev_to_node(vm->ptdev->base.dev), in alloc_pt()
487 if (drm_WARN_ON(&vm->ptdev->base, size != SZ_4K)) in alloc_pt()
493 if (drm_WARN_ON(&vm->ptdev->base, !vm->op_ctx) || in alloc_pt()
494 drm_WARN_ON(&vm->ptdev->base, in alloc_pt()
529 if (drm_WARN_ON(&vm->ptdev->base, size != SZ_4K)) in free_pt()
536 static int wait_ready(struct panthor_device *ptdev, u32 as_nr) in wait_ready() argument
538 struct panthor_mmu *mmu = ptdev->mmu; in wait_ready()
549 panthor_device_schedule_reset(ptdev); in wait_ready()
[all …]
H A Dpanthor_sched.c146 /** @ptdev: Device. */
147 struct panthor_device *ptdev; member
535 /** @ptdev: Device. */
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 in panthor_queue_get_syncwait_obj()
967 struct panthor_device *ptdev = group->ptdev; group_release() local
1001 struct panthor_device *ptdev = group->ptdev; group_bind_locked() local
1043 struct panthor_device *ptdev = group->ptdev; group_unbind_locked() local
1185 cs_slot_prog_locked(struct panthor_device * ptdev,u32 csg_id,u32 cs_id) cs_slot_prog_locked() argument
1225 cs_slot_reset_locked(struct panthor_device * ptdev,u32 csg_id,u32 cs_id) cs_slot_reset_locked() argument
1252 csg_slot_sync_priority_locked(struct panthor_device * ptdev,u32 csg_id) csg_slot_sync_priority_locked() argument
1274 cs_slot_sync_queue_state_locked(struct panthor_device * ptdev,u32 csg_id,u32 cs_id) cs_slot_sync_queue_state_locked() argument
1325 csg_slot_sync_queues_state_locked(struct panthor_device * ptdev,u32 csg_id) csg_slot_sync_queues_state_locked() argument
1343 csg_slot_sync_state_locked(struct panthor_device * ptdev,u32 csg_id) csg_slot_sync_state_locked() argument
1416 csg_slot_prog_locked(struct panthor_device * ptdev,u32 csg_id,u32 priority) csg_slot_prog_locked() argument
1475 cs_slot_process_fatal_event_locked(struct panthor_device * ptdev,u32 csg_id,u32 cs_id) cs_slot_process_fatal_event_locked() argument
1521 cs_slot_process_fault_event_locked(struct panthor_device * ptdev,u32 csg_id,u32 cs_id) cs_slot_process_fault_event_locked() argument
1574 struct panthor_device *ptdev = group->ptdev; group_process_tiler_oom() local
1678 cs_slot_process_tiler_oom_event_locked(struct panthor_device * ptdev,u32 csg_id,u32 cs_id) cs_slot_process_tiler_oom_event_locked() argument
1700 cs_slot_process_irq_locked(struct panthor_device * ptdev,u32 csg_id,u32 cs_id) cs_slot_process_irq_locked() argument
1730 csg_slot_process_idle_event_locked(struct panthor_device * ptdev,u32 csg_id) csg_slot_process_idle_event_locked() argument
1745 csg_slot_sync_update_locked(struct panthor_device * ptdev,u32 csg_id) csg_slot_sync_update_locked() argument
1760 csg_slot_process_progress_timer_event_locked(struct panthor_device * ptdev,u32 csg_id) csg_slot_process_progress_timer_event_locked() argument
1781 sched_process_csg_irq_locked(struct panthor_device * ptdev,u32 csg_id) sched_process_csg_irq_locked() argument
1841 sched_process_idle_event_locked(struct panthor_device * ptdev) sched_process_idle_event_locked() argument
1856 sched_process_global_irq_locked(struct panthor_device * ptdev) sched_process_global_irq_locked() argument
1876 struct panthor_device *ptdev = sched->ptdev; process_fw_events_work() local
1900 panthor_sched_report_fw_events(struct panthor_device * ptdev,u32 events) panthor_sched_report_fw_events() argument
1938 csgs_upd_ctx_queue_reqs(struct panthor_device * ptdev,struct panthor_csg_slots_upd_ctx * ctx,u32 csg_id,u32 value,u32 mask) csgs_upd_ctx_queue_reqs() argument
1951 csgs_upd_ctx_apply_locked(struct panthor_device * ptdev,struct panthor_csg_slots_upd_ctx * ctx) csgs_upd_ctx_apply_locked() argument
2110 struct panthor_device *ptdev = sched->ptdev; tick_ctx_init() local
2221 struct panthor_device *ptdev = sched->ptdev; tick_ctx_cleanup() local
2274 struct panthor_device *ptdev = sched->ptdev; tick_ctx_apply() local
2458 struct panthor_device *ptdev = sched->ptdev; tick_work() local
2659 sched_resume_tick(struct panthor_device * ptdev) sched_resume_tick() argument
2689 struct panthor_device *ptdev = group->ptdev; group_schedule_locked() local
2799 panthor_sched_report_mmu_fault(struct panthor_device * ptdev) panthor_sched_report_mmu_fault() argument
2806 panthor_sched_prepare_for_vm_destruction(struct panthor_device * ptdev) panthor_sched_prepare_for_vm_destruction() argument
2820 panthor_sched_resume(struct panthor_device * ptdev) panthor_sched_resume() argument
2826 panthor_sched_suspend(struct panthor_device * ptdev) panthor_sched_suspend() argument
2958 panthor_sched_pre_reset(struct panthor_device * ptdev) panthor_sched_pre_reset() argument
2991 panthor_sched_post_reset(struct panthor_device * ptdev,bool reset_failed) panthor_sched_post_reset() argument
3188 struct panthor_device *ptdev = group->ptdev; get_job_cs_params() local
3317 struct panthor_device *ptdev = group->ptdev; queue_run_job() local
3417 struct panthor_device *ptdev = group->ptdev; queue_timedout_job() local
3458 calc_profiling_ringbuf_num_slots(struct panthor_device * ptdev,u32 cs_ringbuf_size) calc_profiling_ringbuf_num_slots() argument
3623 add_group_kbo_sizes(struct panthor_device * ptdev,struct panthor_group * group) add_group_kbo_sizes() argument
3653 struct panthor_device *ptdev = pfile->ptdev; panthor_group_create() local
3792 struct panthor_device *ptdev = pfile->ptdev; panthor_group_destroy() local
3839 struct panthor_device *ptdev = pfile->ptdev; panthor_group_get_state() local
4064 panthor_sched_unplug(struct panthor_device * ptdev) panthor_sched_unplug() argument
4102 panthor_sched_init(struct panthor_device * ptdev) panthor_sched_init() argument
[all...]
H A Dpanthor_device.h83 struct panthor_device *ptdev; member
347 struct panthor_device *ptdev; member
377 int panthor_device_init(struct panthor_device *ptdev);
378 void panthor_device_unplug(struct panthor_device *ptdev);
383 static inline void panthor_device_schedule_reset(struct panthor_device *ptdev) in panthor_device_schedule_reset() argument
385 if (!atomic_cmpxchg(&ptdev->reset.pending, 0, 1) && in panthor_device_schedule_reset()
386 atomic_read(&ptdev->pm.state) == PANTHOR_DEVICE_PM_STATE_ACTIVE) in panthor_device_schedule_reset()
387 queue_work(ptdev->reset.wq, &ptdev->reset.work); in panthor_device_schedule_reset()
395 static inline bool panthor_device_reset_is_pending(struct panthor_device *ptdev) in panthor_device_reset_is_pending() argument
397 return atomic_read(&ptdev->reset.pending) != 0; in panthor_device_reset_is_pending()
[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_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 …]