diff options
Diffstat (limited to 'target/linux/generic-2.6/files/include')
| -rw-r--r-- | target/linux/generic-2.6/files/include/linux/gpio_dev.h | 35 | 
1 files changed, 33 insertions, 2 deletions
| diff --git a/target/linux/generic-2.6/files/include/linux/gpio_dev.h b/target/linux/generic-2.6/files/include/linux/gpio_dev.h index 3f3c9c772..a2a4b51c7 100644 --- a/target/linux/generic-2.6/files/include/linux/gpio_dev.h +++ b/target/linux/generic-2.6/files/include/linux/gpio_dev.h @@ -1,11 +1,42 @@ -#ifndef _GPIODEV_H__ -#define _GPIODEV_H__ +#ifndef _GPIO_DEV_H__ +#define _GPIO_DEV_H__ + +/********************************************************************* + * + * This Linux kernel header is expanded from the original driver + * (gpio_dev) by John Crispin. It provides an ioctl based interface to + * GPIO pins via the /dev/gpio char device and gpiolib within the kernel. + * The third argument to each ioctl is the GPIO pin number. + * + * This driver has been tested with lk 2.6.31 and works. The original + * driver fails quietly with this version. The protocol is now a bit + * different: the ioctl(fd, GPIO_REQUEST, <pin>) should be called + * after the open("/dev/gpio", O_RDWR) to determine if the <pin> is + * already in use. If the ioctl is successful (i.e. returns 0 for not + * in use) then the <pin> is claimed by this driver and + * ioctl(fd, GPIO_FREE, <pin>) should be called prior to close(fd) . + *  + * See <kernel_source>/Documentation/gpio.txt + * Note that kernel designers prefer the use of the sysfs gpio interface. + * This char driver is easier to use from code and faster. + ********************************************************************/ + +/* This header can be included in both the user and kernel spaces */ +/* The _IO macro is defined in sys/ioctl.h */  #define IOC_GPIODEV_MAGIC  'B' +  #define GPIO_GET        _IO(IOC_GPIODEV_MAGIC, 10)  #define GPIO_SET        _IO(IOC_GPIODEV_MAGIC, 11)  #define GPIO_CLEAR      _IO(IOC_GPIODEV_MAGIC, 12)  #define GPIO_DIR_IN     _IO(IOC_GPIODEV_MAGIC, 13)  #define GPIO_DIR_OUT    _IO(IOC_GPIODEV_MAGIC, 14) +        /* Sets the direction out and clears the <pin> (low) */ + +#define GPIO_DIR_HIGH   _IO(IOC_GPIODEV_MAGIC, 15) +        /* Sets the direction out and sets the <pin> (high) */ +#define GPIO_REQUEST    _IO(IOC_GPIODEV_MAGIC, 16) +#define GPIO_FREE       _IO(IOC_GPIODEV_MAGIC, 17) +#define GPIO_CAN_SLEEP  _IO(IOC_GPIODEV_MAGIC, 18)  #endif | 
