Home
last modified time | relevance | path

Searched refs:pfdev (Results 1 – 16 of 16) sorted by relevance

/linux/drivers/gpu/drm/panfrost/
H A Dpanfrost_gpu.c24 struct panfrost_device *pfdev = data; in panfrost_gpu_irq_handler() local
27 if (test_bit(PANFROST_COMP_BIT_GPU, pfdev->is_suspended)) in panfrost_gpu_irq_handler()
30 fault_status = gpu_read(pfdev, GPU_FAULT_STATUS); in panfrost_gpu_irq_handler()
31 state = gpu_read(pfdev, GPU_INT_STAT); in panfrost_gpu_irq_handler()
36 u64 address = (u64) gpu_read(pfdev, GPU_FAULT_ADDRESS_HI) << 32; in panfrost_gpu_irq_handler()
37 address |= gpu_read(pfdev, GPU_FAULT_ADDRESS_LO); in panfrost_gpu_irq_handler()
39 dev_warn(pfdev->dev, "GPU Fault 0x%08x (%s) at 0x%016llx\n", in panfrost_gpu_irq_handler()
44 dev_warn(pfdev->dev, "There were multiple GPU faults - some have not been reported\n"); in panfrost_gpu_irq_handler()
46 gpu_write(pfdev, GPU_INT_MASK, 0); in panfrost_gpu_irq_handler()
50 panfrost_perfcnt_sample_done(pfdev); in panfrost_gpu_irq_handler()
[all …]
H A Dpanfrost_device.c21 static int panfrost_reset_init(struct panfrost_device *pfdev) in panfrost_reset_init() argument
23 pfdev->rstc = devm_reset_control_array_get_optional_exclusive(pfdev->dev); in panfrost_reset_init()
24 if (IS_ERR(pfdev->rstc)) { in panfrost_reset_init()
25 dev_err(pfdev->dev, "get reset failed %ld\n", PTR_ERR(pfdev->rstc)); in panfrost_reset_init()
26 return PTR_ERR(pfdev->rstc); in panfrost_reset_init()
29 return reset_control_deassert(pfdev->rstc); in panfrost_reset_init()
32 static void panfrost_reset_fini(struct panfrost_device *pfdev) in panfrost_reset_fini() argument
34 reset_control_assert(pfdev->rstc); in panfrost_reset_fini()
37 static int panfrost_clk_init(struct panfrost_device *pfdev) in panfrost_clk_init() argument
42 pfdev->clock = devm_clk_get(pfdev->dev, NULL); in panfrost_clk_init()
[all …]
H A Dpanfrost_job.c88 static struct dma_fence *panfrost_fence_create(struct panfrost_device *pfdev, int js_num) in panfrost_fence_create() argument
91 struct panfrost_job_slot *js = pfdev->js; in panfrost_fence_create()
97 fence->dev = pfdev->ddev; in panfrost_fence_create()
119 (job->pfdev->features.nr_core_groups == 2)) in panfrost_job_get_slot()
121 if (panfrost_has_hw_issue(job->pfdev, HW_ISSUE_8987)) in panfrost_job_get_slot()
128 static void panfrost_job_write_affinity(struct panfrost_device *pfdev, in panfrost_job_write_affinity() argument
139 affinity = pfdev->features.shader_present; in panfrost_job_write_affinity()
141 job_write(pfdev, JS_AFFINITY_NEXT_LO(js), lower_32_bits(affinity)); in panfrost_job_write_affinity()
142 job_write(pfdev, JS_AFFINITY_NEXT_HI(js), upper_32_bits(affinity)); in panfrost_job_write_affinity()
150 if (!panfrost_has_hw_feature(job->pfdev, HW_FEATURE_JOBCHAIN_DISAMBIGUATION)) in panfrost_get_job_chain_flag()
[all …]
H A Dpanfrost_perfcnt.c38 void panfrost_perfcnt_clean_cache_done(struct panfrost_device *pfdev) in panfrost_perfcnt_clean_cache_done() argument
40 complete(&pfdev->perfcnt->dump_comp); in panfrost_perfcnt_clean_cache_done()
43 void panfrost_perfcnt_sample_done(struct panfrost_device *pfdev) in panfrost_perfcnt_sample_done() argument
45 gpu_write(pfdev, GPU_CMD, GPU_CMD_CLEAN_CACHES); in panfrost_perfcnt_sample_done()
48 static int panfrost_perfcnt_dump_locked(struct panfrost_device *pfdev) in panfrost_perfcnt_dump_locked() argument
53 reinit_completion(&pfdev->perfcnt->dump_comp); in panfrost_perfcnt_dump_locked()
54 gpuva = pfdev->perfcnt->mapping->mmnode.start << PAGE_SHIFT; in panfrost_perfcnt_dump_locked()
55 gpu_write(pfdev, GPU_PERFCNT_BASE_LO, lower_32_bits(gpuva)); in panfrost_perfcnt_dump_locked()
56 gpu_write(pfdev, GPU_PERFCNT_BASE_HI, upper_32_bits(gpuva)); in panfrost_perfcnt_dump_locked()
57 gpu_write(pfdev, GPU_INT_CLEAR, in panfrost_perfcnt_dump_locked()
[all …]
H A Dpanfrost_mmu.c29 static int wait_ready(struct panfrost_device *pfdev, u32 as_nr) in wait_ready() argument
36 ret = readl_relaxed_poll_timeout_atomic(pfdev->iomem + AS_STATUS(as_nr), in wait_ready()
41 panfrost_device_schedule_reset(pfdev); in wait_ready()
42 dev_err(pfdev->dev, "AS_ACTIVE bit stuck\n"); in wait_ready()
48 static int write_cmd(struct panfrost_device *pfdev, u32 as_nr, u32 cmd) in write_cmd() argument
53 status = wait_ready(pfdev, as_nr); in write_cmd()
55 mmu_write(pfdev, AS_COMMAND(as_nr), cmd); in write_cmd()
60 static void lock_region(struct panfrost_device *pfdev, u32 as_nr, in lock_region() argument
90 mmu_write(pfdev, AS_LOCKADDR_LO(as_nr), lower_32_bits(region)); in lock_region()
91 mmu_write(pfdev, AS_LOCKADDR_HI(as_nr), upper_32_bits(region)); in lock_region()
[all …]
H A Dpanfrost_gem_shrinker.c21 struct panfrost_device *pfdev = shrinker->private_data; in panfrost_gem_shrinker_count() local
25 if (!mutex_trylock(&pfdev->shrinker_lock)) in panfrost_gem_shrinker_count()
28 list_for_each_entry(shmem, &pfdev->shrinker_list, madv_list) { in panfrost_gem_shrinker_count()
33 mutex_unlock(&pfdev->shrinker_lock); in panfrost_gem_shrinker_count()
67 struct panfrost_device *pfdev = shrinker->private_data; in panfrost_gem_shrinker_scan() local
71 if (!mutex_trylock(&pfdev->shrinker_lock)) in panfrost_gem_shrinker_scan()
74 list_for_each_entry_safe(shmem, tmp, &pfdev->shrinker_list, madv_list) { in panfrost_gem_shrinker_scan()
84 mutex_unlock(&pfdev->shrinker_lock); in panfrost_gem_shrinker_scan()
100 struct panfrost_device *pfdev = dev->dev_private; in panfrost_gem_shrinker_init() local
102 pfdev->shrinker = shrinker_alloc(0, "drm-panfrost"); in panfrost_gem_shrinker_init()
[all …]
H A Dpanfrost_drv.c33 static int panfrost_ioctl_query_timestamp(struct panfrost_device *pfdev, in panfrost_ioctl_query_timestamp() argument
38 ret = pm_runtime_resume_and_get(pfdev->dev); in panfrost_ioctl_query_timestamp()
42 panfrost_cycle_counter_get(pfdev); in panfrost_ioctl_query_timestamp()
43 *arg = panfrost_timestamp_read(pfdev); in panfrost_ioctl_query_timestamp()
44 panfrost_cycle_counter_put(pfdev); in panfrost_ioctl_query_timestamp()
46 pm_runtime_put(pfdev->dev); in panfrost_ioctl_query_timestamp()
53 struct panfrost_device *pfdev = ddev->dev_private; in panfrost_ioctl_get_param() local
61 param->value = pfdev->features.member; \ in panfrost_ioctl_get_param()
66 param->value = pfdev->features.member[param->param - \ in panfrost_ioctl_get_param()
98 ret = panfrost_ioctl_query_timestamp(pfdev, &param->value); in panfrost_ioctl_get_param()
[all …]
H A Dpanfrost_device.h94 void (*vendor_quirk)(struct panfrost_device *pfdev);
156 struct panfrost_device *pfdev; member
173 struct panfrost_device *pfdev; member
187 static inline int panfrost_model_cmp(struct panfrost_device *pfdev, s32 id) in panfrost_model_cmp() argument
189 s32 match_id = pfdev->features.id; in panfrost_model_cmp()
196 static inline bool panfrost_model_is_bifrost(struct panfrost_device *pfdev) in panfrost_model_is_bifrost() argument
198 return panfrost_model_cmp(pfdev, 0x1000) >= 0; in panfrost_model_is_bifrost()
201 static inline bool panfrost_model_eq(struct panfrost_device *pfdev, s32 id) in panfrost_model_eq() argument
203 return !panfrost_model_cmp(pfdev, id); in panfrost_model_eq()
208 int panfrost_device_init(struct panfrost_device *pfdev);
[all …]
H A Dpanfrost_mmu.h14 int panfrost_mmu_init(struct panfrost_device *pfdev);
15 void panfrost_mmu_fini(struct panfrost_device *pfdev);
16 void panfrost_mmu_reset(struct panfrost_device *pfdev);
17 void panfrost_mmu_suspend_irq(struct panfrost_device *pfdev);
19 u32 panfrost_mmu_as_get(struct panfrost_device *pfdev, struct panfrost_mmu *mmu);
20 void panfrost_mmu_as_put(struct panfrost_device *pfdev, struct panfrost_mmu *mmu);
24 struct panfrost_mmu *panfrost_mmu_ctx_create(struct panfrost_device *pfdev);
H A Dpanfrost_job.h19 struct panfrost_device *pfdev; member
42 int panfrost_job_init(struct panfrost_device *pfdev);
43 void panfrost_job_fini(struct panfrost_device *pfdev);
49 void panfrost_job_enable_interrupts(struct panfrost_device *pfdev);
50 void panfrost_job_suspend_irq(struct panfrost_device *pfdev);
51 int panfrost_job_is_idle(struct panfrost_device *pfdev);
H A Dpanfrost_dump.c77 struct panfrost_device *pfdev, in panfrost_core_dump_registers() argument
97 dumpreg->value = gpu_read(pfdev, reg); in panfrost_core_dump_registers()
105 struct panfrost_device *pfdev = job->pfdev; in panfrost_core_dump() local
166 dev_warn(pfdev->dev, "failed to allocate devcoredump file\n"); in panfrost_core_dump()
183 iter.hdr->reghdr.gpu_id = pfdev->features.id; in panfrost_core_dump()
186 panfrost_core_dump_registers(&iter, pfdev, as_nr, slot); in panfrost_core_dump()
207 dev_err(pfdev->dev, "Panfrost Dump: BO has no sgt, cannot dump\n"); in panfrost_core_dump()
214 dev_err(pfdev->dev, "Panfrost Dump: couldn't map Buffer Object\n"); in panfrost_core_dump()
240 dev_coredumpv(pfdev->dev, iter.start, iter.data - iter.start, GFP_KERNEL); in panfrost_core_dump()
H A Dpanfrost_perfcnt.h8 void panfrost_perfcnt_sample_done(struct panfrost_device *pfdev);
9 void panfrost_perfcnt_clean_cache_done(struct panfrost_device *pfdev);
10 int panfrost_perfcnt_init(struct panfrost_device *pfdev);
11 void panfrost_perfcnt_fini(struct panfrost_device *pfdev);
H A Dpanfrost_devfreq.h36 int panfrost_devfreq_init(struct panfrost_device *pfdev);
37 void panfrost_devfreq_fini(struct panfrost_device *pfdev);
39 void panfrost_devfreq_resume(struct panfrost_device *pfdev);
40 void panfrost_devfreq_suspend(struct panfrost_device *pfdev);
H A Dpanfrost_features.h121 static inline bool panfrost_has_hw_feature(struct panfrost_device *pfdev, in panfrost_has_hw_feature() argument
124 return test_bit(feat, pfdev->features.hw_features); in panfrost_has_hw_feature()
H A Dpanfrost_issues.h268 static inline bool panfrost_has_hw_issue(const struct panfrost_device *pfdev, in panfrost_has_hw_issue() argument
271 return test_bit(issue, pfdev->features.hw_issues); in panfrost_has_hw_issue()
/linux/drivers/media/pci/ddbridge/
H A Dddbridge.h312 struct platform_device *pfdev; member