Lines Matching refs:bc
40 static void tick_broadcast_setup_oneshot(struct clock_event_device *bc);
42 static void tick_resume_broadcast_oneshot(struct clock_event_device *bc);
44 static inline void tick_broadcast_setup_oneshot(struct clock_event_device *bc) { BUG(); } in tick_broadcast_setup_oneshot() argument
46 static inline void tick_resume_broadcast_oneshot(struct clock_event_device *bc) { } in tick_resume_broadcast_oneshot() argument
65 static void tick_broadcast_start_periodic(struct clock_event_device *bc) in tick_broadcast_start_periodic() argument
67 if (bc) in tick_broadcast_start_periodic()
68 tick_setup_periodic(bc, 1); in tick_broadcast_start_periodic()
163 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_device_uses_broadcast() local
180 tick_broadcast_start_periodic(bc); in tick_device_uses_broadcast()
182 tick_broadcast_setup_oneshot(bc); in tick_device_uses_broadcast()
221 if (cpumask_empty(tick_broadcast_mask) && bc) in tick_device_uses_broadcast()
222 clockevents_shutdown(bc); in tick_device_uses_broadcast()
231 if (bc && !(bc->features & CLOCK_EVT_FEAT_HRTIMER)) in tick_device_uses_broadcast()
272 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_do_broadcast() local
287 local = !(bc->features & CLOCK_EVT_FEAT_HRTIMER); in tick_do_broadcast()
356 struct clock_event_device *bc, *dev; in tick_broadcast_control() local
376 bc = tick_broadcast_device.evtdev; in tick_broadcast_control()
393 if (bc && !(bc->features & CLOCK_EVT_FEAT_HRTIMER) && in tick_broadcast_control()
413 if (bc) { in tick_broadcast_control()
416 clockevents_shutdown(bc); in tick_broadcast_control()
419 tick_broadcast_start_periodic(bc); in tick_broadcast_control()
421 tick_broadcast_setup_oneshot(bc); in tick_broadcast_control()
446 struct clock_event_device *bc; in tick_shutdown_broadcast() local
451 bc = tick_broadcast_device.evtdev; in tick_shutdown_broadcast()
456 if (bc && cpumask_empty(tick_broadcast_mask)) in tick_shutdown_broadcast()
457 clockevents_shutdown(bc); in tick_shutdown_broadcast()
466 struct clock_event_device *bc; in tick_suspend_broadcast() local
471 bc = tick_broadcast_device.evtdev; in tick_suspend_broadcast()
472 if (bc) in tick_suspend_broadcast()
473 clockevents_shutdown(bc); in tick_suspend_broadcast()
496 struct clock_event_device *bc; in tick_resume_broadcast() local
501 bc = tick_broadcast_device.evtdev; in tick_resume_broadcast()
503 if (bc) { in tick_resume_broadcast()
504 clockevents_tick_resume(bc); in tick_resume_broadcast()
509 tick_broadcast_start_periodic(bc); in tick_resume_broadcast()
513 tick_resume_broadcast_oneshot(bc); in tick_resume_broadcast()
549 static void tick_broadcast_set_affinity(struct clock_event_device *bc, in tick_broadcast_set_affinity() argument
552 if (!(bc->features & CLOCK_EVT_FEAT_DYNIRQ)) in tick_broadcast_set_affinity()
555 if (cpumask_equal(bc->cpumask, cpumask)) in tick_broadcast_set_affinity()
558 bc->cpumask = cpumask; in tick_broadcast_set_affinity()
559 irq_set_affinity(bc->irq, bc->cpumask); in tick_broadcast_set_affinity()
562 static void tick_broadcast_set_event(struct clock_event_device *bc, int cpu, in tick_broadcast_set_event() argument
565 if (!clockevent_state_oneshot(bc)) in tick_broadcast_set_event()
566 clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_broadcast_set_event()
568 clockevents_program_event(bc, expires, 1); in tick_broadcast_set_event()
569 tick_broadcast_set_affinity(bc, cpumask_of(cpu)); in tick_broadcast_set_event()
572 static void tick_resume_broadcast_oneshot(struct clock_event_device *bc) in tick_resume_broadcast_oneshot() argument
574 clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_resume_broadcast_oneshot()
681 static int broadcast_needs_cpu(struct clock_event_device *bc, int cpu) in broadcast_needs_cpu() argument
683 if (!(bc->features & CLOCK_EVT_FEAT_HRTIMER)) in broadcast_needs_cpu()
685 if (bc->next_event == KTIME_MAX) in broadcast_needs_cpu()
687 return bc->bound_on == cpu ? -EBUSY : 0; in broadcast_needs_cpu()
690 static void broadcast_shutdown_local(struct clock_event_device *bc, in broadcast_shutdown_local() argument
698 if (bc->features & CLOCK_EVT_FEAT_HRTIMER) { in broadcast_shutdown_local()
699 if (broadcast_needs_cpu(bc, smp_processor_id())) in broadcast_shutdown_local()
701 if (dev->next_event < bc->next_event) in broadcast_shutdown_local()
709 struct clock_event_device *bc, *dev; in __tick_broadcast_oneshot_control() local
723 bc = tick_broadcast_device.evtdev; in __tick_broadcast_oneshot_control()
734 ret = broadcast_needs_cpu(bc, cpu); in __tick_broadcast_oneshot_control()
744 if (bc->features & CLOCK_EVT_FEAT_HRTIMER) in __tick_broadcast_oneshot_control()
753 broadcast_shutdown_local(bc, dev); in __tick_broadcast_oneshot_control()
767 } else if (dev->next_event < bc->next_event) { in __tick_broadcast_oneshot_control()
768 tick_broadcast_set_event(bc, cpu, dev->next_event); in __tick_broadcast_oneshot_control()
776 ret = broadcast_needs_cpu(bc, cpu); in __tick_broadcast_oneshot_control()
880 static void tick_broadcast_setup_oneshot(struct clock_event_device *bc) in tick_broadcast_setup_oneshot() argument
884 if (!bc) in tick_broadcast_setup_oneshot()
888 if (bc->event_handler != tick_handle_oneshot_broadcast) { in tick_broadcast_setup_oneshot()
889 int was_periodic = clockevent_state_periodic(bc); in tick_broadcast_setup_oneshot()
891 bc->event_handler = tick_handle_oneshot_broadcast; in tick_broadcast_setup_oneshot()
905 clockevents_switch_state(bc, CLOCK_EVT_STATE_ONESHOT); in tick_broadcast_setup_oneshot()
908 tick_broadcast_set_event(bc, cpu, tick_next_period); in tick_broadcast_setup_oneshot()
910 bc->next_event = KTIME_MAX; in tick_broadcast_setup_oneshot()
928 struct clock_event_device *bc; in tick_broadcast_switch_to_oneshot() local
934 bc = tick_broadcast_device.evtdev; in tick_broadcast_switch_to_oneshot()
935 if (bc) in tick_broadcast_switch_to_oneshot()
936 tick_broadcast_setup_oneshot(bc); in tick_broadcast_switch_to_oneshot()
944 struct clock_event_device *bc; in hotplug_cpu__broadcast_tick_pull() local
948 bc = tick_broadcast_device.evtdev; in hotplug_cpu__broadcast_tick_pull()
950 if (bc && broadcast_needs_cpu(bc, deadcpu)) { in hotplug_cpu__broadcast_tick_pull()
952 clockevents_program_event(bc, bc->next_event, 1); in hotplug_cpu__broadcast_tick_pull()
991 struct clock_event_device *bc = tick_broadcast_device.evtdev; in tick_broadcast_oneshot_available() local
993 return bc ? bc->features & CLOCK_EVT_FEAT_ONESHOT : false; in tick_broadcast_oneshot_available()
999 struct clock_event_device *bc = tick_broadcast_device.evtdev; in __tick_broadcast_oneshot_control() local
1001 if (!bc || (bc->features & CLOCK_EVT_FEAT_HRTIMER)) in __tick_broadcast_oneshot_control()