]> git.karo-electronics.de Git - karo-tx-linux.git/blob - include/linux/reset.h
Merge branch 'linux-4.4' of https://github.com/skeggsb/linux into drm-fixes
[karo-tx-linux.git] / include / linux / reset.h
1 #ifndef _LINUX_RESET_H_
2 #define _LINUX_RESET_H_
3
4 struct device;
5 struct device_node;
6 struct reset_control;
7
8 #ifdef CONFIG_RESET_CONTROLLER
9
10 int reset_control_reset(struct reset_control *rstc);
11 int reset_control_assert(struct reset_control *rstc);
12 int reset_control_deassert(struct reset_control *rstc);
13 int reset_control_status(struct reset_control *rstc);
14
15 struct reset_control *reset_control_get(struct device *dev, const char *id);
16 void reset_control_put(struct reset_control *rstc);
17 struct reset_control *devm_reset_control_get(struct device *dev, const char *id);
18
19 int __must_check device_reset(struct device *dev);
20
21 static inline int device_reset_optional(struct device *dev)
22 {
23         return device_reset(dev);
24 }
25
26 static inline struct reset_control *reset_control_get_optional(
27                                         struct device *dev, const char *id)
28 {
29         return reset_control_get(dev, id);
30 }
31
32 static inline struct reset_control *devm_reset_control_get_optional(
33                                         struct device *dev, const char *id)
34 {
35         return devm_reset_control_get(dev, id);
36 }
37
38 struct reset_control *of_reset_control_get(struct device_node *node,
39                                            const char *id);
40
41 #else
42
43 static inline int reset_control_reset(struct reset_control *rstc)
44 {
45         WARN_ON(1);
46         return 0;
47 }
48
49 static inline int reset_control_assert(struct reset_control *rstc)
50 {
51         WARN_ON(1);
52         return 0;
53 }
54
55 static inline int reset_control_deassert(struct reset_control *rstc)
56 {
57         WARN_ON(1);
58         return 0;
59 }
60
61 static inline int reset_control_status(struct reset_control *rstc)
62 {
63         WARN_ON(1);
64         return 0;
65 }
66
67 static inline void reset_control_put(struct reset_control *rstc)
68 {
69         WARN_ON(1);
70 }
71
72 static inline int device_reset_optional(struct device *dev)
73 {
74         return -ENOSYS;
75 }
76
77 static inline struct reset_control *__must_check reset_control_get(
78                                         struct device *dev, const char *id)
79 {
80         WARN_ON(1);
81         return ERR_PTR(-EINVAL);
82 }
83
84 static inline struct reset_control *__must_check devm_reset_control_get(
85                                         struct device *dev, const char *id)
86 {
87         WARN_ON(1);
88         return ERR_PTR(-EINVAL);
89 }
90
91 static inline struct reset_control *reset_control_get_optional(
92                                         struct device *dev, const char *id)
93 {
94         return ERR_PTR(-ENOSYS);
95 }
96
97 static inline struct reset_control *devm_reset_control_get_optional(
98                                         struct device *dev, const char *id)
99 {
100         return ERR_PTR(-ENOSYS);
101 }
102
103 static inline struct reset_control *of_reset_control_get(
104                                 struct device_node *node, const char *id)
105 {
106         return ERR_PTR(-ENOSYS);
107 }
108
109 #endif /* CONFIG_RESET_CONTROLLER */
110
111 #endif