Module Name: src
Committed By: mbalmer
Date: Mon Jul 27 17:40:58 UTC 2009
Modified Files:
src/sys/dev/gpio: files.gpio gpiosim.c
src/sys/kern: init_main.c
Log Message:
Do not attach gpiosim(4) at root, but make it a pseudo device.
With help from Matthias Drochner, thanks!
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/dev/gpio/files.gpio
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/gpio/gpiosim.c
cvs rdiff -u -r1.395 -r1.396 src/sys/kern/init_main.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/gpio/files.gpio
diff -u src/sys/dev/gpio/files.gpio:1.5 src/sys/dev/gpio/files.gpio:1.6
--- src/sys/dev/gpio/files.gpio:1.5 Sat Jul 25 16:17:10 2009
+++ src/sys/dev/gpio/files.gpio Mon Jul 27 17:40:57 2009
@@ -1,4 +1,4 @@
-# $NetBSD: files.gpio,v 1.5 2009/07/25 16:17:10 mbalmer Exp $
+# $NetBSD: files.gpio,v 1.6 2009/07/27 17:40:57 mbalmer Exp $
define gpio {[offset = -1], [mask = 0]}
@@ -7,9 +7,8 @@
file dev/gpio/gpio.c gpio needs-flag
# GPIO simulator
-device gpiosim: gpiobus
-attach gpiosim at root
-file dev/gpio/gpiosim.c gpiosim needs-flag
+defpseudodev gpiosim: gpiobus
+file dev/gpio/gpiosim.c gpiosim
# 1-Wire bus bit-banging
device gpioow: onewirebus, onewire_bitbang
Index: src/sys/dev/gpio/gpiosim.c
diff -u src/sys/dev/gpio/gpiosim.c:1.2 src/sys/dev/gpio/gpiosim.c:1.3
--- src/sys/dev/gpio/gpiosim.c:1.2 Sun Jul 26 13:45:20 2009
+++ src/sys/dev/gpio/gpiosim.c Mon Jul 27 17:40:58 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: gpiosim.c,v 1.2 2009/07/26 13:45:20 mbalmer Exp $ */
+/* $NetBSD: gpiosim.c,v 1.3 2009/07/27 17:40:58 mbalmer Exp $ */
/* $OpenBSD: gpiosim.c,v 1.1 2008/11/23 18:46:49 mbalmer Exp $ */
/*
@@ -41,6 +41,7 @@
};
int gpiosim_match(device_t, cfdata_t, void *);
+void gpiosimattach(int);
void gpiosim_attach(device_t, device_t, void *);
int gpiosim_detach(device_t, int);
int gpiosim_activate(device_t, enum devact);
@@ -62,6 +63,26 @@
}
void
+gpiosimattach(int num)
+{
+ cfdata_t cf;
+ int n, err;
+
+ err = config_cfattach_attach(gpiosim_cd.cd_name, &gpiosim_ca);
+ if (err)
+ printf("%s: unable to register cfattach\n", gpiosim_cd.cd_name);
+
+ for (n = 0; n < num; n++) {
+ cf = malloc(sizeof(*cf), M_DEVBUF, M_WAITOK);
+ cf->cf_name = "gpiosim";
+ cf->cf_atname = "gpiosim";
+ cf->cf_unit = n;
+ cf->cf_fstate = FSTATE_NOTFOUND;
+ config_attach_pseudo(cf);
+ }
+}
+
+void
gpiosim_attach(device_t parent, device_t self, void *aux)
{
struct gpiosim_softc *sc = device_private(self);
@@ -70,6 +91,8 @@
sc->sc_dev = self;
+ printf("%s", device_xname(sc->sc_dev));
+
/* initialize pin array */
for (i = 0; i < GPIOSIM_NPINS; i++) {
sc->sc_gpio_pins[i].pin_num = i;
@@ -118,7 +141,7 @@
gpiosim_sysctl, 0, sc, 0,
CTL_CREATE, CTL_EOL);
- printf("\n");
+ printf(": simulating %d pins\n", GPIOSIM_NPINS);
config_found_ia(self, "gpiobus", &gba, gpiobus_print);
}
Index: src/sys/kern/init_main.c
diff -u src/sys/kern/init_main.c:1.395 src/sys/kern/init_main.c:1.396
--- src/sys/kern/init_main.c:1.395 Sat Jul 25 16:23:39 2009
+++ src/sys/kern/init_main.c Mon Jul 27 17:40:57 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: init_main.c,v 1.395 2009/07/25 16:23:39 mbalmer Exp $ */
+/* $NetBSD: init_main.c,v 1.396 2009/07/27 17:40:57 mbalmer Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -97,7 +97,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.395 2009/07/25 16:23:39 mbalmer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.396 2009/07/27 17:40:57 mbalmer Exp $");
#include "opt_ddb.h"
#include "opt_ipsec.h"
@@ -119,7 +119,6 @@
#include "sysmon_taskq.h"
#include "sysmon_wdog.h"
#include "veriexec.h"
-#include "gpiosim.h"
#include <sys/param.h>
#include <sys/acct.h>
@@ -473,9 +472,6 @@
ssp_init();
configure2();
-#if NGPIOSIM > 0
- config_rootfound("gpiosim", NULL);
-#endif
/* Now timer is working. Enable preemption. */
kpreempt_enable();