Lines Matching refs:bc
40 static void tick_resume_broadcast_oneshot(struct clock_event_device *bc);
43 static inline void tick_resume_broadcast_oneshot(struct clock_event_device *bc) { } in tick_resume_broadcast_oneshot() argument
62 static void tick_broadcast_start_periodic(struct clock_event_device *bc) in tick_broadcast_start_periodic() argument
64 if (bc) in tick_broadcast_start_periodic()
65 tick_setup_periodic(bc, 1); in tick_broadcast_start_periodic()
160 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_device_uses_broadcast() local
177 tick_broadcast_start_periodic(bc); in tick_device_uses_broadcast()
179 tick_broadcast_setup_oneshot(bc); in tick_device_uses_broadcast()
218 if (cpumask_empty(tick_broadcast_mask) && bc) in tick_device_uses_broadcast()
219 clockevents_shutdown(bc); in tick_device_uses_broadcast()
342 struct clock_event_device *bc, *dev; in tick_broadcast_control() local
360 bc = tick_broadcast_device.evtdev; in tick_broadcast_control()
391 clockevents_shutdown(bc); in tick_broadcast_control()
394 tick_broadcast_start_periodic(bc); in tick_broadcast_control()
396 tick_broadcast_setup_oneshot(bc); in tick_broadcast_control()
419 struct clock_event_device *bc; in tick_shutdown_broadcast() local
424 bc = tick_broadcast_device.evtdev; in tick_shutdown_broadcast()
429 if (bc && cpumask_empty(tick_broadcast_mask)) in tick_shutdown_broadcast()
430 clockevents_shutdown(bc); in tick_shutdown_broadcast()
439 struct clock_event_device *bc; in tick_suspend_broadcast() local
444 bc = tick_broadcast_device.evtdev; in tick_suspend_broadcast()
445 if (bc) in tick_suspend_broadcast()
446 clockevents_shutdown(bc); in tick_suspend_broadcast()
469 struct clock_event_device *bc; in tick_resume_broadcast() local
474 bc = tick_broadcast_device.evtdev; in tick_resume_broadcast()
476 if (bc) { in tick_resume_broadcast()
477 clockevents_tick_resume(bc); in tick_resume_broadcast()
482 tick_broadcast_start_periodic(bc); in tick_resume_broadcast()
486 tick_resume_broadcast_oneshot(bc); in tick_resume_broadcast()
522 static void tick_broadcast_set_affinity(struct clock_event_device *bc, in tick_broadcast_set_affinity() argument
525 if (!(bc->features & CLOCK_EVT_FEAT_DYNIRQ)) in tick_broadcast_set_affinity()
528 if (cpumask_equal(bc->cpumask, cpumask)) in tick_broadcast_set_affinity()
531 bc->cpumask = cpumask; in tick_broadcast_set_affinity()
532 irq_set_affinity(bc->irq, bc->cpumask); in tick_broadcast_set_affinity()
535 static int tick_broadcast_set_event(struct clock_event_device *bc, int cpu, in tick_broadcast_set_event() argument
540 if (bc->state != CLOCK_EVT_STATE_ONESHOT) in tick_broadcast_set_event()
541 clockevents_set_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_broadcast_set_event()
543 ret = clockevents_program_event(bc, expires, force); in tick_broadcast_set_event()
545 tick_broadcast_set_affinity(bc, cpumask_of(cpu)); in tick_broadcast_set_event()
549 static void tick_resume_broadcast_oneshot(struct clock_event_device *bc) in tick_resume_broadcast_oneshot() argument
551 clockevents_set_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_resume_broadcast_oneshot()
650 static int broadcast_needs_cpu(struct clock_event_device *bc, int cpu) in broadcast_needs_cpu() argument
652 if (!(bc->features & CLOCK_EVT_FEAT_HRTIMER)) in broadcast_needs_cpu()
654 if (bc->next_event.tv64 == KTIME_MAX) in broadcast_needs_cpu()
656 return bc->bound_on == cpu ? -EBUSY : 0; in broadcast_needs_cpu()
659 static void broadcast_shutdown_local(struct clock_event_device *bc, in broadcast_shutdown_local() argument
667 if (bc->features & CLOCK_EVT_FEAT_HRTIMER) { in broadcast_shutdown_local()
668 if (broadcast_needs_cpu(bc, smp_processor_id())) in broadcast_shutdown_local()
670 if (dev->next_event.tv64 < bc->next_event.tv64) in broadcast_shutdown_local()
689 struct clock_event_device *bc, *dev; in tick_broadcast_oneshot_control() local
712 bc = tick_broadcast_device.evtdev; in tick_broadcast_oneshot_control()
718 broadcast_shutdown_local(bc, dev); in tick_broadcast_oneshot_control()
728 dev->next_event.tv64 < bc->next_event.tv64) in tick_broadcast_oneshot_control()
729 tick_broadcast_set_event(bc, cpu, dev->next_event, 1); in tick_broadcast_oneshot_control()
738 ret = broadcast_needs_cpu(bc, cpu); in tick_broadcast_oneshot_control()
839 void tick_broadcast_setup_oneshot(struct clock_event_device *bc) in tick_broadcast_setup_oneshot() argument
844 if (bc->event_handler != tick_handle_oneshot_broadcast) { in tick_broadcast_setup_oneshot()
845 int was_periodic = bc->state == CLOCK_EVT_STATE_PERIODIC; in tick_broadcast_setup_oneshot()
847 bc->event_handler = tick_handle_oneshot_broadcast; in tick_broadcast_setup_oneshot()
861 clockevents_set_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_broadcast_setup_oneshot()
864 tick_broadcast_set_event(bc, cpu, tick_next_period, 1); in tick_broadcast_setup_oneshot()
866 bc->next_event.tv64 = KTIME_MAX; in tick_broadcast_setup_oneshot()
884 struct clock_event_device *bc; in tick_broadcast_switch_to_oneshot() local
890 bc = tick_broadcast_device.evtdev; in tick_broadcast_switch_to_oneshot()
891 if (bc) in tick_broadcast_switch_to_oneshot()
892 tick_broadcast_setup_oneshot(bc); in tick_broadcast_switch_to_oneshot()
900 struct clock_event_device *bc; in hotplug_cpu__broadcast_tick_pull() local
904 bc = tick_broadcast_device.evtdev; in hotplug_cpu__broadcast_tick_pull()
906 if (bc && broadcast_needs_cpu(bc, deadcpu)) { in hotplug_cpu__broadcast_tick_pull()
908 clockevents_program_event(bc, bc->next_event, 1); in hotplug_cpu__broadcast_tick_pull()
947 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_broadcast_oneshot_available() local
949 return bc ? bc->features & CLOCK_EVT_FEAT_ONESHOT : false; in tick_broadcast_oneshot_available()