1#ifndef __LINUX_GPIO_H
2#define __LINUX_GPIO_H
3
4#include <linux/errno.h>
5
6
7
8
9#define GPIOF_DIR_OUT (0 << 0)
10#define GPIOF_DIR_IN (1 << 0)
11
12#define GPIOF_INIT_LOW (0 << 1)
13#define GPIOF_INIT_HIGH (1 << 1)
14
15#define GPIOF_IN (GPIOF_DIR_IN)
16#define GPIOF_OUT_INIT_LOW (GPIOF_DIR_OUT | GPIOF_INIT_LOW)
17#define GPIOF_OUT_INIT_HIGH (GPIOF_DIR_OUT | GPIOF_INIT_HIGH)
18
19
20#define GPIOF_OPEN_DRAIN (1 << 2)
21
22
23#define GPIOF_OPEN_SOURCE (1 << 3)
24
25#define GPIOF_EXPORT (1 << 4)
26#define GPIOF_EXPORT_CHANGEABLE (1 << 5)
27#define GPIOF_EXPORT_DIR_FIXED (GPIOF_EXPORT)
28#define GPIOF_EXPORT_DIR_CHANGEABLE (GPIOF_EXPORT | GPIOF_EXPORT_CHANGEABLE)
29
30
31
32
33
34
35
36struct gpio {
37 unsigned gpio;
38 unsigned long flags;
39 const char *label;
40};
41
42#ifdef CONFIG_GPIOLIB
43
44#ifdef CONFIG_ARCH_HAVE_CUSTOM_GPIO_H
45#include <asm/gpio.h>
46#else
47
48#include <asm-generic/gpio.h>
49
50static inline int gpio_get_value(unsigned int gpio)
51{
52 return __gpio_get_value(gpio);
53}
54
55static inline void gpio_set_value(unsigned int gpio, int value)
56{
57 __gpio_set_value(gpio, value);
58}
59
60static inline int gpio_cansleep(unsigned int gpio)
61{
62 return __gpio_cansleep(gpio);
63}
64
65static inline int gpio_to_irq(unsigned int gpio)
66{
67 return __gpio_to_irq(gpio);
68}
69
70static inline int irq_to_gpio(unsigned int irq)
71{
72 return -EINVAL;
73}
74
75#endif
76
77#else
78
79#include <linux/kernel.h>
80#include <linux/types.h>
81#include <linux/errno.h>
82#include <linux/bug.h>
83
84struct device;
85struct gpio_chip;
86
87static inline bool gpio_is_valid(int number)
88{
89 return false;
90}
91
92static inline int gpio_request(unsigned gpio, const char *label)
93{
94 return -ENOSYS;
95}
96
97static inline int gpio_request_one(unsigned gpio,
98 unsigned long flags, const char *label)
99{
100 return -ENOSYS;
101}
102
103static inline int gpio_request_array(const struct gpio *array, size_t num)
104{
105 return -ENOSYS;
106}
107
108static inline void gpio_free(unsigned gpio)
109{
110 might_sleep();
111
112
113 WARN_ON(1);
114}
115
116static inline void gpio_free_array(const struct gpio *array, size_t num)
117{
118 might_sleep();
119
120
121 WARN_ON(1);
122}
123
124static inline int gpio_direction_input(unsigned gpio)
125{
126 return -ENOSYS;
127}
128
129static inline int gpio_direction_output(unsigned gpio, int value)
130{
131 return -ENOSYS;
132}
133
134static inline int gpio_set_debounce(unsigned gpio, unsigned debounce)
135{
136 return -ENOSYS;
137}
138
139static inline int gpio_get_value(unsigned gpio)
140{
141
142 WARN_ON(1);
143 return 0;
144}
145
146static inline void gpio_set_value(unsigned gpio, int value)
147{
148
149 WARN_ON(1);
150}
151
152static inline int gpio_cansleep(unsigned gpio)
153{
154
155 WARN_ON(1);
156 return 0;
157}
158
159static inline int gpio_get_value_cansleep(unsigned gpio)
160{
161
162 WARN_ON(1);
163 return 0;
164}
165
166static inline void gpio_set_value_cansleep(unsigned gpio, int value)
167{
168
169 WARN_ON(1);
170}
171
172static inline int gpio_export(unsigned gpio, bool direction_may_change)
173{
174
175 WARN_ON(1);
176 return -EINVAL;
177}
178
179static inline int gpio_export_link(struct device *dev, const char *name,
180 unsigned gpio)
181{
182
183 WARN_ON(1);
184 return -EINVAL;
185}
186
187static inline int gpio_sysfs_set_active_low(unsigned gpio, int value)
188{
189
190 WARN_ON(1);
191 return -EINVAL;
192}
193
194static inline void gpio_unexport(unsigned gpio)
195{
196
197 WARN_ON(1);
198}
199
200static inline int gpio_to_irq(unsigned gpio)
201{
202
203 WARN_ON(1);
204 return -EINVAL;
205}
206
207static inline int irq_to_gpio(unsigned irq)
208{
209
210 WARN_ON(1);
211 return -EINVAL;
212}
213
214static inline int
215gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
216 unsigned int gpio_offset, unsigned int pin_offset,
217 unsigned int npins)
218{
219 WARN_ON(1);
220 return -EINVAL;
221}
222
223static inline void
224gpiochip_remove_pin_ranges(struct gpio_chip *chip)
225{
226 WARN_ON(1);
227}
228
229#endif
230
231struct device;
232
233
234int devm_gpio_request(struct device *dev, unsigned gpio, const char *label);
235int devm_gpio_request_one(struct device *dev, unsigned gpio,
236 unsigned long flags, const char *label);
237void devm_gpio_free(struct device *dev, unsigned int gpio);
238
239#endif
240