1 #ifndef __LINUX_GPIO_H 2 #define __LINUX_GPIO_H 3 4 /* see Documentation/gpio.txt */ 5 6 /* make these flag values available regardless of GPIO kconfig options */ 7 #define GPIOF_DIR_OUT (0 << 0) 8 #define GPIOF_DIR_IN (1 << 0) 9 10 #define GPIOF_INIT_LOW (0 << 1) 11 #define GPIOF_INIT_HIGH (1 << 1) 12 13 #define GPIOF_IN (GPIOF_DIR_IN) 14 #define GPIOF_OUT_INIT_LOW (GPIOF_DIR_OUT | GPIOF_INIT_LOW) 15 #define GPIOF_OUT_INIT_HIGH (GPIOF_DIR_OUT | GPIOF_INIT_HIGH) 16 17 /** 18 * struct gpio - a structure describing a GPIO with configuration 19 * @gpio: the GPIO number 20 * @flags: GPIO configuration as specified by GPIOF_* 21 * @label: a literal description string of this GPIO 22 */ 23 struct gpio { 24 unsigned gpio; 25 unsigned long flags; 26 const char *label; 27 }; 28 29 #ifdef CONFIG_GENERIC_GPIO 30 #include <asm/gpio.h> 31 32 #else 33 34 #include <linux/kernel.h> 35 #include <linux/types.h> 36 #include <linux/errno.h> 37 38 struct device; 39 struct gpio_chip; 40 41 static inline bool gpio_is_valid(int number) 42 { 43 return false; 44 } 45 46 static inline int gpio_request(unsigned gpio, const char *label) 47 { 48 return -ENOSYS; 49 } 50 51 static inline int gpio_request_one(unsigned gpio, 52 unsigned long flags, const char *label) 53 { 54 return -ENOSYS; 55 } 56 57 static inline int gpio_request_array(const struct gpio *array, size_t num) 58 { 59 return -ENOSYS; 60 } 61 62 static inline void gpio_free(unsigned gpio) 63 { 64 might_sleep(); 65 66 /* GPIO can never have been requested */ 67 WARN_ON(1); 68 } 69 70 static inline void gpio_free_array(const struct gpio *array, size_t num) 71 { 72 might_sleep(); 73 74 /* GPIO can never have been requested */ 75 WARN_ON(1); 76 } 77 78 static inline int gpio_direction_input(unsigned gpio) 79 { 80 return -ENOSYS; 81 } 82 83 static inline int gpio_direction_output(unsigned gpio, int value) 84 { 85 return -ENOSYS; 86 } 87 88 static inline int gpio_set_debounce(unsigned gpio, unsigned debounce) 89 { 90 return -ENOSYS; 91 } 92 93 static inline int gpio_get_value(unsigned gpio) 94 { 95 /* GPIO can never have been requested or set as {in,out}put */ 96 WARN_ON(1); 97 return 0; 98 } 99 100 static inline void gpio_set_value(unsigned gpio, int value) 101 { 102 /* GPIO can never have been requested or set as output */ 103 WARN_ON(1); 104 } 105 106 static inline int gpio_cansleep(unsigned gpio) 107 { 108 /* GPIO can never have been requested or set as {in,out}put */ 109 WARN_ON(1); 110 return 0; 111 } 112 113 static inline int gpio_get_value_cansleep(unsigned gpio) 114 { 115 /* GPIO can never have been requested or set as {in,out}put */ 116 WARN_ON(1); 117 return 0; 118 } 119 120 static inline void gpio_set_value_cansleep(unsigned gpio, int value) 121 { 122 /* GPIO can never have been requested or set as output */ 123 WARN_ON(1); 124 } 125 126 static inline int gpio_export(unsigned gpio, bool direction_may_change) 127 { 128 /* GPIO can never have been requested or set as {in,out}put */ 129 WARN_ON(1); 130 return -EINVAL; 131 } 132 133 static inline int gpio_export_link(struct device *dev, const char *name, 134 unsigned gpio) 135 { 136 /* GPIO can never have been exported */ 137 WARN_ON(1); 138 return -EINVAL; 139 } 140 141 static inline int gpio_sysfs_set_active_low(unsigned gpio, int value) 142 { 143 /* GPIO can never have been requested */ 144 WARN_ON(1); 145 return -EINVAL; 146 } 147 148 static inline void gpio_unexport(unsigned gpio) 149 { 150 /* GPIO can never have been exported */ 151 WARN_ON(1); 152 } 153 154 static inline int gpio_to_irq(unsigned gpio) 155 { 156 /* GPIO can never have been requested or set as input */ 157 WARN_ON(1); 158 return -EINVAL; 159 } 160 161 static inline int irq_to_gpio(unsigned irq) 162 { 163 /* irq can never have been returned from gpio_to_irq() */ 164 WARN_ON(1); 165 return -EINVAL; 166 } 167 168 #endif 169 170 #endif /* __LINUX_GPIO_H */ 171