Module Name:    src
Committed By:   mbalmer
Date:           Sat Jul 25 16:20:11 UTC 2009

Modified Files:
        src/etc: Makefile
        src/etc/defaults: rc.conf
        src/etc/mtree: special
        src/etc/rc.d: Makefile
        src/share/man/man4: gpio.4 gpioow.4
        src/share/man/man5: Makefile rc.conf.5
        src/share/man/man9: secmodel_securelevel.9
Added Files:
        src/etc: gpio.conf
        src/etc/rc.d: gpio
        src/share/man/man5: gpio.conf.5

Log Message:
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.


To generate a diff of this commit:
cvs rdiff -u -r1.369 -r1.370 src/etc/Makefile
cvs rdiff -u -r0 -r1.1 src/etc/gpio.conf
cvs rdiff -u -r1.103 -r1.104 src/etc/defaults/rc.conf
cvs rdiff -u -r1.128 -r1.129 src/etc/mtree/special
cvs rdiff -u -r1.78 -r1.79 src/etc/rc.d/Makefile
cvs rdiff -u -r0 -r1.1 src/etc/rc.d/gpio
cvs rdiff -u -r1.8 -r1.9 src/share/man/man4/gpio.4
cvs rdiff -u -r1.2 -r1.3 src/share/man/man4/gpioow.4
cvs rdiff -u -r1.61 -r1.62 src/share/man/man5/Makefile
cvs rdiff -u -r0 -r1.1 src/share/man/man5/gpio.conf.5
cvs rdiff -u -r1.129 -r1.130 src/share/man/man5/rc.conf.5
cvs rdiff -u -r1.5 -r1.6 src/share/man/man9/secmodel_securelevel.9

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/etc/Makefile
diff -u src/etc/Makefile:1.369 src/etc/Makefile:1.370
--- src/etc/Makefile:1.369	Tue Jul 21 00:48:29 2009
+++ src/etc/Makefile	Sat Jul 25 16:20:10 2009
@@ -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 @@
 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 \

Index: src/etc/defaults/rc.conf
diff -u src/etc/defaults/rc.conf:1.103 src/etc/defaults/rc.conf:1.104
--- src/etc/defaults/rc.conf:1.103	Tue Apr 28 23:30:34 2009
+++ src/etc/defaults/rc.conf	Sat Jul 25 16:20:10 2009
@@ -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 @@
 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)

Index: src/etc/mtree/special
diff -u src/etc/mtree/special:1.128 src/etc/mtree/special:1.129
--- src/etc/mtree/special:1.128	Tue Apr 21 16:08:57 2009
+++ src/etc/mtree/special	Sat Jul 25 16:20:10 2009
@@ -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

Index: src/etc/rc.d/Makefile
diff -u src/etc/rc.d/Makefile:1.78 src/etc/rc.d/Makefile:1.79
--- src/etc/rc.d/Makefile:1.78	Tue Apr 28 23:30:34 2009
+++ src/etc/rc.d/Makefile	Sat Jul 25 16:20:10 2009
@@ -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 @@
 		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 \

Index: src/share/man/man4/gpio.4
diff -u src/share/man/man4/gpio.4:1.8 src/share/man/man4/gpio.4:1.9
--- src/share/man/man4/gpio.4:1.8	Fri Feb 27 03:13:55 2009
+++ src/share/man/man4/gpio.4	Sat Jul 25 16:20:11 2009
@@ -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 <gra...@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 @@
 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 @@
 };
 .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 @@
 .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 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 @@
 .Nx
 by
 .An Jared D. McNeill Aq jmcne...@netbsd.org .
+Runtime device attachment was added by
+.An Marc Balmer Aq m...@msys.ch .
 .Sh BUGS
 Event capabilities are not supported.

Index: src/share/man/man4/gpioow.4
diff -u src/share/man/man4/gpioow.4:1.2 src/share/man/man4/gpioow.4:1.3
--- src/share/man/man4/gpioow.4:1.2	Sat Apr  8 23:10:40 2006
+++ src/share/man/man4/gpioow.4	Sat Jul 25 16:20:11 2009
@@ -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 <gra...@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 @@
 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 ,

Index: src/share/man/man5/Makefile
diff -u src/share/man/man5/Makefile:1.61 src/share/man/man5/Makefile:1.62
--- src/share/man/man5/Makefile:1.61	Wed Nov 12 12:35:53 2008
+++ src/share/man/man5/Makefile	Sat Jul 25 16:20:11 2009
@@ -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 \

Index: src/share/man/man5/rc.conf.5
diff -u src/share/man/man5/rc.conf.5:1.129 src/share/man/man5/rc.conf.5:1.130
--- src/share/man/man5/rc.conf.5:1.129	Fri Apr 10 16:18:04 2009
+++ src/share/man/man5/rc.conf.5	Sat Jul 25 16:20:11 2009
@@ -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 @@
 .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

Index: src/share/man/man9/secmodel_securelevel.9
diff -u src/share/man/man9/secmodel_securelevel.9:1.5 src/share/man/man9/secmodel_securelevel.9:1.6
--- src/share/man/man9/secmodel_securelevel.9:1.5	Tue Nov 11 00:10:39 2008
+++ src/share/man/man9/secmodel_securelevel.9	Sat Jul 25 16:20:11 2009
@@ -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 <e...@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 @@
 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 @@
 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

Added files:

Index: src/etc/gpio.conf
diff -u /dev/null src/etc/gpio.conf:1.1
--- /dev/null	Sat Jul 25 16:20:11 2009
+++ src/etc/gpio.conf	Sat Jul 25 16:20:10 2009
@@ -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.
+

Index: src/etc/rc.d/gpio
diff -u /dev/null src/etc/rc.d/gpio:1.1
--- /dev/null	Sat Jul 25 16:20:11 2009
+++ src/etc/rc.d/gpio	Sat Jul 25 16:20:10 2009
@@ -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"

Index: src/share/man/man5/gpio.conf.5
diff -u /dev/null src/share/man/man5/gpio.conf.5:1.1
--- /dev/null	Sat Jul 25 16:20:11 2009
+++ src/share/man/man5/gpio.conf.5	Sat Jul 25 16:20:11 2009
@@ -0,0 +1,69 @@
+.\"        $NetBSD: gpio.conf.5,v 1.1 2009/07/25 16:20:11 mbalmer Exp $
+.\"
+.\" Copyright (c) 2009 Marc Balmer <m...@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

Reply via email to