linux/include/linux/gpio.h
<<
>>
Prefs
   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 open drain */
  20#define GPIOF_OPEN_DRAIN        (1 << 2)
  21
  22/* Gpio pin is open source */
  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 * struct gpio - a structure describing a GPIO with configuration
  32 * @gpio:       the GPIO number
  33 * @flags:      GPIO configuration as specified by GPIOF_*
  34 * @label:      a literal description string of this GPIO
  35 */
  36struct gpio {
  37        unsigned        gpio;
  38        unsigned long   flags;
  39        const char      *label;
  40};
  41
  42#ifdef CONFIG_GENERIC_GPIO
  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 devm_gpio_request(struct device *dev, unsigned gpio,
  98                                    const char *label)
  99{
 100        return -ENOSYS;
 101}
 102
 103static inline int gpio_request_one(unsigned gpio,
 104                                        unsigned long flags, const char *label)
 105{
 106        return -ENOSYS;
 107}
 108
 109static inline int devm_gpio_request_one(struct device *dev, unsigned gpio,
 110                                        unsigned long flags, const char *label)
 111{
 112        return -ENOSYS;
 113}
 114
 115static inline int gpio_request_array(const struct gpio *array, size_t num)
 116{
 117        return -ENOSYS;
 118}
 119
 120static inline void gpio_free(unsigned gpio)
 121{
 122        might_sleep();
 123
 124        /* GPIO can never have been requested */
 125        WARN_ON(1);
 126}
 127
 128static inline void devm_gpio_free(struct device *dev, unsigned gpio)
 129{
 130        might_sleep();
 131
 132        /* GPIO can never have been requested */
 133        WARN_ON(1);
 134}
 135
 136static inline void gpio_free_array(const struct gpio *array, size_t num)
 137{
 138        might_sleep();
 139
 140        /* GPIO can never have been requested */
 141        WARN_ON(1);
 142}
 143
 144static inline int gpio_direction_input(unsigned gpio)
 145{
 146        return -ENOSYS;
 147}
 148
 149static inline int gpio_direction_output(unsigned gpio, int value)
 150{
 151        return -ENOSYS;
 152}
 153
 154static inline int gpio_set_debounce(unsigned gpio, unsigned debounce)
 155{
 156        return -ENOSYS;
 157}
 158
 159static inline int gpio_get_value(unsigned gpio)
 160{
 161        /* GPIO can never have been requested or set as {in,out}put */
 162        WARN_ON(1);
 163        return 0;
 164}
 165
 166static inline void gpio_set_value(unsigned gpio, int value)
 167{
 168        /* GPIO can never have been requested or set as output */
 169        WARN_ON(1);
 170}
 171
 172static inline int gpio_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 int gpio_get_value_cansleep(unsigned gpio)
 180{
 181        /* GPIO can never have been requested or set as {in,out}put */
 182        WARN_ON(1);
 183        return 0;
 184}
 185
 186static inline void gpio_set_value_cansleep(unsigned gpio, int value)
 187{
 188        /* GPIO can never have been requested or set as output */
 189        WARN_ON(1);
 190}
 191
 192static inline int gpio_export(unsigned gpio, bool direction_may_change)
 193{
 194        /* GPIO can never have been requested or set as {in,out}put */
 195        WARN_ON(1);
 196        return -EINVAL;
 197}
 198
 199static inline int gpio_export_link(struct device *dev, const char *name,
 200                                unsigned gpio)
 201{
 202        /* GPIO can never have been exported */
 203        WARN_ON(1);
 204        return -EINVAL;
 205}
 206
 207static inline int gpio_sysfs_set_active_low(unsigned gpio, int value)
 208{
 209        /* GPIO can never have been requested */
 210        WARN_ON(1);
 211        return -EINVAL;
 212}
 213
 214static inline void gpio_unexport(unsigned gpio)
 215{
 216        /* GPIO can never have been exported */
 217        WARN_ON(1);
 218}
 219
 220static inline int gpio_to_irq(unsigned gpio)
 221{
 222        /* GPIO can never have been requested or set as input */
 223        WARN_ON(1);
 224        return -EINVAL;
 225}
 226
 227static inline int irq_to_gpio(unsigned irq)
 228{
 229        /* irq can never have been returned from gpio_to_irq() */
 230        WARN_ON(1);
 231        return -EINVAL;
 232}
 233
 234#endif
 235
 236#endif /* __LINUX_GPIO_H */
 237
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.