summaryrefslogtreecommitdiff
path: root/sys/dev/sun
diff options
context:
space:
mode:
authorgwr <gwr@NetBSD.org>1996-12-17 20:46:11 +0000
committergwr <gwr@NetBSD.org>1996-12-17 20:46:11 +0000
commit1169ecb0a211679ab188a3f09244d9d4e51ec466 (patch)
tree540f07975fc70ae33c3f36ce3ba9c5d67e0a848f /sys/dev/sun
parent494730c3764c3cd30198b84085bf802942c93a66 (diff)
Adapt to the new definition of struct zsc_softc
(the zsc_cs[2] members are now POINTERS!) Also fix warnings...
Diffstat (limited to 'sys/dev/sun')
-rw-r--r--sys/dev/sun/kbd.c93
-rw-r--r--sys/dev/sun/kbd_tables.c34
-rw-r--r--sys/dev/sun/kbd_tables.h14
-rw-r--r--sys/dev/sun/kbd_xlate.h11
-rw-r--r--sys/dev/sun/ms.c42
5 files changed, 107 insertions, 87 deletions
diff --git a/sys/dev/sun/kbd.c b/sys/dev/sun/kbd.c
index bd0f8b6f67c..1c7e0bda6cc 100644
--- a/sys/dev/sun/kbd.c
+++ b/sys/dev/sun/kbd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: kbd.c,v 1.12 1996/10/16 20:43:39 gwr Exp $ */
+/* $NetBSD: kbd.c,v 1.13 1996/12/17 20:46:11 gwr Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -59,13 +59,14 @@
#include <sys/param.h>
#include <sys/systm.h>
-#include <sys/proc.h>
-#include <sys/device.h>
#include <sys/conf.h>
-#include <sys/file.h>
+#include <sys/device.h>
#include <sys/ioctl.h>
-#include <sys/time.h>
#include <sys/kernel.h>
+#include <sys/proc.h>
+#include <sys/signal.h>
+#include <sys/signalvar.h>
+#include <sys/time.h>
#include <sys/syslog.h>
#include <sys/select.h>
#include <sys/poll.h>
@@ -169,17 +170,14 @@ struct kbd_softc {
};
/* Prototypes */
-int kbd_docmd(struct kbd_softc *k, int cmd);
-int kbd_iopen(int unit);
-void kbd_new_layout(struct kbd_softc *k);
-void kbd_output(struct kbd_softc *k, int c);
-void kbd_repeat(void *arg);
-void kbd_set_leds(struct kbd_softc *k, int leds);
-void kbd_start_tx(struct kbd_softc *k);
-void kbd_update_leds(struct kbd_softc *k);
-void kbd_was_reset(struct kbd_softc *k);
-
-extern void kd_input(int ascii);
+static void kbd_new_layout(struct kbd_softc *k);
+static void kbd_output(struct kbd_softc *k, int c);
+static void kbd_repeat(void *arg);
+static void kbd_set_leds(struct kbd_softc *k, int leds);
+static void kbd_start_tx(struct kbd_softc *k);
+static void kbd_update_leds(struct kbd_softc *k);
+static void kbd_was_reset(struct kbd_softc *k);
+static int kbd_drain_tx(struct kbd_softc *k);
cdev_decl(kbd); /* open, close, read, write, ioctl, stop, ... */
@@ -189,7 +187,7 @@ struct zsops zsops_kbd;
* Definition of the driver for autoconfig.
****************************************************************/
-static int kbd_match(struct device *, void *, void *);
+static int kbd_match(struct device *, struct cfdata *, void *);
static void kbd_attach(struct device *, struct device *, void *);
struct cfattach kbd_ca = {
@@ -205,11 +203,11 @@ struct cfdriver kbd_cd = {
* kbd_match: how is this zs channel configured?
*/
int
-kbd_match(parent, match, aux)
+kbd_match(parent, cf, aux)
struct device *parent;
- void *match, *aux;
+ struct cfdata *cf;
+ void *aux;
{
- struct cfdata *cf = match;
struct zsc_attach_args *args = aux;
/* Exact match required for keyboard. */
@@ -231,12 +229,12 @@ kbd_attach(parent, self, aux)
struct zs_chanstate *cs;
struct cfdata *cf;
int channel, kbd_unit;
- int reset, s, tconst;
+ int reset, s;
cf = k->k_dev.dv_cfdata;
kbd_unit = k->k_dev.dv_unit;
channel = args->channel;
- cs = &zsc->zsc_cs[channel];
+ cs = zsc->zsc_cs[channel];
cs->cs_private = k;
cs->cs_ops = &zsops_kbd;
k->k_cs = cs;
@@ -248,7 +246,6 @@ kbd_attach(parent, self, aux)
printf("\n");
/* Initialize the speed, etc. */
- tconst = BPS_TO_TCONST(cs->cs_brg_clk, KBD_BPS);
s = splzs();
if (k->k_isconsole == 0) {
/* Not the console; may need reset. */
@@ -257,9 +254,9 @@ kbd_attach(parent, self, aux)
zs_write_reg(cs, 9, reset);
}
/* These are OK as set by zscc: WR3, WR4, WR5 */
- cs->cs_preg[5] |= ZSWR5_DTR | ZSWR5_RTS;
- cs->cs_preg[12] = tconst;
- cs->cs_preg[13] = tconst >> 8;
+ /* We don't care about status interrupts. */
+ cs->cs_preg[1] = ZSWR1_RIE | ZSWR1_TIE;
+ (void) zs_set_speed(cs, KBD_BPS);
zs_loadchannelregs(cs);
splx(s);
@@ -296,7 +293,7 @@ kbdopen(dev, flags, mode, p)
struct proc *p;
{
struct kbd_softc *k;
- int error, s, unit;
+ int error, unit;
unit = minor(dev);
if (unit >= kbd_cd.cd_ndevs)
@@ -495,7 +492,7 @@ kbd_iockeymap(ks, cmd, kio)
u_long cmd;
struct kiockeymap *kio;
{
- struct keymap *km;
+ u_short *km;
u_int station;
switch (kio->kio_tablemask) {
@@ -524,11 +521,11 @@ kbd_iockeymap(ks, cmd, kio)
switch (cmd) {
case KIOCGKEY: /* Get keymap entry */
- kio->kio_entry = km->keymap[station];
+ kio->kio_entry = km[station];
break;
case KIOCSKEY: /* Set keymap entry */
- km->keymap[station] = kio->kio_entry;
+ km[station] = kio->kio_entry;
break;
default:
@@ -628,7 +625,6 @@ kbd_iocsled(k, data)
struct kbd_softc *k;
int *data;
{
- struct kbd_state *ks = &k->k_state;
int leds, error, s;
leds = *data;
@@ -650,6 +646,10 @@ kbd_iocsled(k, data)
* - raw key codes to keysym
****************************************************************/
+static void kbd_input_string __P((struct kbd_softc *, char *));
+static void kbd_input_funckey __P((struct kbd_softc *, int));
+static void kbd_input_keysym __P((struct kbd_softc *, int));
+static void kbd_input_raw __P((struct kbd_softc *k, int));
/*
* Initialization done by either kdcninit or kbd_iopen
@@ -681,7 +681,7 @@ kbd_code_to_keysym(ks, c)
register struct kbd_state *ks;
register int c;
{
- struct keymap *km;
+ u_short *km;
int keysym;
/*
@@ -704,7 +704,7 @@ kbd_code_to_keysym(ks, c)
*/
return (KEYSYM_NOP);
}
- keysym = km->keymap[KEY_CODE(c)];
+ keysym = km[KEY_CODE(c)];
/*
* Post-processing for Caps-lock
@@ -821,7 +821,7 @@ kbd_input_keysym(k, keysym)
* This is the autorepeat timeout function.
* Called at splsoftclock().
*/
-void
+static void
kbd_repeat(void *arg)
{
struct kbd_softc *k = (struct kbd_softc *)arg;
@@ -952,6 +952,11 @@ kbd_input_raw(k, c)
* Interface to the lower layer (zscc)
****************************************************************/
+static void kbd_rxint __P((struct zs_chanstate *));
+static void kbd_txint __P((struct zs_chanstate *));
+static void kbd_stint __P((struct zs_chanstate *));
+static void kbd_softint __P((struct zs_chanstate *));
+
static void
kbd_rxint(cs)
register struct zs_chanstate *cs;
@@ -984,7 +989,7 @@ kbd_rxint(cs)
k->k_magic1_down = 0;
if ((c == k->k_magic2) && k->k_isconsole) {
/* Magic "L1-A" sequence; enter debugger. */
- zs_abort();
+ zs_abort(cs);
/* Debugger done. Fake L1-up to finish it. */
c = k->k_magic1 | KBD_UP;
}
@@ -1041,7 +1046,7 @@ kbd_stint(cs)
#if 0
if (rr0 & ZSRR0_BREAK) {
/* Keyboard unplugged? */
- zs_abort();
+ zs_abort(cs);
return (0);
}
#endif
@@ -1073,7 +1078,6 @@ kbd_softint(cs)
register int get, c, s;
int intr_flags;
register u_short ring_data;
- register u_char rr0, rr1;
k = cs->cs_private;
@@ -1229,7 +1233,7 @@ out:
/*
* Called by kbd_input_raw, at spltty()
*/
-void
+static void
kbd_was_reset(k)
struct kbd_softc *k;
{
@@ -1274,7 +1278,7 @@ kbd_was_reset(k)
/*
* Called by kbd_input_raw, at spltty()
*/
-void
+static void
kbd_new_layout(k)
struct kbd_softc *k;
{
@@ -1294,7 +1298,7 @@ kbd_new_layout(k)
* Wait for output to finish.
* Called at spltty(). Has user context.
*/
-int
+static int
kbd_drain_tx(k)
struct kbd_softc *k;
{
@@ -1315,12 +1319,11 @@ kbd_drain_tx(k)
* Enqueue some output for the keyboard
* Called at spltty().
*/
-void
+static void
kbd_output(k, c)
struct kbd_softc *k;
int c; /* the data */
{
- struct zs_chanstate *cs = k->k_cs;
int put;
put = k->k_tbput;
@@ -1341,7 +1344,7 @@ kbd_output(k, c)
* Start the sending data from the output queue
* Called at spltty().
*/
-void
+static void
kbd_start_tx(k)
struct kbd_softc *k;
{
@@ -1379,7 +1382,7 @@ kbd_start_tx(k)
* Called at spltty by:
* kbd_update_leds, kbd_iocsled
*/
-void
+static void
kbd_set_leds(k, new_leds)
struct kbd_softc *k;
int new_leds;
@@ -1405,7 +1408,7 @@ kbd_set_leds(k, new_leds)
* Called at spltty by:
* kbd_input_keysym
*/
-void
+static void
kbd_update_leds(k)
struct kbd_softc *k;
{
diff --git a/sys/dev/sun/kbd_tables.c b/sys/dev/sun/kbd_tables.c
index bada03e68fd..828598b8a41 100644
--- a/sys/dev/sun/kbd_tables.c
+++ b/sys/dev/sun/kbd_tables.c
@@ -1,4 +1,4 @@
-/* $NetBSD: kbd_tables.c,v 1.2 1996/02/29 19:32:18 gwr Exp $ */
+/* $NetBSD: kbd_tables.c,v 1.3 1996/12/17 20:46:13 gwr Exp $ */
/*
* Copyright (c) 1996 Gordon W. Ross
@@ -34,7 +34,9 @@
* Keyboard translation tables. (See kbd_tables.h)
*/
-#define _KERNEL 1
+#include <sys/types.h>
+
+#define _KERNEL 1 /* XXX */
#include "kbd_tables.h"
@@ -53,7 +55,7 @@
/*
* Key release codes are decoded in this map.
*/
-struct keymap keymap_release = {
+u_short keymap_release[KEYMAP_SIZE] = {
/* 0: */ KEYSYM_HOLE,
/* 1: L1/Stop */ KEYSYM_NOP,
/* 2: */ KEYSYM_HOLE,
@@ -189,7 +191,7 @@ struct keymap keymap_release = {
* This map is used when a control key is down.
*/
#define CTL(c) ((c)&0x1F)
-struct keymap keymap_control = {
+u_short keymap_control[KEYMAP_SIZE] = {
/* 0: */ KEYSYM_HOLE,
/* 1: L1/Stop */ KEYSYM_NOP,
/* 2: */ KEYSYM_HOLE,
@@ -327,7 +329,7 @@ struct keymap keymap_control = {
* (lower-case, upper-case)
*/
-struct keymap keymap_s3_lc = {
+u_short keymap_s3_lc[KEYMAP_SIZE] = {
/* 0: */ KEYSYM_HOLE,
/* 1: L1/Stop */ KEYSYM_FUNC_L(1),
/* 2: */ KEYSYM_HOLE,
@@ -459,7 +461,7 @@ struct keymap keymap_s3_lc = {
};
-struct keymap keymap_s3_uc = {
+u_short keymap_s3_uc[KEYMAP_SIZE] = {
/* 0: */ KEYSYM_HOLE,
/* 1: L1/Stop */ KEYSYM_FUNC_L(1),
/* 2: */ KEYSYM_HOLE,
@@ -596,7 +598,7 @@ struct keymap keymap_s3_uc = {
* (lower-case, upper-case)
*/
-struct keymap keymap_s4_lc = {
+u_short keymap_s4_lc[KEYMAP_SIZE] = {
/* 0: */ KEYSYM_HOLE,
/* 1: L1/Stop */ KEYSYM_FUNC_L(1),
/* 2: */ KEYSYM_HOLE,
@@ -728,7 +730,7 @@ struct keymap keymap_s4_lc = {
};
-struct keymap keymap_s4_uc = {
+u_short keymap_s4_uc[KEYMAP_SIZE] = {
/* 0: */ KEYSYM_HOLE,
/* 1: L1/Stop */ KEYSYM_FUNC_L(1),
/* 2: */ KEYSYM_HOLE,
@@ -907,17 +909,17 @@ unsigned short kbd_numlock_map[64] = {
#define kbd_type2 kbd_type3
static struct keyboard kbd_type3 = {
- &keymap_release,
- &keymap_control,
- &keymap_s3_lc,
- &keymap_s3_uc,
+ keymap_release,
+ keymap_control,
+ keymap_s3_lc,
+ keymap_s3_uc,
};
static struct keyboard kbd_type4 = {
- &keymap_release,
- &keymap_control,
- &keymap_s4_lc,
- &keymap_s4_uc,
+ keymap_release,
+ keymap_control,
+ keymap_s4_lc,
+ keymap_s4_uc,
};
/* Treat type 5 as type 4 (close enough) */
diff --git a/sys/dev/sun/kbd_tables.h b/sys/dev/sun/kbd_tables.h
index 9f6869b2381..f2ed92e0c02 100644
--- a/sys/dev/sun/kbd_tables.h
+++ b/sys/dev/sun/kbd_tables.h
@@ -1,4 +1,4 @@
-/* $NetBSD: kbd_tables.h,v 1.3 1996/02/29 19:37:53 gwr Exp $ */
+/* $NetBSD: kbd_tables.h,v 1.4 1996/12/17 20:46:14 gwr Exp $ */
/*
* Copyright (c) 1996 Gordon W. Ross
@@ -129,15 +129,11 @@
#define KEYMAP_SIZE 128
-struct keymap {
- unsigned short keymap[KEYMAP_SIZE];
-};
-
struct keyboard {
- struct keymap *k_release; /* Key released */
- struct keymap *k_control; /* Ctrl is down */
- struct keymap *k_normal; /* No shifts */
- struct keymap *k_shifted; /* Shift is down */
+ u_short *k_release; /* Key released */
+ u_short *k_control; /* Ctrl is down */
+ u_short *k_normal; /* No shifts */
+ u_short *k_shifted; /* Shift is down */
};
extern char kbd_stringtab[16][10];
diff --git a/sys/dev/sun/kbd_xlate.h b/sys/dev/sun/kbd_xlate.h
index 263c80a23b2..f2fcd4dbb61 100644
--- a/sys/dev/sun/kbd_xlate.h
+++ b/sys/dev/sun/kbd_xlate.h
@@ -1,4 +1,4 @@
-/* $NetBSD: kbd_xlate.h,v 1.1.1.1 1996/01/24 01:15:35 gwr Exp $ */
+/* $NetBSD: kbd_xlate.h,v 1.2 1996/12/17 20:46:15 gwr Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -81,3 +81,12 @@ struct kbd_state {
extern void kbd_xlate_init __P((struct kbd_state *ks));
extern int kbd_code_to_keysym __P((struct kbd_state *ks, int c));
+/*
+ * XXX: kd/kbd interface... Does this belong elsewhere?
+ * This is the only header shared between them...
+ */
+
+extern int kbd_iopen __P((int unit));
+extern void kd_init __P((int unit));
+extern void kd_input __P((int c));
+
diff --git a/sys/dev/sun/ms.c b/sys/dev/sun/ms.c
index 18824dcab37..dad7ae2a69c 100644
--- a/sys/dev/sun/ms.c
+++ b/sys/dev/sun/ms.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ms.c,v 1.10 1996/10/16 20:43:40 gwr Exp $ */
+/* $NetBSD: ms.c,v 1.11 1996/12/17 20:46:16 gwr Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -57,18 +57,22 @@
#include <sys/param.h>
#include <sys/systm.h>
-#include <sys/proc.h>
-#include <sys/device.h>
#include <sys/conf.h>
+#include <sys/device.h>
#include <sys/ioctl.h>
#include <sys/kernel.h>
+#include <sys/proc.h>
+#include <sys/signal.h>
+#include <sys/signalvar.h>
+#include <sys/time.h>
#include <sys/syslog.h>
#include <sys/select.h>
#include <sys/poll.h>
+#include <machine/vuid_event.h>
+
#include <dev/ic/z8530reg.h>
#include <machine/z8530var.h>
-#include <machine/vuid_event.h>
#include "event_var.h"
@@ -141,7 +145,7 @@ struct zsops zsops_ms;
* Definition of the driver for autoconfig.
****************************************************************/
-static int ms_match(struct device *, void *, void *);
+static int ms_match(struct device *, struct cfdata *, void *);
static void ms_attach(struct device *, struct device *, void *);
struct cfattach ms_ca = {
@@ -157,11 +161,11 @@ struct cfdriver ms_cd = {
* ms_match: how is this zs channel configured?
*/
int
-ms_match(parent, match, aux)
+ms_match(parent, cf, aux)
struct device *parent;
- void *match, *aux;
+ struct cfdata *cf;
+ void *aux;
{
- struct cfdata *cf = match;
struct zsc_attach_args *args = aux;
/* Exact match required for keyboard. */
@@ -183,12 +187,12 @@ ms_attach(parent, self, aux)
struct zs_chanstate *cs;
struct cfdata *cf;
int channel, ms_unit;
- int reset, s, tconst;
+ int reset, s;
cf = ms->ms_dev.dv_cfdata;
ms_unit = ms->ms_dev.dv_unit;
channel = args->channel;
- cs = &zsc->zsc_cs[channel];
+ cs = zsc->zsc_cs[channel];
cs->cs_private = ms;
cs->cs_ops = &zsops_ms;
ms->ms_cs = cs;
@@ -196,16 +200,15 @@ ms_attach(parent, self, aux)
printf("\n");
/* Initialize the speed, etc. */
- tconst = BPS_TO_TCONST(cs->cs_brg_clk, MS_BPS);
s = splzs();
/* May need reset... */
reset = (channel == 0) ?
ZSWR9_A_RESET : ZSWR9_B_RESET;
zs_write_reg(cs, 9, reset);
/* These are OK as set by zscc: WR3, WR4, WR5 */
- cs->cs_preg[5] |= ZSWR5_DTR | ZSWR5_RTS;
- cs->cs_preg[12] = tconst;
- cs->cs_preg[13] = tconst >> 8;
+ /* We don't care about status or tx interrupts. */
+ cs->cs_preg[1] = ZSWR1_RIE;
+ (void) zs_set_speed(cs, MS_BPS);
zs_loadchannelregs(cs);
splx(s);
@@ -225,7 +228,7 @@ msopen(dev, flags, mode, p)
struct proc *p;
{
struct ms_softc *ms;
- int error, s, unit;
+ int unit;
unit = minor(dev);
if (unit >= ms_cd.cd_ndevs)
@@ -339,6 +342,9 @@ mspoll(dev, events, p)
* Middle layer (translator)
****************************************************************/
+static void ms_input __P((struct ms_softc *, int c));
+
+
/*
* Called by our ms_softint() routine on input.
*/
@@ -480,6 +486,11 @@ out:
* Interface to the lower layer (zscc)
****************************************************************/
+static void ms_rxint __P((struct zs_chanstate *));
+static void ms_txint __P((struct zs_chanstate *));
+static void ms_stint __P((struct zs_chanstate *));
+static void ms_softint __P((struct zs_chanstate *));
+
static void
ms_rxint(cs)
register struct zs_chanstate *cs;
@@ -572,7 +583,6 @@ ms_softint(cs)
register int get, c, s;
int intr_flags;
register u_short ring_data;
- register u_char rr0, rr1;
ms = cs->cs_private;