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:
mbalmer 2009-07-25 16:20:10 +00:00
parent 32eeaba5d3
commit 70d654f756
12 changed files with 216 additions and 29 deletions

View File

@ -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 \

View File

@ -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
View 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.

View File

@ -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

View File

@ -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
View 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"

View File

@ -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.

View File

@ -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 ,

View File

@ -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 \

View 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

View File

@ -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

View File

@ -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