Lines Matching refs:armpmu

99 	struct arm_pmu *armpmu = to_arm_pmu(event->pmu);  in armpmu_event_set_period()  local
125 if (left > (armpmu->max_period >> 1)) in armpmu_event_set_period()
126 left = armpmu->max_period >> 1; in armpmu_event_set_period()
130 armpmu->write_counter(event, (u64)(-left) & 0xffffffff); in armpmu_event_set_period()
139 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_event_update() local
145 new_raw_count = armpmu->read_counter(event); in armpmu_event_update()
151 delta = (new_raw_count - prev_raw_count) & armpmu->max_period; in armpmu_event_update()
168 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_stop() local
176 armpmu->disable(event); in armpmu_stop()
184 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_start() local
203 armpmu->enable(event); in armpmu_start()
209 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_del() local
210 struct pmu_hw_events *hw_events = this_cpu_ptr(armpmu->hw_events); in armpmu_del()
217 if (armpmu->clear_event_idx) in armpmu_del()
218 armpmu->clear_event_idx(hw_events, event); in armpmu_del()
226 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_add() local
227 struct pmu_hw_events *hw_events = this_cpu_ptr(armpmu->hw_events); in armpmu_add()
235 idx = armpmu->get_event_idx(hw_events, event); in armpmu_add()
246 armpmu->disable(event); in armpmu_add()
265 struct arm_pmu *armpmu; in validate_event() local
284 armpmu = to_arm_pmu(event->pmu); in validate_event()
285 return armpmu->get_event_idx(hw_events, event) >= 0; in validate_event()
316 struct arm_pmu *armpmu; in armpmu_dispatch_irq() local
328 armpmu = *(void **)dev; in armpmu_dispatch_irq()
329 plat_device = armpmu->plat_device; in armpmu_dispatch_irq()
334 ret = plat->handle_irq(irq, armpmu, armpmu->handle_irq); in armpmu_dispatch_irq()
336 ret = armpmu->handle_irq(irq, armpmu); in armpmu_dispatch_irq()
344 armpmu_release_hardware(struct arm_pmu *armpmu) in armpmu_release_hardware() argument
346 armpmu->free_irq(armpmu); in armpmu_release_hardware()
347 pm_runtime_put_sync(&armpmu->plat_device->dev); in armpmu_release_hardware()
351 armpmu_reserve_hardware(struct arm_pmu *armpmu) in armpmu_reserve_hardware() argument
354 struct platform_device *pmu_device = armpmu->plat_device; in armpmu_reserve_hardware()
360 err = armpmu->request_irq(armpmu, armpmu_dispatch_irq); in armpmu_reserve_hardware()
362 armpmu_release_hardware(armpmu); in armpmu_reserve_hardware()
372 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in hw_perf_event_destroy() local
373 atomic_t *active_events = &armpmu->active_events; in hw_perf_event_destroy()
374 struct mutex *pmu_reserve_mutex = &armpmu->reserve_mutex; in hw_perf_event_destroy()
377 armpmu_release_hardware(armpmu); in hw_perf_event_destroy()
392 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in __hw_perf_event_init() local
396 mapping = armpmu->map_event(event); in __hw_perf_event_init()
418 if ((!armpmu->set_event_filter || in __hw_perf_event_init()
419 armpmu->set_event_filter(hwc, &event->attr)) && in __hw_perf_event_init()
438 hwc->sample_period = armpmu->max_period >> 1; in __hw_perf_event_init()
453 struct arm_pmu *armpmu = to_arm_pmu(event->pmu); in armpmu_event_init() local
455 atomic_t *active_events = &armpmu->active_events; in armpmu_event_init()
461 if (armpmu->map_event(event) == -ENOENT) in armpmu_event_init()
467 mutex_lock(&armpmu->reserve_mutex); in armpmu_event_init()
469 err = armpmu_reserve_hardware(armpmu); in armpmu_event_init()
473 mutex_unlock(&armpmu->reserve_mutex); in armpmu_event_init()
488 struct arm_pmu *armpmu = to_arm_pmu(pmu); in armpmu_enable() local
489 struct pmu_hw_events *hw_events = this_cpu_ptr(armpmu->hw_events); in armpmu_enable()
490 int enabled = bitmap_weight(hw_events->used_mask, armpmu->num_events); in armpmu_enable()
493 armpmu->start(armpmu); in armpmu_enable()
498 struct arm_pmu *armpmu = to_arm_pmu(pmu); in armpmu_disable() local
499 armpmu->stop(armpmu); in armpmu_disable()
528 static void armpmu_init(struct arm_pmu *armpmu) in armpmu_init() argument
530 atomic_set(&armpmu->active_events, 0); in armpmu_init()
531 mutex_init(&armpmu->reserve_mutex); in armpmu_init()
533 armpmu->pmu = (struct pmu) { in armpmu_init()
545 int armpmu_register(struct arm_pmu *armpmu, int type) in armpmu_register() argument
547 armpmu_init(armpmu); in armpmu_register()
548 pm_runtime_enable(&armpmu->plat_device->dev); in armpmu_register()
550 armpmu->name, armpmu->num_events); in armpmu_register()
551 return perf_pmu_register(&armpmu->pmu, armpmu->name, type); in armpmu_register()