Attach the sunkbd line discipline to zstty.
This commit is contained in:
parent
954a7b9824
commit
17b69d1833
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: kd.c,v 1.14 2000/11/02 00:21:03 eeh Exp $ */
|
/* $NetBSD: kd.c,v 1.15 2000/11/09 00:02:54 eeh Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1996 The NetBSD Foundation, Inc.
|
* Copyright (c) 1996 The NetBSD Foundation, Inc.
|
||||||
|
@ -512,6 +512,7 @@ cons_attach_input(cc, cn)
|
||||||
cc->cc_upstream = kd_cons_input;
|
cc->cc_upstream = kd_cons_input;
|
||||||
|
|
||||||
/* Attach lower level. */
|
/* Attach lower level. */
|
||||||
|
cn_hw->cn_dev = cn->cn_dev;
|
||||||
cn_hw->cn_pollc = cn->cn_pollc;
|
cn_hw->cn_pollc = cn->cn_pollc;
|
||||||
cn_hw->cn_getc = cn->cn_getc;
|
cn_hw->cn_getc = cn->cn_getc;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: zs.c,v 1.25 2000/07/10 01:11:14 eeh Exp $ */
|
/* $NetBSD: zs.c,v 1.26 2000/11/09 00:02:54 eeh Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1996 The NetBSD Foundation, Inc.
|
* Copyright (c) 1996 The NetBSD Foundation, Inc.
|
||||||
|
@ -69,11 +69,13 @@
|
||||||
|
|
||||||
#include <dev/cons.h>
|
#include <dev/cons.h>
|
||||||
#include <dev/ic/z8530reg.h>
|
#include <dev/ic/z8530reg.h>
|
||||||
|
#include <dev/sun/kbd_ms_ttyvar.h>
|
||||||
#include <ddb/db_output.h>
|
#include <ddb/db_output.h>
|
||||||
|
|
||||||
#include <sparc64/dev/cons.h>
|
#include <sparc64/dev/cons.h>
|
||||||
|
|
||||||
#include "kbd.h" /* NKBD */
|
#include "kbd.h" /* NKBD */
|
||||||
|
#include "ms.h" /* NMS */
|
||||||
#include "zs.h" /* NZS */
|
#include "zs.h" /* NZS */
|
||||||
|
|
||||||
/* Make life easier for the initialized arrays here. */
|
/* Make life easier for the initialized arrays here. */
|
||||||
|
@ -288,6 +290,8 @@ zs_attach(zsc, zsd, pri)
|
||||||
*/
|
*/
|
||||||
for (channel = 0; channel < 2; channel++) {
|
for (channel = 0; channel < 2; channel++) {
|
||||||
struct zschan *zc;
|
struct zschan *zc;
|
||||||
|
struct device *child;
|
||||||
|
extern struct cfdriver zstty_cd; /* in ioconf.c */
|
||||||
|
|
||||||
zsc_args.channel = channel;
|
zsc_args.channel = channel;
|
||||||
cs = &zsc->zsc_cs_store[channel];
|
cs = &zsc->zsc_cs_store[channel];
|
||||||
|
@ -300,6 +304,7 @@ zs_attach(zsc, zsd, pri)
|
||||||
|
|
||||||
zc = (channel == 0) ? &zsd->zs_chan_a : &zsd->zs_chan_b;
|
zc = (channel == 0) ? &zsd->zs_chan_a : &zsd->zs_chan_b;
|
||||||
|
|
||||||
|
zsc_args.consdev = NULL;
|
||||||
zsc_args.hwflags = zs_console_flags(zsc->zsc_promunit,
|
zsc_args.hwflags = zs_console_flags(zsc->zsc_promunit,
|
||||||
zsc->zsc_node,
|
zsc->zsc_node,
|
||||||
channel);
|
channel);
|
||||||
|
@ -346,14 +351,53 @@ zs_attach(zsc, zsd, pri)
|
||||||
* Look for a child driver for this channel.
|
* Look for a child driver for this channel.
|
||||||
* The child attach will setup the hardware.
|
* The child attach will setup the hardware.
|
||||||
*/
|
*/
|
||||||
if (!config_found(&zsc->zsc_dev, (void *)&zsc_args, zs_print)) {
|
if (!(child =
|
||||||
|
config_found(&zsc->zsc_dev, (void *)&zsc_args, zs_print))) {
|
||||||
/* No sub-driver. Just reset it. */
|
/* No sub-driver. Just reset it. */
|
||||||
u_char reset = (channel == 0) ?
|
u_char reset = (channel == 0) ?
|
||||||
ZSWR9_A_RESET : ZSWR9_B_RESET;
|
ZSWR9_A_RESET : ZSWR9_B_RESET;
|
||||||
s = splzs();
|
s = splzs();
|
||||||
zs_write_reg(cs, 9, reset);
|
zs_write_reg(cs, 9, reset);
|
||||||
splx(s);
|
splx(s);
|
||||||
|
}
|
||||||
|
#if (NKBD > 0) || (NMS > 0)
|
||||||
|
/*
|
||||||
|
* If this was a zstty it has a keyboard
|
||||||
|
* property on it we need to attach the
|
||||||
|
* sunkbd and sunms line disciplines.
|
||||||
|
*/
|
||||||
|
if (child
|
||||||
|
&& (child->dv_cfdata->cf_driver == &zstty_cd)
|
||||||
|
&& (getproplen(zsc->zsc_node, "keyboard") == 0)) {
|
||||||
|
struct kbd_ms_tty_attach_args kma;
|
||||||
|
struct zstty_softc {
|
||||||
|
/* The following are the only fields we need here */
|
||||||
|
struct device zst_dev;
|
||||||
|
struct tty *zst_tty;
|
||||||
|
struct zs_chanstate *zst_cs;
|
||||||
|
} *zst = (struct zstty_softc *)child;
|
||||||
|
struct tty *tp;
|
||||||
|
int maj;
|
||||||
|
|
||||||
|
kma.kmta_tp = tp = zst->zst_tty;
|
||||||
|
kma.kmta_dev = tp->t_dev;
|
||||||
|
kma.kmta_consdev = zsc_args.consdev;
|
||||||
|
|
||||||
|
/* Attach 'em if we got 'em. */
|
||||||
|
#if (NKBD > 0)
|
||||||
|
if (channel == 0) {
|
||||||
|
kma.kmta_name = "keyboard";
|
||||||
|
config_found(child, (void *)&kma, NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if (NMS > 0)
|
||||||
|
if (channel == 1) {
|
||||||
|
kma.kmta_name = "mouse";
|
||||||
|
config_found(child, (void *)&kma, NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -381,18 +425,6 @@ zs_attach(zsc, zsd, pri)
|
||||||
zs_write_reg(cs, 9, zs_init_reg[9]);
|
zs_write_reg(cs, 9, zs_init_reg[9]);
|
||||||
splx(s);
|
splx(s);
|
||||||
|
|
||||||
#if 0
|
|
||||||
/*
|
|
||||||
* XXX: L1A hack - We would like to be able to break into
|
|
||||||
* the debugger during the rest of autoconfiguration, so
|
|
||||||
* lower interrupts just enough to let zs interrupts in.
|
|
||||||
* This is done after both zs devices are attached.
|
|
||||||
*/
|
|
||||||
if (zsc->zsc_promunit == 1) {
|
|
||||||
printf("zs1: enabling zs interrupts\n");
|
|
||||||
(void)splfd(); /* XXX: splzs - 1 */
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
Loading…
Reference in New Issue