diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/sgi/conf/files.sgi | 6 | ||||
-rw-r--r-- | sys/arch/sgi/dev/wscons_machdep.c | 32 |
2 files changed, 28 insertions, 10 deletions
diff --git a/sys/arch/sgi/conf/files.sgi b/sys/arch/sgi/conf/files.sgi index 70dd2fd625d..0ce6823dca3 100644 --- a/sys/arch/sgi/conf/files.sgi +++ b/sys/arch/sgi/conf/files.sgi @@ -1,4 +1,4 @@ -# $OpenBSD: files.sgi,v 1.15 2007/11/27 15:31:00 jsing Exp $ +# $OpenBSD: files.sgi,v 1.16 2007/12/14 16:16:28 jsing Exp $ # # maxpartitions must be first item in files.${ARCH} # @@ -112,14 +112,14 @@ file arch/sgi/dev/mavb.c mavb include "dev/pckbc/files.pckbc" device mkbc: pckbcslot attach mkbc at macebus -file arch/sgi/dev/mkbc.c mkbc +file arch/sgi/dev/mkbc.c mkbc needs-flag # Raster operations include "dev/rasops/files.rasops" include "dev/wsfont/files.wsfont" # -# wscons console +# wscons console # include "dev/wscons/files.wscons" diff --git a/sys/arch/sgi/dev/wscons_machdep.c b/sys/arch/sgi/dev/wscons_machdep.c index e51ccdcd8b1..e5142925404 100644 --- a/sys/arch/sgi/dev/wscons_machdep.c +++ b/sys/arch/sgi/dev/wscons_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: wscons_machdep.c,v 1.5 2007/11/13 12:01:45 jsing Exp $ */ +/* $OpenBSD: wscons_machdep.c,v 1.6 2007/12/14 16:16:28 jsing Exp $ */ /* * Copyright (c) 2001 Aaron Campbell @@ -36,15 +36,23 @@ #include <machine/autoconf.h> #include <machine/bus.h> +#include <mips64/arcbios.h> + +#include <sgi/dev/mkbcreg.h> +#include <sgi/localbus/macebus.h> + #include <dev/cons.h> +#include <dev/ic/pckbcvar.h> +#include <dev/usb/ukbdvar.h> +#include <dev/wscons/wskbdvar.h> +#include <dev/wscons/wsconsio.h> + +#include "mkbc.h" #include "wsdisplay.h" #if NWSDISPLAY > 0 #include <dev/wscons/wsdisplayvar.h> #endif -#include <dev/wscons/wskbdvar.h> -#include <dev/wscons/wsconsio.h> -#include <dev/usb/ukbdvar.h> cons_decl(ws); @@ -53,19 +61,25 @@ wscnprobe(struct consdev *cp) { int maj; - /* locate the major number */ + /* Locate the major number. */ for (maj = 0; maj < nchrdev; maj++) { if (cdevsw[maj].d_open == wsdisplayopen) break; } if (maj == nchrdev) { - /* we are not in cdevsw[], give up */ + /* We are not in cdevsw[], give up. */ panic("wsdisplay is not in cdevsw[]"); } cp->cn_dev = makedev(maj, 0); - cp->cn_pri = CN_INTERNAL; + + /* Attach as console if necessary. */ + if (strncmp(bios_console, "video", 5) == 0) { + cp->cn_pri = CN_REMOTE; + } else { + cp->cn_pri = CN_INTERNAL; + } } void @@ -78,6 +92,10 @@ static int initted; initted = 1; +#if NMKBC > 0 + if (!mkbc_cnattach(&macebus_tag, 0x00320000, PCKBC_KBD_SLOT)) + return; +#endif #if notyet ukbd_cnattach(); #endif |