Lines Matching refs:bc
36 static void tick_broadcast_setup_oneshot(struct clock_event_device *bc);
38 static void tick_resume_broadcast_oneshot(struct clock_event_device *bc);
43 static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc) { BUG(); } in tick_broadcast_setup_oneshot() argument
45 static inline void tick_resume_broadcast_oneshot(struct clock_event_device *bc) { } in tick_resume_broadcast_oneshot() argument
67 static void tick_broadcast_start_periodic(struct clock_event_device *bc) in tick_broadcast_start_periodic() argument
69 if (bc) in tick_broadcast_start_periodic()
70 tick_setup_periodic(bc, 1); in tick_broadcast_start_periodic()
165 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_device_uses_broadcast() local
182 tick_broadcast_start_periodic(bc); in tick_device_uses_broadcast()
184 tick_broadcast_setup_oneshot(bc); in tick_device_uses_broadcast()
223 if (cpumask_empty(tick_broadcast_mask) && bc) in tick_device_uses_broadcast()
224 clockevents_shutdown(bc); in tick_device_uses_broadcast()
233 if (bc && !(bc->features & CLOCK_EVT_FEAT_HRTIMER)) in tick_device_uses_broadcast()
274 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_do_broadcast() local
289 local = !(bc->features & CLOCK_EVT_FEAT_HRTIMER); in tick_do_broadcast()
358 struct clock_event_device *bc, *dev; in tick_broadcast_control() local
378 bc = tick_broadcast_device.evtdev; in tick_broadcast_control()
396 if (bc && !(bc->features & CLOCK_EVT_FEAT_HRTIMER) && in tick_broadcast_control()
414 if (bc) { in tick_broadcast_control()
417 clockevents_shutdown(bc); in tick_broadcast_control()
420 tick_broadcast_start_periodic(bc); in tick_broadcast_control()
422 tick_broadcast_setup_oneshot(bc); in tick_broadcast_control()
444 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_shutdown_broadcast() local
447 if (bc && cpumask_empty(tick_broadcast_mask)) in tick_shutdown_broadcast()
448 clockevents_shutdown(bc); in tick_shutdown_broadcast()
469 struct clock_event_device *bc; in tick_suspend_broadcast() local
474 bc = tick_broadcast_device.evtdev; in tick_suspend_broadcast()
475 if (bc) in tick_suspend_broadcast()
476 clockevents_shutdown(bc); in tick_suspend_broadcast()
499 struct clock_event_device *bc; in tick_resume_broadcast() local
504 bc = tick_broadcast_device.evtdev; in tick_resume_broadcast()
506 if (bc) { in tick_resume_broadcast()
507 clockevents_tick_resume(bc); in tick_resume_broadcast()
512 tick_broadcast_start_periodic(bc); in tick_resume_broadcast()
516 tick_resume_broadcast_oneshot(bc); in tick_resume_broadcast()
552 static void tick_broadcast_set_affinity(struct clock_event_device *bc, in tick_broadcast_set_affinity() argument
555 if (!(bc->features & CLOCK_EVT_FEAT_DYNIRQ)) in tick_broadcast_set_affinity()
558 if (cpumask_equal(bc->cpumask, cpumask)) in tick_broadcast_set_affinity()
561 bc->cpumask = cpumask; in tick_broadcast_set_affinity()
562 irq_set_affinity(bc->irq, bc->cpumask); in tick_broadcast_set_affinity()
565 static void tick_broadcast_set_event(struct clock_event_device *bc, int cpu, in tick_broadcast_set_event() argument
568 if (!clockevent_state_oneshot(bc)) in tick_broadcast_set_event()
569 clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_broadcast_set_event()
571 clockevents_program_event(bc, expires, 1); in tick_broadcast_set_event()
572 tick_broadcast_set_affinity(bc, cpumask_of(cpu)); in tick_broadcast_set_event()
575 static void tick_resume_broadcast_oneshot(struct clock_event_device *bc) in tick_resume_broadcast_oneshot() argument
577 clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_resume_broadcast_oneshot()
684 static int broadcast_needs_cpu(struct clock_event_device *bc, int cpu) in broadcast_needs_cpu() argument
686 if (!(bc->features & CLOCK_EVT_FEAT_HRTIMER)) in broadcast_needs_cpu()
688 if (bc->next_event == KTIME_MAX) in broadcast_needs_cpu()
690 return bc->bound_on == cpu ? -EBUSY : 0; in broadcast_needs_cpu()
693 static void broadcast_shutdown_local(struct clock_event_device *bc, in broadcast_shutdown_local() argument
701 if (bc->features & CLOCK_EVT_FEAT_HRTIMER) { in broadcast_shutdown_local()
702 if (broadcast_needs_cpu(bc, smp_processor_id())) in broadcast_shutdown_local()
704 if (dev->next_event < bc->next_event) in broadcast_shutdown_local()
712 struct clock_event_device *bc, *dev; in __tick_broadcast_oneshot_control() local
726 bc = tick_broadcast_device.evtdev; in __tick_broadcast_oneshot_control()
737 ret = broadcast_needs_cpu(bc, cpu); in __tick_broadcast_oneshot_control()
747 if (bc->features & CLOCK_EVT_FEAT_HRTIMER) in __tick_broadcast_oneshot_control()
756 broadcast_shutdown_local(bc, dev); in __tick_broadcast_oneshot_control()
770 } else if (dev->next_event < bc->next_event) { in __tick_broadcast_oneshot_control()
771 tick_broadcast_set_event(bc, cpu, dev->next_event); in __tick_broadcast_oneshot_control()
779 ret = broadcast_needs_cpu(bc, cpu); in __tick_broadcast_oneshot_control()
883 static void tick_broadcast_setup_oneshot(struct clock_event_device *bc) in tick_broadcast_setup_oneshot() argument
887 if (!bc) in tick_broadcast_setup_oneshot()
891 if (bc->event_handler != tick_handle_oneshot_broadcast) { in tick_broadcast_setup_oneshot()
892 int was_periodic = clockevent_state_periodic(bc); in tick_broadcast_setup_oneshot()
894 bc->event_handler = tick_handle_oneshot_broadcast; in tick_broadcast_setup_oneshot()
908 clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_broadcast_setup_oneshot()
911 tick_broadcast_set_event(bc, cpu, tick_next_period); in tick_broadcast_setup_oneshot()
913 bc->next_event = KTIME_MAX; in tick_broadcast_setup_oneshot()
931 struct clock_event_device *bc; in tick_broadcast_switch_to_oneshot() local
937 bc = tick_broadcast_device.evtdev; in tick_broadcast_switch_to_oneshot()
938 if (bc) in tick_broadcast_switch_to_oneshot()
939 tick_broadcast_setup_oneshot(bc); in tick_broadcast_switch_to_oneshot()
947 struct clock_event_device *bc; in hotplug_cpu__broadcast_tick_pull() local
951 bc = tick_broadcast_device.evtdev; in hotplug_cpu__broadcast_tick_pull()
953 if (bc && broadcast_needs_cpu(bc, deadcpu)) { in hotplug_cpu__broadcast_tick_pull()
955 clockevents_program_event(bc, bc->next_event, 1); in hotplug_cpu__broadcast_tick_pull()
988 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_broadcast_oneshot_available() local
990 return bc ? bc->features & CLOCK_EVT_FEAT_ONESHOT : false; in tick_broadcast_oneshot_available()
996 struct clock_event_device *bc = tick_broadcast_device.evtdev; in __tick_broadcast_oneshot_control() local
998 if (!bc || (bc->features & CLOCK_EVT_FEAT_HRTIMER)) in __tick_broadcast_oneshot_control()