1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * cpuidle.h - The internal header file |
4 | */ |
5 | |
6 | #ifndef __DRIVER_CPUIDLE_H |
7 | #define __DRIVER_CPUIDLE_H |
8 | |
9 | /* For internal use only */ |
10 | extern char param_governor[]; |
11 | extern struct cpuidle_governor *cpuidle_curr_governor; |
12 | extern struct cpuidle_governor *cpuidle_prev_governor; |
13 | extern struct list_head cpuidle_governors; |
14 | extern struct list_head cpuidle_detected_devices; |
15 | extern struct mutex cpuidle_lock; |
16 | extern spinlock_t cpuidle_driver_lock; |
17 | extern int cpuidle_disabled(void); |
18 | extern int cpuidle_enter_state(struct cpuidle_device *dev, |
19 | struct cpuidle_driver *drv, int next_state); |
20 | |
21 | /* idle loop */ |
22 | extern void cpuidle_install_idle_handler(void); |
23 | extern void cpuidle_uninstall_idle_handler(void); |
24 | |
25 | /* governors */ |
26 | extern struct cpuidle_governor *cpuidle_find_governor(const char *str); |
27 | extern int cpuidle_switch_governor(struct cpuidle_governor *gov); |
28 | |
29 | /* sysfs */ |
30 | |
31 | struct device; |
32 | |
33 | extern int cpuidle_add_interface(void); |
34 | extern void cpuidle_remove_interface(struct device *dev); |
35 | extern int cpuidle_add_device_sysfs(struct cpuidle_device *device); |
36 | extern void cpuidle_remove_device_sysfs(struct cpuidle_device *device); |
37 | extern int cpuidle_add_sysfs(struct cpuidle_device *dev); |
38 | extern void cpuidle_remove_sysfs(struct cpuidle_device *dev); |
39 | |
40 | #ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED |
41 | bool cpuidle_state_is_coupled(struct cpuidle_driver *drv, int state); |
42 | int cpuidle_coupled_state_verify(struct cpuidle_driver *drv); |
43 | int cpuidle_enter_state_coupled(struct cpuidle_device *dev, |
44 | struct cpuidle_driver *drv, int next_state); |
45 | int cpuidle_coupled_register_device(struct cpuidle_device *dev); |
46 | void cpuidle_coupled_unregister_device(struct cpuidle_device *dev); |
47 | #else |
48 | static inline |
49 | bool cpuidle_state_is_coupled(struct cpuidle_driver *drv, int state) |
50 | { |
51 | return false; |
52 | } |
53 | |
54 | static inline int cpuidle_coupled_state_verify(struct cpuidle_driver *drv) |
55 | { |
56 | return 0; |
57 | } |
58 | |
59 | static inline int cpuidle_enter_state_coupled(struct cpuidle_device *dev, |
60 | struct cpuidle_driver *drv, int next_state) |
61 | { |
62 | return -1; |
63 | } |
64 | |
65 | static inline int cpuidle_coupled_register_device(struct cpuidle_device *dev) |
66 | { |
67 | return 0; |
68 | } |
69 | |
70 | static inline void cpuidle_coupled_unregister_device(struct cpuidle_device *dev) |
71 | { |
72 | } |
73 | #endif |
74 | |
75 | #endif /* __DRIVER_CPUIDLE_H */ |
76 | |