gpio(4) - NetBSD Manual Pages

Command: Section: Arch: Collection:  
GPIO(4)                 NetBSD Kernel Interfaces Manual                GPIO(4)

gpio -- General Purpose Input/Output
gpio* at elansc? gpio* at gcscpcib? gpio* at gscpcib? gpio* at nsclpcsio? gpio* at ppbus? #include <sys/types.h> #include <sys/gpio.h> #include <sys/ioctl.h>
The gpio device attaches to the GPIO controller and provides a uniform programming interface to its pins. Each GPIO controller with an attached gpio device has an associated device file under the /dev directory, e.g. /dev/gpio0. Access from user- land is performed through ioctl(2) calls on these devices.
The following structures and constants are defined in the <sys/gpio.h> header file: GPIOINFO (struct gpio_info) Returns information about the GPIO controller in the gpio_info structure: struct gpio_info { int gpio_npins; /* total number of pins available */ }; GPIOPINREAD (struct gpio_pin_op) Returns the input pin value in the gpio_pin_op structure: struct gpio_pin_op { int gp_pin; /* pin number */ int gp_value; /* value */ }; The gp_pin field must be set before calling. GPIOPINWRITE (struct gpio_pin_op) Writes the output value to the pin. The value set in the gp_value field must be either GPIO_PIN_LOW (logical 0) or GPIO_PIN_HIGH (logical 1). On return, the gp_value field contains the old pin state. GPIOPINTOGGLE (struct gpio_pin_op) Toggles the pin output value, i.e. changes it to the opposite. gp_value field is ignored and on return contains the old pin state. GPIOPINCTL (struct gpio_pin_ctl) Changes pin configuration flags with the new ones provided in the gpio_pin_ctl structure: struct gpio_pin_ctl { int gp_pin; /* pin number */ int gp_caps; /* pin capabilities (read-only) */ int gp_flags; /* pin configuration flags */ }; The gp_flags field is a combination of the following flags: GPIO_PIN_INPUT input direction GPIO_PIN_OUTPUT output direction GPIO_PIN_INOUT bi-directional GPIO_PIN_OPENDRAIN open-drain output GPIO_PIN_PUSHPULL push-pull output GPIO_PIN_TRISTATE output disabled GPIO_PIN_PULLUP internal pull-up enabled GPIO_PIN_PULLDOWN internal pull-down enabled GPIO_PIN_INVIN invert input GPIO_PIN_INVOUT invert output Note that the GPIO controller may not support all of these flags. On return the gp_caps field contains flags that are supported. If no flags are specified, the pin configuration stays unchanged.
/dev/gpiou GPIO device unit u file.
ioctl(2), gpioctl(8)
The gpio device first appeared in OpenBSD 3.6 and NetBSD 4.0.
The gpio driver was written by Alexander Yurchenko <>. gpio and was ported to NetBSD by Jared D. McNeill <>.
Event capabilities are not supported. NetBSD 5.0 January 9, 2008 NetBSD 5.0
Powered by man-cgi (2020-09-24). Maintained for NetBSD by Kimmo Suominen. Based on man-cgi by Panagiotis Christias.