From a0263b80b80fcaa9b2df1022f2be0383ce81b24e Mon Sep 17 00:00:00 2001 From: bjh21 Date: Sat, 14 Feb 2009 10:20:55 +0000 Subject: [PATCH] I've just discovered config_found_ia(), which means that wskbd(4) and wsmouse(4) can attach directly at arckbd(4) and I can dispose of the ugly arcwsmouse(4) and arcwskbd(4) interpositions. Do that, and purge them from the documentation as well. --- distrib/sets/lists/man/mi | 14 +-- share/man/man4/man4.acorn26/Makefile | 3 +- share/man/man4/man4.acorn26/arckbd.4 | 28 +---- sys/arch/acorn26/conf/FOURMEG | 8 +- sys/arch/acorn26/conf/GENERIC | 8 +- sys/arch/acorn26/conf/INSTALL | 8 +- sys/arch/acorn26/conf/files.acorn26 | 11 +- sys/arch/acorn26/ioc/arckbd.c | 158 +++------------------------ sys/dev/DEVNAMES | 4 +- 9 files changed, 41 insertions(+), 201 deletions(-) diff --git a/distrib/sets/lists/man/mi b/distrib/sets/lists/man/mi index 91023fb02894..2682699ce2cf 100644 --- a/distrib/sets/lists/man/mi +++ b/distrib/sets/lists/man/mi @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1122 2009/02/05 18:03:30 sborrill Exp $ +# $NetBSD: mi,v 1.1123 2009/02/14 10:20:56 bjh21 Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -567,8 +567,8 @@ ./usr/share/man/cat4/acardide.0 man-sys-catman .cat ./usr/share/man/cat4/aceride.0 man-sys-catman .cat ./usr/share/man/cat4/acorn26/arckbd.0 man-sys-catman .cat -./usr/share/man/cat4/acorn26/arcwskbd.0 man-sys-catman .cat -./usr/share/man/cat4/acorn26/arcwsmouse.0 man-sys-catman .cat +./usr/share/man/cat4/acorn26/arcwskbd.0 man-obsolete obsolete +./usr/share/man/cat4/acorn26/arcwsmouse.0 man-obsolete obsolete ./usr/share/man/cat4/acorn26/cpu.0 man-sys-catman .cat ./usr/share/man/cat4/acorn26/eca.0 man-sys-catman .cat ./usr/share/man/cat4/acorn26/eh.0 man-sys-catman .cat @@ -3196,8 +3196,8 @@ ./usr/share/man/html4/acardide.html man-sys-htmlman html ./usr/share/man/html4/aceride.html man-sys-htmlman html ./usr/share/man/html4/acorn26/arckbd.html man-sys-htmlman html -./usr/share/man/html4/acorn26/arcwskbd.html man-sys-htmlman html -./usr/share/man/html4/acorn26/arcwsmouse.html man-sys-htmlman html +./usr/share/man/html4/acorn26/arcwskbd.html man-obsolete obsolete +./usr/share/man/html4/acorn26/arcwsmouse.html man-obsolete obsolete ./usr/share/man/html4/acorn26/cpu.html man-sys-htmlman html ./usr/share/man/html4/acorn26/eca.html man-sys-htmlman html ./usr/share/man/html4/acorn26/eh.html man-sys-htmlman html @@ -5507,8 +5507,8 @@ ./usr/share/man/man4/acardide.4 man-sys-man .man ./usr/share/man/man4/aceride.4 man-sys-man .man ./usr/share/man/man4/acorn26/arckbd.4 man-sys-man .man -./usr/share/man/man4/acorn26/arcwskbd.4 man-sys-man .man -./usr/share/man/man4/acorn26/arcwsmouse.4 man-sys-man .man +./usr/share/man/man4/acorn26/arcwskbd.4 man-obsolete obsolete +./usr/share/man/man4/acorn26/arcwsmouse.4 man-obsolete obsolete ./usr/share/man/man4/acorn26/cpu.4 man-sys-man .man ./usr/share/man/man4/acorn26/eca.4 man-sys-man .man ./usr/share/man/man4/acorn26/eh.4 man-sys-man .man diff --git a/share/man/man4/man4.acorn26/Makefile b/share/man/man4/man4.acorn26/Makefile index a313807bda13..7b2c841d628b 100644 --- a/share/man/man4/man4.acorn26/Makefile +++ b/share/man/man4/man4.acorn26/Makefile @@ -1,9 +1,8 @@ # from: @(#)Makefile 5.1 (Berkeley) 2/12/91 -# $NetBSD: Makefile,v 1.5 2007/04/21 06:11:57 plunky Exp $ +# $NetBSD: Makefile,v 1.6 2009/02/14 10:20:55 bjh21 Exp $ MAN= arckbd.4 cpu.4 eca.4 eh.4 iobus.4 unixbp.4 -MLINKS= arckbd.4 arcwskbd.4 arckbd.4 arcwsmouse.4 MANSUBDIR=/acorn26 .include diff --git a/share/man/man4/man4.acorn26/arckbd.4 b/share/man/man4/man4.acorn26/arckbd.4 index 76d082fd3ac6..76cb3cacddf8 100644 --- a/share/man/man4/man4.acorn26/arckbd.4 +++ b/share/man/man4/man4.acorn26/arckbd.4 @@ -1,4 +1,4 @@ -.\" $NetBSD: arckbd.4,v 1.1 2002/03/24 22:29:56 bjh21 Exp $ +.\" $NetBSD: arckbd.4,v 1.2 2009/02/14 10:20:55 bjh21 Exp $ .\" .\" Copyright (c) 2000 Ben Harris .\" All rights reserved. @@ -25,18 +25,16 @@ .\" (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 April 1, 2000 +.Dd February 14, 2009 .Os .Dt ARCKBD 4 acorn26 .Sh NAME -.Nm arckbd , arcwskbd , arcwsmouse +.Nm arckbd .Nd Archimedes keyboard/mouse driver .Sh SYNOPSIS .Cd "arckbd0 at ioc0 bank 0 offset 0x04" -.Cd "arcwskbd0 at arckbd0" -.Cd "wskbd0 at arcwskbd0" -.Cd "arcwsmouse0 at arckbd0" -.Cd "wsmouse0 at arcwsmouse0" +.Cd "wskbd0 at arckbd0" +.Cd "wsmouse0 at arckbd0" .Sh DESCRIPTION The .Nm @@ -51,22 +49,6 @@ driver goes through the and .Nm wsmouse drivers. -.Pp -Because of the architecture of -.Nm wscons , -it is impossible to have a device at which both -.Nm wskbd -and -.Nm wsmouse -devices attach. The -.Nm -driver works around this by having dummy -.Nm arcwskbd -and -.Nm arcwsmouse -drivers which interpose between itself and the -.Nm wscons -drivers. .Sh SEE ALSO .Xr wscons 4 , .Xr wskbd 4 , diff --git a/sys/arch/acorn26/conf/FOURMEG b/sys/arch/acorn26/conf/FOURMEG index f9e72e0cda0c..9305df6f39d1 100644 --- a/sys/arch/acorn26/conf/FOURMEG +++ b/sys/arch/acorn26/conf/FOURMEG @@ -1,4 +1,4 @@ -# $NetBSD: FOURMEG,v 1.31 2008/11/24 11:41:07 ad Exp $ +# $NetBSD: FOURMEG,v 1.32 2009/02/14 10:20:55 bjh21 Exp $ # FOURMEG arm26 configuration -- something small @@ -133,10 +133,8 @@ iic0 at iociic0 pcfrtc0 at iic0 addr 0x50 # Real-time clock arckbd0 at ioc0 bank 0 offset 0x04 # System keyboard -arcwskbd0 at arckbd0 # Logical devices... -wskbd0 at arcwskbd0 -arcwsmouse0 at arckbd0 -wsmouse0 at arcwsmouse0 +wskbd0 at arckbd0 +wsmouse0 at arckbd0 ioeb0 at ioc0 bank 5 # I/O Extension Block (A5000) latches0 at ioc0 bank 5 # Printer/FDC control latches (Arc) diff --git a/sys/arch/acorn26/conf/GENERIC b/sys/arch/acorn26/conf/GENERIC index 1396a527a3c9..17998e00e322 100644 --- a/sys/arch/acorn26/conf/GENERIC +++ b/sys/arch/acorn26/conf/GENERIC @@ -1,4 +1,4 @@ -# $NetBSD: GENERIC,v 1.57 2008/11/24 11:41:07 ad Exp $ +# $NetBSD: GENERIC,v 1.58 2009/02/14 10:20:55 bjh21 Exp $ # # GENERIC machine description file # @@ -167,10 +167,8 @@ iic0 at iociic0 pcfrtc0 at iic0 addr 0x50 # Real-time clock arckbd0 at ioc0 bank 0 offset 0x04 # System keyboard -arcwskbd0 at arckbd0 # Logical devices... -wskbd0 at arcwskbd0 -arcwsmouse0 at arckbd0 -wsmouse0 at arcwsmouse0 +wskbd0 at arckbd0 +wsmouse0 at arckbd0 ioeb0 at ioc0 bank 5 # I/O Extension Block (A5000) latches0 at ioc0 bank 5 # Printer/FDC control latches (Arc) diff --git a/sys/arch/acorn26/conf/INSTALL b/sys/arch/acorn26/conf/INSTALL index c4f20e060613..d79572c3cac6 100644 --- a/sys/arch/acorn26/conf/INSTALL +++ b/sys/arch/acorn26/conf/INSTALL @@ -1,4 +1,4 @@ -# $NetBSD: INSTALL,v 1.25 2009/02/06 18:50:26 jym Exp $ +# $NetBSD: INSTALL,v 1.26 2009/02/14 10:20:55 bjh21 Exp $ # INSTALL configuration, used to generate installation media @@ -138,10 +138,8 @@ iic0 at iociic0 pcfrtc0 at iic0 addr 0x50 # Real-time clock arckbd0 at ioc0 bank 0 offset 0x04 # System keyboard -arcwskbd0 at arckbd0 # Logical devices... -wskbd0 at arcwskbd0 -#arcwsmouse0 at arckbd0 -#wsmouse0 at arcwsmouse0 +wskbd0 at arckbd0 +#wsmouse0 at arckbd0 ioeb0 at ioc0 bank 5 # I/O Extension Block (A5000) latches0 at ioc0 bank 5 # Printer/FDC control latches (Arc) diff --git a/sys/arch/acorn26/conf/files.acorn26 b/sys/arch/acorn26/conf/files.acorn26 index ff875f2f55b7..cb21a1a57ede 100644 --- a/sys/arch/acorn26/conf/files.acorn26 +++ b/sys/arch/acorn26/conf/files.acorn26 @@ -1,4 +1,4 @@ -# $NetBSD: files.acorn26,v 1.13 2009/01/18 18:23:59 bjh21 Exp $ +# $NetBSD: files.acorn26,v 1.14 2009/02/14 10:20:55 bjh21 Exp $ # Copyright (c) 1997, 1998, 2000 Ben Harris # All rights reserved. @@ -84,14 +84,9 @@ attach latches at ioc file arch/acorn26/ioc/latches.c latches # On-board keyboard interface -device arckbd { } +device arckbd: wskbddev, wsmousedev attach arckbd at ioc -device arcwskbd: wskbddev -attach arcwskbd at arckbd -device arcwsmouse: wsmousedev -attach arcwsmouse at arckbd -file arch/acorn26/ioc/arckbd.c arckbd | arcwskbd | arcwsmouse - needs-flag +file arch/acorn26/ioc/arckbd.c arckbd needs-flag file arch/acorn26/ioc/arckbdmap.c arckbd # On-board WD 1772 floppy controller (usually at bank 1 irq 12 fiq 0/1) diff --git a/sys/arch/acorn26/ioc/arckbd.c b/sys/arch/acorn26/ioc/arckbd.c index 97955601e217..0208520f1a60 100644 --- a/sys/arch/acorn26/ioc/arckbd.c +++ b/sys/arch/acorn26/ioc/arckbd.c @@ -1,4 +1,4 @@ -/* $NetBSD: arckbd.c,v 1.16 2009/01/19 00:11:16 bjh21 Exp $ */ +/* $NetBSD: arckbd.c,v 1.17 2009/02/14 10:20:55 bjh21 Exp $ */ /*- * Copyright (c) 1998, 1999, 2000 Ben Harris * All rights reserved. @@ -41,7 +41,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: arckbd.c,v 1.16 2009/01/19 00:11:16 bjh21 Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arckbd.c,v 1.17 2009/02/14 10:20:55 bjh21 Exp $"); #include #include @@ -67,7 +67,6 @@ __KERNEL_RCSID(0, "$NetBSD: arckbd.c,v 1.16 2009/01/19 00:11:16 bjh21 Exp $"); #include #include -#include "arckbd.h" #include "locators.h" #include "rnd.h" @@ -92,25 +91,14 @@ static void arckbd_attach(device_t parent, device_t self, void *aux); #if 0 /* XXX should be used */ static kbd_t arckbd_pick_layout(int kbid); #endif -#if NARCWSKBD > 0 -static int arcwskbd_match(device_t parent, cfdata_t cf, void *aux); -static void arcwskbd_attach(device_t parent, device_t self, void *aux); -#endif -#if NARCWSMOUSE > 0 -static int arcwsmouse_match(device_t parent, cfdata_t cf, void *aux); -static void arcwsmouse_attach(device_t parent, device_t self, void *aux); -#endif static int arckbd_rint(void *self); static int arckbd_xint(void *self); -#if NARCWSMOUSE > 0 static void arckbd_mousemoved(device_t self, int byte1, int byte2); -#endif static void arckbd_keyupdown(device_t self, int byte1, int byte2); static int arckbd_send(device_t self, int data, enum arckbd_state newstate, int waitok); -#if NARCWSKBD > 0 static int arckbd_enable(void *cookie, int on); static int arckbd_led_encode(int); static int arckbd_led_decode(int); @@ -119,13 +107,11 @@ static int arckbd_ioctl(void *cookie, u_long cmd, void *data, int flag, struct lwp *l); static void arckbd_getc(void *cookie, u_int *typep, int *valuep); static void arckbd_pollc(void *cookie, int poll); -#endif -#if NARCWSMOUSE > 0 + static int arcmouse_enable(void *cookie); static int arcmouse_ioctl(void *cookie, u_long cmd, void *data, int flag, struct lwp *l); static void arcmouse_disable(void *cookie); -#endif struct arckbd_softc { device_t sc_dev; @@ -163,32 +149,6 @@ struct arckbd_softc { CFATTACH_DECL_NEW(arckbd, sizeof(struct arckbd_softc), arckbd_match, arckbd_attach, NULL, NULL); -/* - * Internal devices used because arckbd can't be both a wskbddev and a - * wsmousedev. I suspect the right way to do this is through an - * "attach wskbd at arckbd with wskbd_arckbd" type thing, but we can't - * as the size of a wskbd_softc isn't public. Come to think of it, - * this isn't very evil -- I just don't like having yet another line - * of configuration. - */ - -#if NARCWSKBD > 0 -CFATTACH_DECL_NEW(arcwskbd, 0, - arcwskbd_match, arcwskbd_attach, NULL, NULL); -#endif - -#if NARCWSMOUSE > 0 -CFATTACH_DECL_NEW(arcwsmouse, 0, - arcwsmouse_match, arcwsmouse_attach, NULL, NULL); -#endif - -struct arckbd_attach_args { - enum { ARCKBD_KBDDEV, ARCKBD_MOUSEDEV } aka_devtype; - struct wskbddev_attach_args aka_wskbdargs; - struct wsmousedev_attach_args aka_wsmouseargs; -}; - -#if NARCWSKBD > 0 static struct wskbd_accessops arckbd_accessops = { arckbd_enable, arckbd_set_leds, arckbd_ioctl }; @@ -196,13 +156,10 @@ static struct wskbd_accessops arckbd_accessops = { static struct wskbd_consops arckbd_consops = { arckbd_getc, arckbd_pollc }; -#endif -#if NARCWSMOUSE > 0 static struct wsmouse_accessops arcmouse_accessops = { arcmouse_enable, arcmouse_ioctl, arcmouse_disable }; -#endif /* ARGSUSED */ static int @@ -220,9 +177,8 @@ arckbd_attach(device_t parent, device_t self, void *aux) struct ioc_attach_args *ioc = aux; bus_space_tag_t bst; bus_space_handle_t bsh; -#if NARCWSKBD > 0 || NARCWSMOUSE > 0 - struct arckbd_attach_args aka; -#endif + struct wskbddev_attach_args wskbdargs; + struct wsmousedev_attach_args wsmouseargs; bst = sc->sc_bst = ioc->ioc_fast_t; bsh = sc->sc_bsh = ioc->ioc_fast_h; @@ -259,10 +215,8 @@ arckbd_attach(device_t parent, device_t self, void *aux) /* XXX set the LEDs to a known state? (or will wskbd do this?) */ -#if NARCWSKBD > 0 /* Attach the wskbd console */ arckbd_cnattach(self); -#endif aprint_normal("\n"); @@ -271,25 +225,16 @@ arckbd_attach(device_t parent, device_t self, void *aux) RND_TYPE_TTY, 0); #endif - /* Attach the dummy drivers */ -#if NARCWSKBD > 0 - aka.aka_wskbdargs.console = 1; /* XXX FIXME */ - aka.aka_wskbdargs.keymap = &sc->sc_mapdata; - aka.aka_wskbdargs.accessops = &arckbd_accessops; - aka.aka_wskbdargs.accesscookie = sc; -#endif -#if NARCWSMOUSE > 0 - aka.aka_wsmouseargs.accessops = &arcmouse_accessops; - aka.aka_wsmouseargs.accesscookie = sc; -#endif -#if NARCWSKBD > 0 - aka.aka_devtype = ARCKBD_KBDDEV; - config_found(self, &aka, NULL); -#endif -#if NARCWSMOUSE > 0 - aka.aka_devtype = ARCKBD_MOUSEDEV; - config_found(self, &aka, NULL); -#endif + wskbdargs.console = 1; /* XXX FIXME */ + wskbdargs.keymap = &sc->sc_mapdata; + wskbdargs.accessops = &arckbd_accessops; + wskbdargs.accesscookie = sc; + sc->sc_wskbddev = config_found_ia(self, "wskbddev", &wskbdargs, NULL); + + wsmouseargs.accessops = &arcmouse_accessops; + wsmouseargs.accesscookie = sc; + sc->sc_wsmousedev = + config_found_ia(self, "wsmousedev", &wsmouseargs, NULL); } #if 0 /* XXX should be used */ @@ -305,63 +250,7 @@ arckbd_pick_layout(int kbid) return KB_UK; } #endif - -#if NARCWSKBD > 0 -/* ARGSUSED */ -static int -arcwskbd_match(device_t parent, cfdata_t cf, void *aux) -{ - struct arckbd_attach_args *aka = aux; - - if (aka->aka_devtype == ARCKBD_KBDDEV) - return 1; - return 0; -} -#endif - -#if NARCWSMOUSE > 0 -/* ARGSUSED */ -static int -arcwsmouse_match(device_t parent, cfdata_t cf, void *aux) -{ - struct arckbd_attach_args *aka = aux; - - if (aka->aka_devtype == ARCKBD_MOUSEDEV) - return 1; - return 0; -} -#endif - -#if NARCWSKBD > 0 -static void -arcwskbd_attach(device_t parent, device_t self, void *aux) -{ - struct arckbd_attach_args *aka = aux; - struct arckbd_softc *sc = device_private(parent); - - aprint_normal("\n"); - - sc->sc_wskbddev = config_found(self, &(aka->aka_wskbdargs), - wskbddevprint); -} -#endif - -#if NARCWSMOUSE > 0 -static void -arcwsmouse_attach(device_t parent, device_t self, void *aux) -{ - struct arckbd_attach_args *aka = aux; - struct arckbd_softc *sc = device_private(parent); - - aprint_normal("\n"); - - sc->sc_wsmousedev = config_found(self, &(aka->aka_wsmouseargs), - wsmousedevprint); -} -#endif - -#if NARCWSKBD > 0 /* * We don't really _need_ a console keyboard before * autoconfiguration's finished, so for now this function's written to @@ -419,7 +308,6 @@ arckbd_pollc(void *cookie, int poll) } splx(s); } -#endif static int arckbd_send(device_t self, int data, enum arckbd_state newstate, int waitok) @@ -522,9 +410,7 @@ arckbd_rint(void *cookie) sc->sc_byteone = data; } else if (ARCKBD_IS_MDAT(data) && sc->sc_state == AS_MDAT) { arckbd_send(self, ARCKBD_SMAK, AS_IDLE, 0); -#if NARCWSMOUSE > 0 arckbd_mousemoved(self, sc->sc_byteone, data); -#endif } /* Key down data */ @@ -564,7 +450,6 @@ arckbd_rint(void *cookie) return IRQ_HANDLED; } -#if NARCWSMOUSE > 0 static void arckbd_mousemoved(device_t self, int byte1, int byte2) { @@ -584,24 +469,18 @@ arckbd_mousemoved(device_t self, int byte1, int byte2) WSMOUSE_INPUT_DELTA); } } -#endif static void arckbd_keyupdown(device_t self, int byte1, int byte2) { -#if NARCWSKBD > 0 || NARCWSMOUSE > 0 || NRND > 0 struct arckbd_softc *sc = device_private(self); -#endif -#if NARCWSKBD > 0 u_int type; int value; -#endif #if NRND > 0 rnd_add_uint32(&sc->sc_rnd_source, byte1); #endif if ((byte1 & 0x0f) == 7) { -#if NARCWSMOUSE > 0 /* Mouse button event */ /* * This is all very silly, as the wsmouse driver then @@ -620,9 +499,7 @@ arckbd_keyupdown(device_t self, int byte1, int byte2) sc->sc_mouse_buttons, 0, 0, 0, 0, WSMOUSE_INPUT_DELTA); -#endif } else { -#if NARCWSKBD > 0 type = ARCKBD_IS_KDDA(byte1) ? WSCONS_EVENT_KEY_DOWN : WSCONS_EVENT_KEY_UP; value = ((byte1 & 0x0f) << 4) | (byte2 & 0x0f); @@ -631,11 +508,9 @@ arckbd_keyupdown(device_t self, int byte1, int byte2) sc->sc_poll_value = value; } else if (sc->sc_wskbddev != NULL) wskbd_input(sc->sc_wskbddev, type, value); -#endif } } -#if NARCWSKBD > 0 /* * Keyboard access functions */ @@ -722,9 +597,7 @@ arckbd_ioctl(void *cookie, u_long cmd, void *data, int flag, struct lwp *l) } return EPASSTHROUGH; } -#endif -#if NARCWSMOUSE > 0 /* * Mouse access functions */ @@ -760,4 +633,3 @@ arcmouse_disable(void *cookie) sc->sc_flags &= ~AKF_WANTMOUSE; } -#endif diff --git a/sys/dev/DEVNAMES b/sys/dev/DEVNAMES index a344a971f72b..25db39be554d 100644 --- a/sys/dev/DEVNAMES +++ b/sys/dev/DEVNAMES @@ -1,4 +1,4 @@ -# $NetBSD: DEVNAMES,v 1.243 2008/12/16 02:14:24 jakllsch Exp $ +# $NetBSD: DEVNAMES,v 1.244 2009/02/14 10:20:55 bjh21 Exp $ # # This file contains all used device names and defined attributes in # alphabetical order. New devices added to the system somewhere should first @@ -90,8 +90,6 @@ arckbd acorn26 arcmsr MI arcpp acorn26 arcvideo acorn26 -arcwskbd acorn26 -arcwsmouse acorn26 aria MI arp MI Attribute artsata MI