1 #ifndef __LINUX_GPIO_H 2 #define __LINUX_GPIO_H 3 4 /* see Documentation/gpio.txt */ 5 6 #ifdef CONFIG_GENERIC_GPIO 7 #include <asm/gpio.h> 8 9 #else 10 11 #include <linux/kernel.h> 12 #include <linux/types.h> 13 #include <linux/errno.h> 14 15 struct device; 16 struct gpio; 17 struct gpio_chip; 18 19 /* 20 * Some platforms don't support the GPIO programming interface. 21 * 22 * In case some driver uses it anyway (it should normally have 23 * depended on GENERIC_GPIO), these routines help the compiler 24 * optimize out much GPIO-related code ... or trigger a runtime 25 * warning when something is wrongly called. 26 */ 27 28 static inline int gpio_is_valid(int number) 29 { 30 return 0; 31 } 32 33 static inline int gpio_request(unsigned gpio, const char *label) 34 { 35 return -ENOSYS; 36 } 37 38 static inline int gpio_request_one(unsigned gpio, 39 unsigned long flags, const char *label) 40 { 41 return -ENOSYS; 42 } 43 44 static inline int gpio_request_array(struct gpio *array, size_t num) 45 { 46 return -ENOSYS; 47 } 48 49 static inline void gpio_free(unsigned gpio) 50 { 51 might_sleep(); 52 53 /* GPIO can never have been requested */ 54 WARN_ON(1); 55 } 56 57 static inline void gpio_free_array(struct gpio *array, size_t num) 58 { 59 might_sleep(); 60 61 /* GPIO can never have been requested */ 62 WARN_ON(1); 63 } 64 65 static inline int gpio_direction_input(unsigned gpio) 66 { 67 return -ENOSYS; 68 } 69 70 static inline int gpio_direction_output(unsigned gpio, int value) 71 { 72 return -ENOSYS; 73 } 74 75 static inline int gpio_set_debounce(unsigned gpio, unsigned debounce) 76 { 77 return -ENOSYS; 78 } 79 80 static inline int gpio_get_value(unsigned gpio) 81 { 82 /* GPIO can never have been requested or set as {in,out}put */ 83 WARN_ON(1); 84 return 0; 85 } 86 87 static inline void gpio_set_value(unsigned gpio, int value) 88 { 89 /* GPIO can never have been requested or set as output */ 90 WARN_ON(1); 91 } 92 93 static inline int gpio_cansleep(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 int gpio_get_value_cansleep(unsigned gpio) 101 { 102 /* GPIO can never have been requested or set as {in,out}put */ 103 WARN_ON(1); 104 return 0; 105 } 106 107 static inline void gpio_set_value_cansleep(unsigned gpio, int value) 108 { 109 /* GPIO can never have been requested or set as output */ 110 WARN_ON(1); 111 } 112 113 static inline int gpio_export(unsigned gpio, bool direction_may_change) 114 { 115 /* GPIO can never have been requested or set as {in,out}put */ 116 WARN_ON(1); 117 return -EINVAL; 118 } 119 120 static inline int gpio_export_link(struct device *dev, const char *name, 121 unsigned gpio) 122 { 123 /* GPIO can never have been exported */ 124 WARN_ON(1); 125 return -EINVAL; 126 } 127 128 static inline int gpio_sysfs_set_active_low(unsigned gpio, int value) 129 { 130 /* GPIO can never have been requested */ 131 WARN_ON(1); 132 return -EINVAL; 133 } 134 135 static inline void gpio_unexport(unsigned gpio) 136 { 137 /* GPIO can never have been exported */ 138 WARN_ON(1); 139 } 140 141 static inline int gpio_to_irq(unsigned gpio) 142 { 143 /* GPIO can never have been requested or set as input */ 144 WARN_ON(1); 145 return -EINVAL; 146 } 147 148 static inline int irq_to_gpio(unsigned irq) 149 { 150 /* irq can never have been returned from gpio_to_irq() */ 151 WARN_ON(1); 152 return -EINVAL; 153 } 154 155 #endif 156 157 #endif /* __LINUX_GPIO_H */ 158