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();