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()
228 if (bc && !(bc->features & CLOCK_EVT_FEAT_HRTIMER)) in tick_device_uses_broadcast()
269 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_do_broadcast() local
284 local = !(bc->features & CLOCK_EVT_FEAT_HRTIMER); in tick_do_broadcast()
357 struct clock_event_device *bc, *dev; in tick_broadcast_control() local
375 bc = tick_broadcast_device.evtdev; in tick_broadcast_control()
392 if (bc && !(bc->features & CLOCK_EVT_FEAT_HRTIMER) && in tick_broadcast_control()
412 if (bc) { in tick_broadcast_control()
415 clockevents_shutdown(bc); in tick_broadcast_control()
418 tick_broadcast_start_periodic(bc); in tick_broadcast_control()
420 tick_broadcast_setup_oneshot(bc); in tick_broadcast_control()
444 struct clock_event_device *bc; in tick_shutdown_broadcast() local
449 bc = tick_broadcast_device.evtdev; in tick_shutdown_broadcast()
454 if (bc && cpumask_empty(tick_broadcast_mask)) in tick_shutdown_broadcast()
455 clockevents_shutdown(bc); in tick_shutdown_broadcast()
464 struct clock_event_device *bc; in tick_suspend_broadcast() local
469 bc = tick_broadcast_device.evtdev; in tick_suspend_broadcast()
470 if (bc) in tick_suspend_broadcast()
471 clockevents_shutdown(bc); in tick_suspend_broadcast()
494 struct clock_event_device *bc; in tick_resume_broadcast() local
499 bc = tick_broadcast_device.evtdev; in tick_resume_broadcast()
501 if (bc) { in tick_resume_broadcast()
502 clockevents_tick_resume(bc); in tick_resume_broadcast()
507 tick_broadcast_start_periodic(bc); in tick_resume_broadcast()
511 tick_resume_broadcast_oneshot(bc); in tick_resume_broadcast()
547 static void tick_broadcast_set_affinity(struct clock_event_device *bc, in tick_broadcast_set_affinity() argument
550 if (!(bc->features & CLOCK_EVT_FEAT_DYNIRQ)) in tick_broadcast_set_affinity()
553 if (cpumask_equal(bc->cpumask, cpumask)) in tick_broadcast_set_affinity()
556 bc->cpumask = cpumask; in tick_broadcast_set_affinity()
557 irq_set_affinity(bc->irq, bc->cpumask); in tick_broadcast_set_affinity()
560 static void tick_broadcast_set_event(struct clock_event_device *bc, int cpu, in tick_broadcast_set_event() argument
563 if (!clockevent_state_oneshot(bc)) in tick_broadcast_set_event()
564 clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_broadcast_set_event()
566 clockevents_program_event(bc, expires, 1); in tick_broadcast_set_event()
567 tick_broadcast_set_affinity(bc, cpumask_of(cpu)); in tick_broadcast_set_event()
570 static void tick_resume_broadcast_oneshot(struct clock_event_device *bc) in tick_resume_broadcast_oneshot() argument
572 clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_resume_broadcast_oneshot()
671 static int broadcast_needs_cpu(struct clock_event_device *bc, int cpu) in broadcast_needs_cpu() argument
673 if (!(bc->features & CLOCK_EVT_FEAT_HRTIMER)) in broadcast_needs_cpu()
675 if (bc->next_event.tv64 == KTIME_MAX) in broadcast_needs_cpu()
677 return bc->bound_on == cpu ? -EBUSY : 0; in broadcast_needs_cpu()
680 static void broadcast_shutdown_local(struct clock_event_device *bc, in broadcast_shutdown_local() argument
688 if (bc->features & CLOCK_EVT_FEAT_HRTIMER) { in broadcast_shutdown_local()
689 if (broadcast_needs_cpu(bc, smp_processor_id())) in broadcast_shutdown_local()
691 if (dev->next_event.tv64 < bc->next_event.tv64) in broadcast_shutdown_local()
699 struct clock_event_device *bc, *dev; in __tick_broadcast_oneshot_control() local
713 bc = tick_broadcast_device.evtdev; in __tick_broadcast_oneshot_control()
724 ret = broadcast_needs_cpu(bc, cpu); in __tick_broadcast_oneshot_control()
734 if (bc->features & CLOCK_EVT_FEAT_HRTIMER) in __tick_broadcast_oneshot_control()
743 broadcast_shutdown_local(bc, dev); in __tick_broadcast_oneshot_control()
757 } else if (dev->next_event.tv64 < bc->next_event.tv64) { in __tick_broadcast_oneshot_control()
758 tick_broadcast_set_event(bc, cpu, dev->next_event); in __tick_broadcast_oneshot_control()
766 ret = broadcast_needs_cpu(bc, cpu); in __tick_broadcast_oneshot_control()
870 void tick_broadcast_setup_oneshot(struct clock_event_device *bc) in tick_broadcast_setup_oneshot() argument
875 if (bc->event_handler != tick_handle_oneshot_broadcast) { in tick_broadcast_setup_oneshot()
876 int was_periodic = clockevent_state_periodic(bc); in tick_broadcast_setup_oneshot()
878 bc->event_handler = tick_handle_oneshot_broadcast; in tick_broadcast_setup_oneshot()
892 clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_broadcast_setup_oneshot()
895 tick_broadcast_set_event(bc, cpu, tick_next_period); in tick_broadcast_setup_oneshot()
897 bc->next_event.tv64 = KTIME_MAX; in tick_broadcast_setup_oneshot()
915 struct clock_event_device *bc; in tick_broadcast_switch_to_oneshot() local
921 bc = tick_broadcast_device.evtdev; in tick_broadcast_switch_to_oneshot()
922 if (bc) in tick_broadcast_switch_to_oneshot()
923 tick_broadcast_setup_oneshot(bc); in tick_broadcast_switch_to_oneshot()
931 struct clock_event_device *bc; in hotplug_cpu__broadcast_tick_pull() local
935 bc = tick_broadcast_device.evtdev; in hotplug_cpu__broadcast_tick_pull()
937 if (bc && broadcast_needs_cpu(bc, deadcpu)) { in hotplug_cpu__broadcast_tick_pull()
939 clockevents_program_event(bc, bc->next_event, 1); in hotplug_cpu__broadcast_tick_pull()
978 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_broadcast_oneshot_available() local
980 return bc ? bc->features & CLOCK_EVT_FEAT_ONESHOT : false; in tick_broadcast_oneshot_available()
986 struct clock_event_device *bc = tick_broadcast_device.evtdev; in __tick_broadcast_oneshot_control() local
988 if (!bc || (bc->features & CLOCK_EVT_FEAT_HRTIMER)) in __tick_broadcast_oneshot_control()