#ifndef __LINUX_GPIO_H #define __LINUX_GPIO_H #include #include #define GPIO_IOCTL_BASE 'G' struct gpio_value { __u8 num; /* gpio number */ __u8 val; /* it value */ }; struct gpio_direction { __u8 num; /* gpio number */ __u8 dir; /* 0:input 1:output */ __u8 val; /* initial value for output only */ }; struct gpio_interrupt { __u32 mask; /* interrupt mask */ __u8 enable; /* enable or disable interrupt */ }; union gpio_info { struct gpio_value gpioval; struct gpio_direction gpiodir; struct gpio_interrupt gpioit; }; #define GPIOIOC_GETVALUE _IOR(GPIO_IOCTL_BASE, 0, struct gpio_value) #define GPIOIOC_SETVALUE _IOWR(GPIO_IOCTL_BASE, 1, struct gpio_value) #define GPIOIOC_SETDIRECTION _IOWR(GPIO_IOCTL_BASE, 2, struct gpio_direction) #define GPIOIOC_SETIT _IOWR (GPIO_IOCTL_BASE, 3, struct gpio_interrupt) /* see Documentation/gpio.txt */ #ifdef __KERNEL__ #ifdef CONFIG_GENERIC_GPIO #include #else /* * Some platforms don't support the GPIO programming interface. * * In case some driver uses it anyway (it should normally have * depended on GENERIC_GPIO), these routines help the compiler * optimize out much GPIO-related code ... or trigger a runtime * warning when something is wrongly called. */ static inline int gpio_is_valid(int number) { return 0; } static inline int gpio_request(unsigned gpio, const char *label) { return -ENOSYS; } static inline void gpio_free(unsigned gpio) { /* GPIO can never have been requested */ WARN_ON(1); } static inline int gpio_direction_input(unsigned gpio) { return -ENOSYS; } static inline int gpio_direction_output(unsigned gpio, int value) { return -ENOSYS; } static inline int gpio_get_value(unsigned gpio) { /* GPIO can never have been requested or set as {in,out}put */ WARN_ON(1); return 0; } static inline void gpio_set_value(unsigned gpio, int value) { /* GPIO can never have been requested or set as output */ WARN_ON(1); } static inline int gpio_cansleep(unsigned gpio) { /* GPIO can never have been requested or set as {in,out}put */ WARN_ON(1); return 0; } static inline int gpio_get_value_cansleep(unsigned gpio) { /* GPIO can never have been requested or set as {in,out}put */ WARN_ON(1); return 0; } static inline void gpio_set_value_cansleep(unsigned gpio, int value) { /* GPIO can never have been requested or set as output */ WARN_ON(1); } static inline int gpio_to_irq(unsigned gpio) { /* GPIO can never have been requested or set as input */ WARN_ON(1); return -EINVAL; } static inline int irq_to_gpio(unsigned irq) { /* irq can never have been returned from gpio_to_irq() */ WARN_ON(1); return -EINVAL; } #endif #endif /* __KERNEL__ */ #endif /* __LINUX_GPIO_H */