230 lines
4.9 KiB
Groff
230 lines
4.9 KiB
Groff
.\" $NetBSD: gpioctl.8,v 1.24 2019/10/20 17:45:08 wiz Exp $
|
|
.\"
|
|
.\" Copyright (c) 2009, 2010, 2011, 2013 Marc Balmer <marc@msys.ch>
|
|
.\" Copyright (c) 2004 Alexander Yurchenko <grange@openbsd.org>
|
|
.\"
|
|
.\" 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 grange@openbsd.org .
|
|
Device attachment was added by
|
|
.An Marc Balmer Aq Mt marc@msys.ch .
|