NAME
gpioctl
—
control GPIO devices
SYNOPSIS
gpioctl |
[-q ] device
pin [0 |
1 | 2 |
on | off |
toggle] |
gpioctl |
[-q ] device
pin set [flags]
[name] |
gpioctl |
[-q ] device
pin unset |
gpioctl |
[-q ] device attach
device offset
mask [flag] |
gpioctl |
[-q ] device detach
device |
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. Values can be either 0 or 1. A value of 2 has a special meaning: it “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.
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.
The following configuration flags are supported by the GPIO framework. Note that not all the flags can be supported by the particular GPIO controller.
- 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
When attaching an I2C device, if the flag argument is set to 0x01, the order of the SDA and SCL signals is reversed (see gpioiic(4)).
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:
# gpioctl gpio0 detach
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
HISTORY
The gpioctl
command first appeared in
OpenBSD 3.6.
AUTHORS
The gpioctl
program was written by
Alexander Yurchenko
⟨grange@openbsd.org⟩. Device attachment was added by
Marc Balmer ⟨mbalmer@openbsd.org⟩.