Merge tag 'topic/drm-misc-2016-02-08' of git://anongit.freedesktop.org/drm-intel...
[cascardo/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 struct reset_control *of_reset_control_get_by_index(
42                                         struct device_node *node, int index);
43
44 #else
45
46 static inline int reset_control_reset(struct reset_control *rstc)
47 {
48         WARN_ON(1);
49         return 0;
50 }
51
52 static inline int reset_control_assert(struct reset_control *rstc)
53 {
54         WARN_ON(1);
55         return 0;
56 }
57
58 static inline int reset_control_deassert(struct reset_control *rstc)
59 {
60         WARN_ON(1);
61         return 0;
62 }
63
64 static inline int reset_control_status(struct reset_control *rstc)
65 {
66         WARN_ON(1);
67         return 0;
68 }
69
70 static inline void reset_control_put(struct reset_control *rstc)
71 {
72         WARN_ON(1);
73 }
74
75 static inline int device_reset_optional(struct device *dev)
76 {
77         return -ENOTSUPP;
78 }
79
80 static inline struct reset_control *__must_check reset_control_get(
81                                         struct device *dev, const char *id)
82 {
83         WARN_ON(1);
84         return ERR_PTR(-EINVAL);
85 }
86
87 static inline struct reset_control *__must_check devm_reset_control_get(
88                                         struct device *dev, const char *id)
89 {
90         WARN_ON(1);
91         return ERR_PTR(-EINVAL);
92 }
93
94 static inline struct reset_control *reset_control_get_optional(
95                                         struct device *dev, const char *id)
96 {
97         return ERR_PTR(-ENOTSUPP);
98 }
99
100 static inline struct reset_control *devm_reset_control_get_optional(
101                                         struct device *dev, const char *id)
102 {
103         return ERR_PTR(-ENOTSUPP);
104 }
105
106 static inline struct reset_control *of_reset_control_get(
107                                 struct device_node *node, const char *id)
108 {
109         return ERR_PTR(-ENOTSUPP);
110 }
111
112 static inline struct reset_control *of_reset_control_get_by_index(
113                                 struct device_node *node, int index)
114 {
115         return ERR_PTR(-ENOTSUPP);
116 }
117
118 #endif /* CONFIG_RESET_CONTROLLER */
119
120 #endif