This source file includes following definitions.
- use_pit
- pit_timer_init
- init_pit_clocksource
1
2
3
4
5
6 #include <linux/clockchips.h>
7 #include <linux/init.h>
8 #include <linux/timex.h>
9 #include <linux/i8253.h>
10
11 #include <asm/apic.h>
12 #include <asm/hpet.h>
13 #include <asm/time.h>
14 #include <asm/smp.h>
15
16
17
18
19
20 struct clock_event_device *global_clock_event;
21
22
23
24
25
26
27
28
29
30
31 static bool __init use_pit(void)
32 {
33 if (!IS_ENABLED(CONFIG_X86_TSC) || !boot_cpu_has(X86_FEATURE_TSC))
34 return true;
35
36
37 return apic_needs_pit();
38 }
39
40 bool __init pit_timer_init(void)
41 {
42 if (!use_pit())
43 return false;
44
45 clockevent_i8253_init(true);
46 global_clock_event = &i8253_clockevent;
47 return true;
48 }
49
50 #ifndef CONFIG_X86_64
51 static int __init init_pit_clocksource(void)
52 {
53
54
55
56
57
58
59
60 if (num_possible_cpus() > 1 || is_hpet_enabled() ||
61 !clockevent_state_periodic(&i8253_clockevent))
62 return 0;
63
64 return clocksource_i8253_init();
65 }
66 arch_initcall(init_pit_clocksource);
67 #endif