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