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.
This commit is contained in:
bjh21 2009-02-14 10:20:55 +00:00
parent 1fafc79578
commit a0263b80b8
9 changed files with 41 additions and 201 deletions

View File

@ -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

View File

@ -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 <bsd.man.mk>

View File

@ -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 ,

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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 <sys/cdefs.h>
__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 <sys/param.h>
#include <sys/device.h>
@ -67,7 +67,6 @@ __KERNEL_RCSID(0, "$NetBSD: arckbd.c,v 1.16 2009/01/19 00:11:16 bjh21 Exp $");
#include <arch/acorn26/ioc/arckbdreg.h>
#include <arch/acorn26/ioc/arckbdvar.h>
#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

View File

@ -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