at v3.13 5.9 kB view raw
1#ifndef __LINUX_GPIO_H 2#define __LINUX_GPIO_H 3 4#include <linux/errno.h> 5 6/* see Documentation/gpio.txt */ 7 8/* make these flag values available regardless of GPIO kconfig options */ 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/* Gpio pin is active-low */ 20#define GPIOF_ACTIVE_LOW (1 << 2) 21 22/* Gpio pin is open drain */ 23#define GPIOF_OPEN_DRAIN (1 << 3) 24 25/* Gpio pin is open source */ 26#define GPIOF_OPEN_SOURCE (1 << 4) 27 28#define GPIOF_EXPORT (1 << 5) 29#define GPIOF_EXPORT_CHANGEABLE (1 << 6) 30#define GPIOF_EXPORT_DIR_FIXED (GPIOF_EXPORT) 31#define GPIOF_EXPORT_DIR_CHANGEABLE (GPIOF_EXPORT | GPIOF_EXPORT_CHANGEABLE) 32 33/** 34 * struct gpio - a structure describing a GPIO with configuration 35 * @gpio: the GPIO number 36 * @flags: GPIO configuration as specified by GPIOF_* 37 * @label: a literal description string of this GPIO 38 */ 39struct gpio { 40 unsigned gpio; 41 unsigned long flags; 42 const char *label; 43}; 44 45#ifdef CONFIG_GPIOLIB 46 47#ifdef CONFIG_ARCH_HAVE_CUSTOM_GPIO_H 48#include <asm/gpio.h> 49#else 50 51#include <asm-generic/gpio.h> 52 53static inline int gpio_get_value(unsigned int gpio) 54{ 55 return __gpio_get_value(gpio); 56} 57 58static inline void gpio_set_value(unsigned int gpio, int value) 59{ 60 __gpio_set_value(gpio, value); 61} 62 63static inline int gpio_cansleep(unsigned int gpio) 64{ 65 return __gpio_cansleep(gpio); 66} 67 68static inline int gpio_to_irq(unsigned int gpio) 69{ 70 return __gpio_to_irq(gpio); 71} 72 73static inline int irq_to_gpio(unsigned int irq) 74{ 75 return -EINVAL; 76} 77 78#endif /* ! CONFIG_ARCH_HAVE_CUSTOM_GPIO_H */ 79 80/* CONFIG_GPIOLIB: bindings for managed devices that want to request gpios */ 81 82struct device; 83 84int devm_gpio_request(struct device *dev, unsigned gpio, const char *label); 85int devm_gpio_request_one(struct device *dev, unsigned gpio, 86 unsigned long flags, const char *label); 87void devm_gpio_free(struct device *dev, unsigned int gpio); 88 89#else /* ! CONFIG_GPIOLIB */ 90 91#include <linux/kernel.h> 92#include <linux/types.h> 93#include <linux/errno.h> 94#include <linux/bug.h> 95#include <linux/pinctrl/pinctrl.h> 96 97struct device; 98struct gpio_chip; 99 100static inline bool gpio_is_valid(int number) 101{ 102 return false; 103} 104 105static inline int gpio_request(unsigned gpio, const char *label) 106{ 107 return -ENOSYS; 108} 109 110static inline int gpio_request_one(unsigned gpio, 111 unsigned long flags, const char *label) 112{ 113 return -ENOSYS; 114} 115 116static inline int gpio_request_array(const struct gpio *array, size_t num) 117{ 118 return -ENOSYS; 119} 120 121static inline void gpio_free(unsigned gpio) 122{ 123 might_sleep(); 124 125 /* GPIO can never have been requested */ 126 WARN_ON(1); 127} 128 129static inline void gpio_free_array(const struct gpio *array, size_t num) 130{ 131 might_sleep(); 132 133 /* GPIO can never have been requested */ 134 WARN_ON(1); 135} 136 137static inline int gpio_direction_input(unsigned gpio) 138{ 139 return -ENOSYS; 140} 141 142static inline int gpio_direction_output(unsigned gpio, int value) 143{ 144 return -ENOSYS; 145} 146 147static inline int gpio_set_debounce(unsigned gpio, unsigned debounce) 148{ 149 return -ENOSYS; 150} 151 152static inline int gpio_get_value(unsigned gpio) 153{ 154 /* GPIO can never have been requested or set as {in,out}put */ 155 WARN_ON(1); 156 return 0; 157} 158 159static inline void gpio_set_value(unsigned gpio, int value) 160{ 161 /* GPIO can never have been requested or set as output */ 162 WARN_ON(1); 163} 164 165static inline int gpio_cansleep(unsigned gpio) 166{ 167 /* GPIO can never have been requested or set as {in,out}put */ 168 WARN_ON(1); 169 return 0; 170} 171 172static inline int gpio_get_value_cansleep(unsigned gpio) 173{ 174 /* GPIO can never have been requested or set as {in,out}put */ 175 WARN_ON(1); 176 return 0; 177} 178 179static inline void gpio_set_value_cansleep(unsigned gpio, int value) 180{ 181 /* GPIO can never have been requested or set as output */ 182 WARN_ON(1); 183} 184 185static inline int gpio_export(unsigned gpio, bool direction_may_change) 186{ 187 /* GPIO can never have been requested or set as {in,out}put */ 188 WARN_ON(1); 189 return -EINVAL; 190} 191 192static inline int gpio_export_link(struct device *dev, const char *name, 193 unsigned gpio) 194{ 195 /* GPIO can never have been exported */ 196 WARN_ON(1); 197 return -EINVAL; 198} 199 200static inline int gpio_sysfs_set_active_low(unsigned gpio, int value) 201{ 202 /* GPIO can never have been requested */ 203 WARN_ON(1); 204 return -EINVAL; 205} 206 207static inline void gpio_unexport(unsigned gpio) 208{ 209 /* GPIO can never have been exported */ 210 WARN_ON(1); 211} 212 213static inline int gpio_to_irq(unsigned gpio) 214{ 215 /* GPIO can never have been requested or set as input */ 216 WARN_ON(1); 217 return -EINVAL; 218} 219 220static inline int gpio_lock_as_irq(struct gpio_chip *chip, unsigned int offset) 221{ 222 WARN_ON(1); 223 return -EINVAL; 224} 225 226static inline void gpio_unlock_as_irq(struct gpio_chip *chip, 227 unsigned int offset) 228{ 229 WARN_ON(1); 230} 231 232static inline int irq_to_gpio(unsigned irq) 233{ 234 /* irq can never have been returned from gpio_to_irq() */ 235 WARN_ON(1); 236 return -EINVAL; 237} 238 239static inline int 240gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name, 241 unsigned int gpio_offset, unsigned int pin_offset, 242 unsigned int npins) 243{ 244 WARN_ON(1); 245 return -EINVAL; 246} 247 248static inline int 249gpiochip_add_pingroup_range(struct gpio_chip *chip, 250 struct pinctrl_dev *pctldev, 251 unsigned int gpio_offset, const char *pin_group) 252{ 253 WARN_ON(1); 254 return -EINVAL; 255} 256 257static inline void 258gpiochip_remove_pin_ranges(struct gpio_chip *chip) 259{ 260 WARN_ON(1); 261} 262 263static inline int devm_gpio_request(struct device *dev, unsigned gpio, 264 const char *label) 265{ 266 WARN_ON(1); 267 return -EINVAL; 268} 269 270static inline int devm_gpio_request_one(struct device *dev, unsigned gpio, 271 unsigned long flags, const char *label) 272{ 273 WARN_ON(1); 274 return -EINVAL; 275} 276 277static inline void devm_gpio_free(struct device *dev, unsigned int gpio) 278{ 279 WARN_ON(1); 280} 281 282#endif /* ! CONFIG_GPIOLIB */ 283 284#endif /* __LINUX_GPIO_H */