NAME
gpioctl —
control GPIO devices
SYNOPSIS
gpioctl |
[-q]
device attach
device offset
mask
[flag] |
gpioctl |
[-qs]
device pin
[0 | 1 |
2] |
gpioctl |
[-qs]
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. Values 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.
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.
-
-
- -s
- Only output a single number on stdout, representing either
the state of the pin or the number of available pins if no pin number was
passed as argument. This option is useful e.g. when
gpioctl is used in shell scripts to query the state of a
pin.
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>.