Document recent gpio(4) changes and introduce a new config file for GPIO.
Integrate with the startup scripts in /etc/rc.d. Introduce new variable "gpio" for /etc/rc.conf.
This commit is contained in:
parent
32eeaba5d3
commit
70d654f756
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile,v 1.369 2009/07/21 00:48:29 mrg Exp $
|
||||
# $NetBSD: Makefile,v 1.370 2009/07/25 16:20:10 mbalmer Exp $
|
||||
# from: @(#)Makefile 8.7 (Berkeley) 5/25/95
|
||||
|
||||
# Environment variables without default values:
|
||||
@ -90,7 +90,7 @@ BINGRP= wheel
|
||||
UTMPGRP= utmp
|
||||
BIN1+= bootptab changelist csh.cshrc csh.login \
|
||||
csh.logout daily daily.conf dm.conf envsys.conf floppytab ftpchroot \
|
||||
ftpusers gettytab group hosts hosts.lpd inetd.conf \
|
||||
ftpusers gettytab gpio.conf group hosts hosts.lpd inetd.conf \
|
||||
locate.conf login.conf mailer.conf man.conf monthly monthly.conf \
|
||||
mrouted.conf named.conf netconfig networks newsyslog.conf \
|
||||
nsswitch.conf ntp.conf passwd.conf phones printcap profile protocols \
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: rc.conf,v 1.103 2009/04/28 23:30:34 roy Exp $
|
||||
# $NetBSD: rc.conf,v 1.104 2009/07/25 16:20:10 mbalmer Exp $
|
||||
#
|
||||
# /etc/defaults/rc.conf --
|
||||
# default configuration of /etc/rc.conf
|
||||
@ -119,6 +119,7 @@ quota=YES # check and enable quotas
|
||||
ldconfig=YES # rebuild a.out ldconfig cache
|
||||
sysdb=YES # build system databases
|
||||
rndctl=NO rndctl_flags="" # configure rndctl(8)
|
||||
gpio=NO # configure GPIO devices
|
||||
|
||||
# cope with other OSes using the real time clock at localtime on this
|
||||
# machine (by adjusting kern.rtc_offset at boot)
|
||||
|
11
etc/gpio.conf
Normal file
11
etc/gpio.conf
Normal file
@ -0,0 +1,11 @@
|
||||
# $NetBSD: gpio.conf,v 1.1 2009/07/25 16:20:10 mbalmer Exp $
|
||||
#
|
||||
# GPIO device and pin configuration
|
||||
# The syntax is exactly like the gpioctl(8) command, but without the
|
||||
# gpioctl word.
|
||||
#
|
||||
# E.g. define pin 6 of /dev/gpio0 as output and name it error_led:
|
||||
# /dev/gpio0 6 set out error_led
|
||||
|
||||
# Empty lines and lines starting with # are ignored.
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: special,v 1.128 2009/04/21 16:08:57 joerg Exp $
|
||||
# $NetBSD: special,v 1.129 2009/07/25 16:20:10 mbalmer Exp $
|
||||
# @(#)special 8.2 (Berkeley) 1/23/94
|
||||
#
|
||||
# This file may be overwritten on upgrades.
|
||||
@ -75,6 +75,7 @@
|
||||
./etc/ftpwelcome type=file mode=0644 optional
|
||||
./etc/gateways type=file mode=0644 optional
|
||||
./etc/gettytab type=file mode=0644
|
||||
./etc/gpio.conf type=file mode=644
|
||||
./etc/group type=file mode=0644
|
||||
./etc/hesiod.conf type=file mode=0644 optional
|
||||
./etc/hosts type=file mode=0644
|
||||
@ -206,6 +207,7 @@
|
||||
./etc/rc.d/fsck_root type=file mode=0555
|
||||
./etc/rc.d/ftp_proxy type=file mode=0555
|
||||
./etc/rc.d/ftpd type=file mode=0555
|
||||
./etc/rc.d/gpio type=file mode=0555
|
||||
./etc/rc.d/hostapd type=file mode=0555
|
||||
./etc/rc.d/httpd type=file mode=0555
|
||||
./etc/rc.d/identd type=file mode=0555
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile,v 1.78 2009/04/28 23:30:34 roy Exp $
|
||||
# $NetBSD: Makefile,v 1.79 2009/07/25 16:20:10 mbalmer Exp $
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
@ -20,6 +20,7 @@ CONFIGFILES=\
|
||||
ccd cgd cleartmp cron \
|
||||
dhclient dhcpcd dhcpd dhcrelay dmesg downinterfaces envsys \
|
||||
fsck fsck_root ftp_proxy ftpd \
|
||||
gpio \
|
||||
hostapd httpd \
|
||||
identd ifwatchd inetd ipfilter ipfs ipmon ipnat ipsec \
|
||||
irdaattach iscsi_target isdnd \
|
||||
|
30
etc/rc.d/gpio
Executable file
30
etc/rc.d/gpio
Executable file
@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $NetBSD: gpio,v 1.1 2009/07/25 16:20:10 mbalmer Exp $
|
||||
#
|
||||
|
||||
# PROVIDE: gpio
|
||||
# BEFORE: securelevel
|
||||
|
||||
$_rc_subr_loaded . /etc/rc.subr
|
||||
|
||||
name="gpio"
|
||||
rcvar=$name
|
||||
start_cmd="gpio_start"
|
||||
stop_cmd=":"
|
||||
|
||||
gpio_start()
|
||||
{
|
||||
if [ -f /etc/gpio.conf ]; then
|
||||
echo "Configuring GPIO."
|
||||
cat /etc/gpio.conf |
|
||||
while read -r args; do
|
||||
args=${args%%#*} # strip comments
|
||||
test -z "$args" && continue
|
||||
/usr/sbin/gpioctl -q $args
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
load_rc_config $name
|
||||
run_rc_command "$1"
|
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: gpio.4,v 1.8 2009/02/27 03:13:55 kenh Exp $
|
||||
.\" $NetBSD: gpio.4,v 1.9 2009/07/25 16:20:11 mbalmer Exp $
|
||||
.\" $OpenBSD: gpio.4,v 1.5 2004/11/23 09:39:29 reyk Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2004 Alexander Yurchenko <grange@openbsd.org>
|
||||
@ -15,7 +15,7 @@
|
||||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
.\"
|
||||
.Dd January 9, 2008
|
||||
.Dd July 19, 2009
|
||||
.Dt GPIO 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -50,6 +50,14 @@ directory, e.g.\&
|
||||
Access from userland is performed through
|
||||
.Xr ioctl 2
|
||||
calls on these devices.
|
||||
.Pp
|
||||
The layout of the GPIO device is defined at a securelevel < 1, i.e. typically
|
||||
during system boot, and cannot be changed later.
|
||||
GPIO pins can be configured and given a symbolic name and device drivers
|
||||
that use GPIO pins can be attached to the
|
||||
.Nm
|
||||
device at a securelevel < 1.
|
||||
All other pins will not be accessible once the runlevel has been raised.
|
||||
.Sh IOCTL INTERFACE
|
||||
The following structures and constants are defined in the
|
||||
.Aq Pa sys/gpio.h
|
||||
@ -68,22 +76,27 @@ struct gpio_info {
|
||||
};
|
||||
.Ed
|
||||
.Pp
|
||||
.It Dv GPIOPINREAD (struct gpio_pin_op)
|
||||
.It Dv GPIOREAD (struct gpio_req)
|
||||
Returns the input pin value in the
|
||||
.Fa gpio_pin_op
|
||||
structure:
|
||||
.Bd -literal
|
||||
struct gpio_pin_op {
|
||||
int gp_pin; /* pin number */
|
||||
int gp_value; /* value */
|
||||
#define GPIOMAXNAME 64
|
||||
|
||||
struct gpio_req {
|
||||
char gp_name[GPIOMAXNAME]; /* pin name */
|
||||
int gp_pin; /* pin number */
|
||||
int gp_value; /* value */
|
||||
};
|
||||
.Ed
|
||||
.Pp
|
||||
The
|
||||
.Fa gp_name
|
||||
or
|
||||
.Fa gp_pin
|
||||
field must be set before calling.
|
||||
.Pp
|
||||
.It Dv GPIOPINWRITE (struct gpio_pin_op)
|
||||
.It Dv GPIOWRITE (struct gpio_req)
|
||||
Writes the output value to the pin.
|
||||
The value set in the
|
||||
.Fa gp_value
|
||||
@ -96,20 +109,24 @@ On return, the
|
||||
.Fa gp_value
|
||||
field contains the old pin state.
|
||||
.Pp
|
||||
.It Dv GPIOPINTOGGLE (struct gpio_pin_op)
|
||||
.It Dv GPIOTOGGLE (struct gpio_req)
|
||||
Toggles the pin output value, i.e. changes it to the opposite.
|
||||
.Fa gp_value
|
||||
field is ignored and on return contains the old pin state.
|
||||
.Pp
|
||||
.It Dv GPIOPINCTL (struct gpio_pin_ctl)
|
||||
.It Dv GPIOSET (struct gpio_set)
|
||||
Changes pin configuration flags with the new ones provided in the
|
||||
.Fa gpio_pin_ctl
|
||||
.Fa gpio_set
|
||||
structure:
|
||||
.Bd -literal
|
||||
struct gpio_pin_ctl {
|
||||
int gp_pin; /* pin number */
|
||||
int gp_caps; /* pin capabilities (read-only) */
|
||||
int gp_flags; /* pin configuration flags */
|
||||
#define GPIOMAXNAME 64
|
||||
|
||||
struct gpio_set {
|
||||
char gp_name[GPIOMAXNAME]; /* pin name */
|
||||
int gp_pin; /* pin number */
|
||||
int gp_caps; /* pin capabilities (ro) */
|
||||
int gp_flags; /* pin configuration flags */
|
||||
char gp_name2[GPIOMAXNAME]; /* new name */
|
||||
};
|
||||
.Ed
|
||||
.Pp
|
||||
@ -140,14 +157,42 @@ invert input
|
||||
invert output
|
||||
.El
|
||||
.Pp
|
||||
Note that the
|
||||
.Tn GPIO
|
||||
controller
|
||||
Note that the GPIO controller
|
||||
may not support all of these flags.
|
||||
On return the
|
||||
.Fa gp_caps
|
||||
field contains flags that are supported.
|
||||
If no flags are specified, the pin configuration stays unchanged.
|
||||
.Pp
|
||||
Only GPIO pins that have been set using
|
||||
.Ar GPIOSET
|
||||
will be accessible at securelevels greater than 0.
|
||||
.Pp
|
||||
.It Dv GPIOUNSET (struct gpio_set)
|
||||
Unset the specified pin, i.e. clear its name and make it unaccessible
|
||||
at securelevels greater than 0.
|
||||
.It Dv GPIOATTACH (struct gpio_attach)
|
||||
Attach the device described in the
|
||||
.Fa gpio_attach
|
||||
structure on this gpio device.
|
||||
.Bd -literal
|
||||
struct gpio_attach {
|
||||
char ga_dvname[16]; /* device name */
|
||||
int ga_offset; /* pin number */
|
||||
u_int32_t ga_mask; /* binary mask */
|
||||
};
|
||||
.Ed
|
||||
.It Dv GPIODETACH (struct gpio_attach)
|
||||
Detach a device from this gpio device that was previously attached using the
|
||||
.Dv GPIOATTACH
|
||||
.Xr ioctl 2 .
|
||||
The
|
||||
.Fa ga_offset
|
||||
and
|
||||
.Fa ga_mask
|
||||
fields of the
|
||||
.Fa gpio_attach
|
||||
structure are ignored.
|
||||
.El
|
||||
.Sh FILES
|
||||
.Bl -tag -width "/dev/gpiou" -compact
|
||||
@ -177,5 +222,7 @@ and was ported to
|
||||
.Nx
|
||||
by
|
||||
.An Jared D. McNeill Aq jmcneill@NetBSD.org .
|
||||
Runtime device attachment was added by
|
||||
.An Marc Balmer Aq marc@msys.ch .
|
||||
.Sh BUGS
|
||||
Event capabilities are not supported.
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: gpioow.4,v 1.2 2006/04/08 23:10:40 wiz Exp $
|
||||
.\" $NetBSD: gpioow.4,v 1.3 2009/07/25 16:20:11 mbalmer Exp $
|
||||
.\" $OpenBSD: gpioow.4,v 1.3 2006/03/06 10:24:46 grange Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2006 Alexander Yurchenko <grange@openbsd.org>
|
||||
@ -15,7 +15,7 @@
|
||||
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
.\"
|
||||
.Dd March 4, 2006
|
||||
.Dd July 19, 2009
|
||||
.Dt GPIOOW 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -23,6 +23,7 @@
|
||||
.Nd 1-Wire bus bit-banging through GPIO pin
|
||||
.Sh SYNOPSIS
|
||||
.Cd "gpioow* at gpio? offset 0 mask 0x1"
|
||||
.Cd "gpioow* at gpio?"
|
||||
.Cd "onewire* at gpioow?"
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
@ -37,6 +38,18 @@ locator.
|
||||
The
|
||||
.Ar mask
|
||||
locator should always be 0x1.
|
||||
The
|
||||
.Ar offset
|
||||
and
|
||||
.Ar mask
|
||||
can also be specified when
|
||||
.Nm
|
||||
is attached at runtime using the
|
||||
.Dv GPIOATTACH
|
||||
.Xr ioctl 2
|
||||
on the
|
||||
.Xr gpio 4
|
||||
device.
|
||||
.Sh SEE ALSO
|
||||
.Xr gpio 4 ,
|
||||
.Xr intro 4 ,
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile,v 1.61 2008/11/12 12:35:53 ad Exp $
|
||||
# $NetBSD: Makefile,v 1.62 2009/07/25 16:20:11 mbalmer Exp $
|
||||
# @(#)Makefile 8.1 (Berkeley) 6/5/93
|
||||
|
||||
# missing: dump.5 plot.5
|
||||
@ -6,7 +6,7 @@
|
||||
MAN= a.out.5 acct.5 ar.5 boot.cfg.5 \
|
||||
core.5 daily.conf.5 dir.5 disktab.5 elf.5 \
|
||||
ethers.5 forward.5 \
|
||||
fs.5 fstab.5 genassym.cf.5 group.5 hesiod.conf.5 \
|
||||
fs.5 fstab.5 genassym.cf.5 gpio.conf.5 group.5 hesiod.conf.5 \
|
||||
hosts.5 hosts.equiv.5 ifaliases.5 ifconfig.if.5 intro.5 \
|
||||
ipsec.conf.5 ld.so.conf.5 link.5 locale.alias.5 \
|
||||
locate.conf.5 login.conf.5 mixerctl.conf.5 mk.conf.5 monthly.conf.5 \
|
||||
|
69
share/man/man5/gpio.conf.5
Normal file
69
share/man/man5/gpio.conf.5
Normal file
@ -0,0 +1,69 @@
|
||||
.\" $NetBSD: gpio.conf.5,v 1.1 2009/07/25 16:20:11 mbalmer Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2009 Marc Balmer <marc@msys.ch>
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
.\" INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd July 16, 2009
|
||||
.Dt GPIO.CONF 5
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm gpio.conf
|
||||
.Nd GPIO config file
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
file is read by the
|
||||
.Pa gpio
|
||||
rc.d script during system start-up and shutdown,
|
||||
and is intended for configuring GPIO pins.
|
||||
.Ss FILE FORMAT
|
||||
Lines starting with a hash
|
||||
.Pq Sq #
|
||||
and empty lines are ignored.
|
||||
All other lines are passed to
|
||||
.Xr gpioctl 8 .
|
||||
.Sh FILES
|
||||
.Bl -tag -width XXetcXgpioXconfXX
|
||||
.It Pa /etc/gpio.conf
|
||||
The
|
||||
.Nm
|
||||
configuration file resides in
|
||||
.Pa /etc .
|
||||
.It Pa /etc/rc.d/gpio
|
||||
.Xr rc.d 8
|
||||
script that parses
|
||||
.Nm .
|
||||
.El
|
||||
.Sh EXAMPLES
|
||||
In this example, if the
|
||||
.Pa /etc/gpio.conf
|
||||
config file is present pin 1 of
|
||||
.Pa /dev/gpio0
|
||||
is set as output and named "error_led".
|
||||
.Bd -literal -offset indent
|
||||
# Program pin 1 of /dev/gpio0 as output and name it "error_led"
|
||||
/dev/gpio0 1 set out error_led
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr gpioctl 8 ,
|
||||
.Xr rc 8
|
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: rc.conf.5,v 1.129 2009/04/10 16:18:04 joerg Exp $
|
||||
.\" $NetBSD: rc.conf.5,v 1.130 2009/07/25 16:20:11 mbalmer Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1996 Matthew R. Green
|
||||
.\" All rights reserved.
|
||||
@ -318,6 +318,15 @@ from the output of
|
||||
.Xr dmesg 8 .
|
||||
Passes
|
||||
.Sy dmesg_flags .
|
||||
.It Sy gpio
|
||||
.Sq YES
|
||||
or
|
||||
.Sq NO .
|
||||
Configure
|
||||
.Xr gpio 4
|
||||
devices .
|
||||
See
|
||||
.Xr gpio.conf 5 .
|
||||
.It Sy mixerctl
|
||||
.Sq YES
|
||||
or
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: secmodel_securelevel.9,v 1.5 2008/11/11 00:10:39 reed Exp $
|
||||
.\" $NetBSD: secmodel_securelevel.9,v 1.6 2009/07/25 16:20:11 mbalmer Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2006 Elad Efrat <elad@NetBSD.org>
|
||||
.\" Copyright (c) 2000 Hugh Graham
|
||||
@ -26,7 +26,7 @@
|
||||
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd November 10, 2008
|
||||
.Dd July 10, 2009
|
||||
.Dt SECMODEL_SECURELEVEL 9
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -63,6 +63,8 @@ or procfs.
|
||||
Immutable and append-only file flags may be changed
|
||||
.It
|
||||
All devices may be read or written subject to their permissions
|
||||
.It
|
||||
GPIO pins can be set and device drivers can be attached to them
|
||||
.El
|
||||
.It \ 1 Em Secure mode
|
||||
.Bl -hyphen -compact
|
||||
@ -107,6 +109,8 @@ and
|
||||
calls are denied
|
||||
.It
|
||||
Access to unmanaged memory is denied
|
||||
.It
|
||||
Only GPIO pins that have been set at securelevel 0 can be accessed
|
||||
.El
|
||||
.It \ 2 Em Highly secure mode
|
||||
.Bl -hyphen -compact
|
||||
|
Loading…
Reference in New Issue
Block a user