Symbol: dmc620_pmu
drivers/perf/arm_dmc620_pmu.c
103
#define to_dmc620_pmu(p) (container_of(p, struct dmc620_pmu, pmu))
drivers/perf/arm_dmc620_pmu.c
238
struct dmc620_pmu *dmc620_pmu = to_dmc620_pmu(dev_get_drvdata(dev));
drivers/perf/arm_dmc620_pmu.c
241
cpumask_of(dmc620_pmu->irq->cpu));
drivers/perf/arm_dmc620_pmu.c
264
u32 dmc620_pmu_creg_read(struct dmc620_pmu *dmc620_pmu,
drivers/perf/arm_dmc620_pmu.c
267
return readl(dmc620_pmu->base + DMC620_PMU_COUNTERn_OFFSET(idx) + reg);
drivers/perf/arm_dmc620_pmu.c
271
void dmc620_pmu_creg_write(struct dmc620_pmu *dmc620_pmu,
drivers/perf/arm_dmc620_pmu.c
274
writel(val, dmc620_pmu->base + DMC620_PMU_COUNTERn_OFFSET(idx) + reg);
drivers/perf/arm_dmc620_pmu.c
295
struct dmc620_pmu *dmc620_pmu = to_dmc620_pmu(event->pmu);
drivers/perf/arm_dmc620_pmu.c
307
if (!test_and_set_bit(idx, dmc620_pmu->used_mask))
drivers/perf/arm_dmc620_pmu.c
318
struct dmc620_pmu *dmc620_pmu = to_dmc620_pmu(event->pmu);
drivers/perf/arm_dmc620_pmu.c
320
return dmc620_pmu_creg_read(dmc620_pmu,
drivers/perf/arm_dmc620_pmu.c
341
struct dmc620_pmu *dmc620_pmu = to_dmc620_pmu(event->pmu);
drivers/perf/arm_dmc620_pmu.c
344
dmc620_pmu_creg_write(dmc620_pmu,
drivers/perf/arm_dmc620_pmu.c
350
struct dmc620_pmu *dmc620_pmu = to_dmc620_pmu(event->pmu);
drivers/perf/arm_dmc620_pmu.c
354
dmc620_pmu_creg_write(dmc620_pmu,
drivers/perf/arm_dmc620_pmu.c
360
struct dmc620_pmu *dmc620_pmu = to_dmc620_pmu(event->pmu);
drivers/perf/arm_dmc620_pmu.c
362
dmc620_pmu_creg_write(dmc620_pmu,
drivers/perf/arm_dmc620_pmu.c
369
struct dmc620_pmu *dmc620_pmu;
drivers/perf/arm_dmc620_pmu.c
373
list_for_each_entry_rcu(dmc620_pmu, &irq->pmus_node, pmus_node) {
drivers/perf/arm_dmc620_pmu.c
384
event = dmc620_pmu->events[idx];
drivers/perf/arm_dmc620_pmu.c
390
status = readl(dmc620_pmu->base + DMC620_PMU_OVERFLOW_STATUS_CLKDIV2);
drivers/perf/arm_dmc620_pmu.c
391
status |= (readl(dmc620_pmu->base + DMC620_PMU_OVERFLOW_STATUS_CLK) <<
drivers/perf/arm_dmc620_pmu.c
396
event = dmc620_pmu->events[idx];
drivers/perf/arm_dmc620_pmu.c
404
writel(0, dmc620_pmu->base + DMC620_PMU_OVERFLOW_STATUS_CLKDIV2);
drivers/perf/arm_dmc620_pmu.c
408
writel(0, dmc620_pmu->base + DMC620_PMU_OVERFLOW_STATUS_CLK);
drivers/perf/arm_dmc620_pmu.c
412
event = dmc620_pmu->events[idx];
drivers/perf/arm_dmc620_pmu.c
471
static int dmc620_pmu_get_irq(struct dmc620_pmu *dmc620_pmu, int irq_num)
drivers/perf/arm_dmc620_pmu.c
482
dmc620_pmu->irq = irq;
drivers/perf/arm_dmc620_pmu.c
484
list_add_rcu(&dmc620_pmu->pmus_node, &irq->pmus_node);
drivers/perf/arm_dmc620_pmu.c
490
static void dmc620_pmu_put_irq(struct dmc620_pmu *dmc620_pmu)
drivers/perf/arm_dmc620_pmu.c
492
struct dmc620_pmu_irq *irq = dmc620_pmu->irq;
drivers/perf/arm_dmc620_pmu.c
495
list_del_rcu(&dmc620_pmu->pmus_node);
drivers/perf/arm_dmc620_pmu.c
514
struct dmc620_pmu *dmc620_pmu = to_dmc620_pmu(event->pmu);
drivers/perf/arm_dmc620_pmu.c
527
dev_dbg(dmc620_pmu->pmu.dev,
drivers/perf/arm_dmc620_pmu.c
541
event->cpu = dmc620_pmu->irq->cpu;
drivers/perf/arm_dmc620_pmu.c
590
struct dmc620_pmu *dmc620_pmu = to_dmc620_pmu(event->pmu);
drivers/perf/arm_dmc620_pmu.c
601
dmc620_pmu->events[idx] = event;
drivers/perf/arm_dmc620_pmu.c
605
dmc620_pmu_creg_write(dmc620_pmu,
drivers/perf/arm_dmc620_pmu.c
607
dmc620_pmu_creg_write(dmc620_pmu,
drivers/perf/arm_dmc620_pmu.c
611
dmc620_pmu_creg_write(dmc620_pmu,
drivers/perf/arm_dmc620_pmu.c
613
dmc620_pmu_creg_write(dmc620_pmu,
drivers/perf/arm_dmc620_pmu.c
625
struct dmc620_pmu *dmc620_pmu = to_dmc620_pmu(event->pmu);
drivers/perf/arm_dmc620_pmu.c
630
dmc620_pmu->events[idx] = NULL;
drivers/perf/arm_dmc620_pmu.c
631
clear_bit(idx, dmc620_pmu->used_mask);
drivers/perf/arm_dmc620_pmu.c
639
struct dmc620_pmu *dmc620_pmu;
drivers/perf/arm_dmc620_pmu.c
652
list_for_each_entry(dmc620_pmu, &irq->pmus_node, pmus_node)
drivers/perf/arm_dmc620_pmu.c
653
perf_pmu_migrate_context(&dmc620_pmu->pmu, irq->cpu, target);
drivers/perf/arm_dmc620_pmu.c
664
struct dmc620_pmu *dmc620_pmu;
drivers/perf/arm_dmc620_pmu.c
670
dmc620_pmu = devm_kzalloc(&pdev->dev,
drivers/perf/arm_dmc620_pmu.c
671
sizeof(struct dmc620_pmu), GFP_KERNEL);
drivers/perf/arm_dmc620_pmu.c
672
if (!dmc620_pmu)
drivers/perf/arm_dmc620_pmu.c
675
platform_set_drvdata(pdev, dmc620_pmu);
drivers/perf/arm_dmc620_pmu.c
677
dmc620_pmu->pmu = (struct pmu) {
drivers/perf/arm_dmc620_pmu.c
691
dmc620_pmu->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
drivers/perf/arm_dmc620_pmu.c
692
if (IS_ERR(dmc620_pmu->base))
drivers/perf/arm_dmc620_pmu.c
693
return PTR_ERR(dmc620_pmu->base);
drivers/perf/arm_dmc620_pmu.c
697
dmc620_pmu_creg_write(dmc620_pmu, i, DMC620_PMU_COUNTERn_CONTROL, 0);
drivers/perf/arm_dmc620_pmu.c
698
writel(0, dmc620_pmu->base + DMC620_PMU_OVERFLOW_STATUS_CLKDIV2);
drivers/perf/arm_dmc620_pmu.c
699
writel(0, dmc620_pmu->base + DMC620_PMU_OVERFLOW_STATUS_CLK);
drivers/perf/arm_dmc620_pmu.c
705
ret = dmc620_pmu_get_irq(dmc620_pmu, irq_num);
drivers/perf/arm_dmc620_pmu.c
719
ret = perf_pmu_register(&dmc620_pmu->pmu, name, -1);
drivers/perf/arm_dmc620_pmu.c
726
dmc620_pmu_put_irq(dmc620_pmu);
drivers/perf/arm_dmc620_pmu.c
733
struct dmc620_pmu *dmc620_pmu = platform_get_drvdata(pdev);
drivers/perf/arm_dmc620_pmu.c
735
dmc620_pmu_put_irq(dmc620_pmu);
drivers/perf/arm_dmc620_pmu.c
738
perf_pmu_unregister(&dmc620_pmu->pmu);