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

Reply via email to