\" $NetBSD: gpioctl.8,v 1.24 2019/10/20 17:45:08 wiz Exp $
\"
\" Copyright (c) 2009, 2010, 2011, 2013 Marc Balmer <
[email protected]>
\" Copyright (c) 2004 Alexander Yurchenko <
[email protected]>
\"
\" Permission to use, copy, modify, and distribute this software for any
\" purpose with or without fee is hereby granted, provided that the above
\" copyright notice and this permission notice appear in all copies.
\"
\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
\"
Dd October 20, 2019
Dt GPIOCTL 8
Os
Sh NAME
Nm gpioctl
Nd control GPIO devices
Sh SYNOPSIS
Nm gpioctl
Op Fl qs
Ar device
Nm gpioctl
Op Fl q
Ar device
Cm attach
Ar device
Ar offset
Ar mask
Op Ar flag
Nm gpioctl
Op Fl qs
Ar device
Ar pin
Op Ar 0 | 1 | 2
Nm gpioctl
Op Fl qs
Ar device
Ar pin
Op Ar on | off | toggle
Nm gpioctl
Op Fl q
Ar device
Ar pin
Cm set
Op Ar flags
Op Ar name
Nm gpioctl
Op Fl q
Ar device
Ar pin
Cm unset
Nm gpioctl
Op Fl q
Ar device
Ar list
Sh DESCRIPTION
The
Nm
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.
Pp
Each GPIO device has an associated device file in the
Pa /dev
directory.
Ar device
can be specified with or without the
Pa /dev
prefix.
For example,
Pa /dev/gpio0
or
Pa gpio0 .
Pp
GPIO pins can be either
Dq read
or
Dq written
with the values of logical 0 or 1.
If only a
Ar 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
Ar pin
number.
Values can be either 0 or 1.
A value of 2
Dq toggles
the pin, i.e. changes its state to the opposite.
Instead of the numerical values, the word
Ar on ,
Ar off ,
or
Ar toggle
can be used.
Pp
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
Xr gpio 4
device using the
Nm
command.
Such drivers can be detached at runtime using the
Xr drvctl 8
command.
Pp
The following configuration
Ar flags
are supported by the GPIO framework:
Pp
Bl -tag -width Ds -offset indent -compact
It in
input direction
It out
output direction
It inout
bi-directional
It od
open-drain output
It pp
push-pull output
It tri
tri-state (output disabled)
It pu
internal pull-up enabled
It pd
internal pull-down enabled
It iin
invert input
It iout
invert output
It pulsate
pulsate output at a hardware-defined frequency and duty cycle
It alt0 - alt7
select alternate pin function 0 to 7
El
Pp
Note that not all the flags may be supported by the particular GPIO controller.
Pp
When executed with only the
Xr gpio 4
device name as argument,
Nm
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.
Pp
The options are as follows:
Bl -tag -width Ds
It Fl q
Operate quietly i.e. nothing is printed to stdout.
It Fl 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
Nm
is used in shell scripts to query the state of a pin.
El
Sh FILES
Bl -tag -width "/dev/gpiou" -compact
It /dev/gpio Ns Ar u
GPIO device unit
Ar u
file.
El
Sh EXAMPLES
Configure pin 20 to have push-pull output:
Pp
Dl # gpioctl gpio0 20 set out pp
Pp
Write logical 1 to pin 20:
Pp
Dl # gpioctl gpio0 20 1
Pp
Attach a
Xr onewire 4
bus on a
Xr gpioow 4
device on pin 4:
Pp
Dl # gpioctl gpio0 attach gpioow 4 0x01
Pp
Detach the gpioow0 device:
Pp
Dl # drvctl -d gpioow0
Pp
Configure pin 5 as output and name it error_led:
Pp
Dl # gpioctl gpio0 5 set out error_led
Pp
Toggle the error_led:
Pp
Dl # gpioctl gpio0 error_led 2
Pp
Enumerate all pins and display their symbolic names:
Pp
Dl # gpioctl gpio0 list
Sh SEE ALSO
Xr gpio 4 ,
Xr drvctl 8
Sh HISTORY
The
Nm
command first appeared in
Ox 3.6
and
Nx 4.0 .
Sh AUTHORS
An -nosplit
The
Nm
program was written by
An Alexander Yurchenko Aq Mt
[email protected] .
Device attachment was added by
An Marc Balmer Aq Mt
[email protected] .