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