GPIOCTL(8) BSD System Manager's Manual GPIOCTL(8)NAME
gpioctl -- control GPIO devices
SYNOPSIS
gpioctl [-q] device attach device offset mask [flag]
gpioctl [-q] device pin [0 | 1 | 2]
gpioctl [-q] device pin [on | off | toggle]
gpioctl [-q] device pin set [flags] [name]
gpioctl [-q] device pin unset
DESCRIPTION
The gpioctl program allows manipulation of GPIO (General Purpose Input/Output) device pins. Such devices can be either part of the chipset
or embedded CPU, or a separate chip. The usual way of using GPIO is to connect some simple devices such as LEDs and 1-wire thermal sensors
to its pins.
Each GPIO device has an associated device file in the /dev directory. device can be specified with or without the /dev prefix. For example,
/dev/gpio0 or gpio0.
GPIO pins can be either ``read'' or ``written'' with the values of logical 0 or 1. If only a pin number is specified on the command line,
the pin state will be read from the GPIO controller and displayed. To write to a pin, a value must be specified after the pin number. Val-
ues can be either 0 or 1. A value of 2 ``toggles'' the pin, i.e. changes its state to the opposite. Instead of the numerical values, the
word on, off, or toggle can be used.
To
Only pins that have been configured at securelevel 0, typically during system startup, are accessible once the securelevel has been raised.
Pins can be given symbolic names for easier use. Besides using individual pins, device drivers that use GPIO pins can be attached to a
gpio(4) device using the gpioctl command. Such drivers can be detached at runtime using the drvctl(8) command.
The following configuration flags are supported by the GPIO framework:
in input direction
out output direction
inout bi-directional
od open-drain output
pp push-pull output
tri tri-state (output disabled)
pu internal pull-up enabled
pd internal pull-down enabled
iin invert input
iout invert output
pulsate
pulsate output at a hardware-defined frequency and duty cycle
Note that not all the flags may be supported by the particular GPIO controller.
When executed with only the gpio(4) device name as argument, gpioctl reads information about the GPIO device and displays it. At securelevel
0 the number of physically available pins is displayed, at higher securelevels the number of configured (set) pins is displayed.
The options are as follows:
-q Operate quietly i.e. nothing is printed to stdout.
FILES
/dev/gpiou GPIO device unit u file.
EXAMPLES
Configure pin 20 to have push-pull output:
# gpioctl gpio0 20 set out pp
Write logical 1 to pin 20:
# gpioctl gpio0 20 1
Attach a onewire(4) bus on a gpioow(4) device on pin 4:
# gpioctl gpio0 attach gpioow 4 0x01
Detach the gpioow0 device:
# drvctl -d gpioow0
Configure pin 5 as output and name it error_led:
# gpioctl gpio0 5 set out error_led
Toggle the error_led:
# gpioctl gpio0 error_led 2
SEE ALSO gpio(4), drvctl(8)HISTORY
The gpioctl command first appeared in OpenBSD 3.6 and NetBSD 4.0.
AUTHORS
The gpioctl program was written by Alexander Yurchenko <grange@openbsd.org>. Device attachment was added by Marc Balmer <marc@msys.ch>.
BSD November 13, 2011 BSD
Check Out this Related Man Page
GPIO(3) BSD Library Functions Manual GPIO(3)NAME
gpio_open, gpio_close -- library to handle GPIO pins
LIBRARY
library ``libgpio''
SYNOPSIS
#include <libgpio.h>
gpio_handle_t
gpio_open(unsigned int unit);
gpio_handle_t
gpio_open_device(const char *device);
void
gpio_close(gpio_handle_t handle);
int
gpio_pin_list(gpio_handle_t handle, gpio_config_t **pcfgs);
int
gpio_pin_config(gpio_handle_t handle, gpio_config *cfg);
int
gpio_pin_set_flags(gpio_handle_t handle, gpio_config_t *cfg);
gpio_value_t
gpio_pin_get(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_set(gpio_handle_t handle, gpio_pin_t pin, gpio_value_t value);
int
gpio_pin_toggle(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_low(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_high(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_input(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_output(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_opendrain(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_pushpull(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_tristate(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_pullup(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_pulldown(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_invin(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_invout(gpio_handle_t handle, gpio_pin_t pin);
int
gpio_pin_pulsate(gpio_handle_t handle, gpio_pin_t pin);
DESCRIPTION
The libgpio library provides an interface to configure GPIO pins. The library operates with a gpio_handle_t opaque type which can be created
with gpio_open() or gpio_open_device(). When no more GPIO operations are needed, this handle can be destroyed with gpio_close().
To get a list of all available pins, one can call gpio_pin_list(). This function takes a pointer to a gpio_config_t which is dynamically
allocated. This pointer should be freed with free(3) when it's no longer necessary.
The function gpio_pin_config() retrieves the current configuration of a pin. The pin number should be passed in via the g_pin variable which
is part of the gpio_config_t structure.
The function gpio_pin_set_flags() configures a pin with the flags passed in by the gpio_config_t structure. The pin number should also be
passed in through the g_pin variable. All other structure members will be ignored by this function. The list of flags can be found in
/usr/include/sys/gpio.h.
The get or set the state of a GPIO pin, the functions gpio_pin_get() and gpio_pin_set() are available, respectively. To toggle the state,
use gpio_pin_toggle().
The functions gpio_pin_low() and gpio_pin_high() are wrappers around gpio_pin_set().
The functions gpio_pin_input(), gpio_pin_output(), gpio_pin_opendrain(), gpio_pin_pushpull(), gpio_pin_tristate(), gpio_pin_pullup(),
gpio_pin_pulldown(), gpio_pin_invin(), gpio_pin_invout() and gpio_pin_pulsate() are wrappers around gpio_pin_set_flags().
EXAMPLES
The following example shows how to configure pin 16 as output and then drive it high:
#include <err.h>
#include <libgpio.h>
gpio_handle_t handle;
handle = gpio_open(0);
if (handle == GPIO_HANDLE_INVALID)
err(1, "gpio_open failed");
gpio_pin_output(handle, 16);
gpio_pin_high(handle, 16);
gpio_close(handle);
The following example shows how to get a configuration of a pin:
gpio_config_t cfg;
cfg.g_pin = 32;
gpio_pin_config(handle, &cfg);
The structure will contain the name of the pin and its flags.
SEE ALSO gpiobus(4), gpioctl(8)HISTORY
The libgpio library first appeared in FreeBSD 11.0.
AUTHORS
The libgpio library was implemented by Rui Paulo <rpaulo@FreeBSD.org>.
BSD November 17, 2014 BSD