diff options
| author | gwr <gwr@NetBSD.org> | 1996-12-17 20:46:11 +0000 |
|---|---|---|
| committer | gwr <gwr@NetBSD.org> | 1996-12-17 20:46:11 +0000 |
| commit | 1169ecb0a211679ab188a3f09244d9d4e51ec466 (patch) | |
| tree | 540f07975fc70ae33c3f36ce3ba9c5d67e0a848f /sys/dev/sun | |
| parent | 494730c3764c3cd30198b84085bf802942c93a66 (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.c | 93 | ||||
| -rw-r--r-- | sys/dev/sun/kbd_tables.c | 34 | ||||
| -rw-r--r-- | sys/dev/sun/kbd_tables.h | 14 | ||||
| -rw-r--r-- | sys/dev/sun/kbd_xlate.h | 11 | ||||
| -rw-r--r-- | sys/dev/sun/ms.c | 42 |
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; |
