xref: /linux-6.15/include/linux/reset.h (revision dec102aa)
1 #ifndef _LINUX_RESET_H_
2 #define _LINUX_RESET_H_
3 
4 struct device;
5 struct reset_control;
6 
7 #ifdef CONFIG_RESET_CONTROLLER
8 
9 int reset_control_reset(struct reset_control *rstc);
10 int reset_control_assert(struct reset_control *rstc);
11 int reset_control_deassert(struct reset_control *rstc);
12 
13 struct reset_control *reset_control_get(struct device *dev, const char *id);
14 void reset_control_put(struct reset_control *rstc);
15 struct reset_control *devm_reset_control_get(struct device *dev, const char *id);
16 
17 int __must_check device_reset(struct device *dev);
18 
19 static inline int device_reset_optional(struct device *dev)
20 {
21 	return device_reset(dev);
22 }
23 
24 static inline struct reset_control *reset_control_get_optional(
25 					struct device *dev, const char *id)
26 {
27 	return reset_control_get(dev, id);
28 }
29 
30 static inline struct reset_control *devm_reset_control_get_optional(
31 					struct device *dev, const char *id)
32 {
33 	return devm_reset_control_get(dev, id);
34 }
35 
36 #else
37 
38 static inline int reset_control_reset(struct reset_control *rstc)
39 {
40 	WARN_ON(1);
41 	return 0;
42 }
43 
44 static inline int reset_control_assert(struct reset_control *rstc)
45 {
46 	WARN_ON(1);
47 	return 0;
48 }
49 
50 static inline int reset_control_deassert(struct reset_control *rstc)
51 {
52 	WARN_ON(1);
53 	return 0;
54 }
55 
56 static inline void reset_control_put(struct reset_control *rstc)
57 {
58 	WARN_ON(1);
59 }
60 
61 static inline int device_reset_optional(struct device *dev)
62 {
63 	return -ENOSYS;
64 }
65 
66 static inline struct reset_control *reset_control_get_optional(
67 					struct device *dev, const char *id)
68 {
69 	return ERR_PTR(-ENOSYS);
70 }
71 
72 static inline struct reset_control *devm_reset_control_get_optional(
73 					struct device *dev, const char *id)
74 {
75 	return ERR_PTR(-ENOSYS);
76 }
77 
78 #endif /* CONFIG_RESET_CONTROLLER */
79 
80 #endif
81