From 60573f92d1c7017b5013930c63bc57efea2e17ff Mon Sep 17 00:00:00 2001 From: sekiya Date: Sat, 10 Jan 2004 03:18:23 +0000 Subject: [PATCH] Clean up console device selection logic. --- sys/arch/sgimips/sgimips/console.c | 99 +++++++++++++++--------------- 1 file changed, 48 insertions(+), 51 deletions(-) diff --git a/sys/arch/sgimips/sgimips/console.c b/sys/arch/sgimips/sgimips/console.c index ffce6f645f00..66b7c61a4db7 100644 --- a/sys/arch/sgimips/sgimips/console.c +++ b/sys/arch/sgimips/sgimips/console.c @@ -1,4 +1,4 @@ -/* $NetBSD: console.c,v 1.17 2004/01/01 13:29:08 sekiya Exp $ */ +/* $NetBSD: console.c,v 1.18 2004/01/10 03:18:23 sekiya Exp $ */ /* * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University. @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: console.c,v 1.17 2004/01/01 13:29:08 sekiya Exp $"); +__KERNEL_RCSID(0, "$NetBSD: console.c,v 1.18 2004/01/10 03:18:23 sekiya Exp $"); #include "opt_kgdb.h" #include "opt_machtypes.h" @@ -79,67 +79,64 @@ consinit() consdev = ARCBIOS->GetEnvironmentVariable("ConsoleOut"); if (consdev == NULL) { printf("WARNING: ConsoleOut environment variable not set\n"); - goto force_arcs; + return; } /* Get comm speed from ARCS */ dbaud = ARCBIOS->GetEnvironmentVariable("dbaud"); speed = strtoul(dbaud, NULL, 10); + switch (mach_type) { #if defined(IP2X) - if (mach_type == MACH_SGI_IP22) { - if (strcmp(consdev, "video()") == 0) { - /* XXX Assumes that if output is video() input must be - * keyboard(). */ + case MACH_SGI_IP20: + case MACH_SGI_IP22: +#if (NGIO > 0) && (NPCKBC > 0) + if (strcmp(consdev, "video()") == 0) { + /* XXX Assumes that if output is video() + input must be keyboard(). */ + gio_cnattach(); -#if (NGIO > 0) - gio_cnattach(); + /* XXX Hardcoded iotag, HPC address XXX */ + pckbc_cnattach(1, + 0x1fb80000+HPC_PBUS_CH6_DEVREGS+IOC_KB_REGS, + KBCMDP, PCKBC_KBD_SLOT); + } #endif - -#if (NPCKBC > 0) - /* XXX Hardcoded iotag, HPC address XXX */ - pckbc_cnattach(1, - 0x1fb80000 + HPC_PBUS_CH6_DEVREGS + IOC_KB_REGS, - KBCMDP, PCKBC_KBD_SLOT); +#if (NZSC > 0) + if ( (strlen(consdev) == 9) && + (!strncmp(consdev, "serial", 6)) && + (consdev[7] == '0' || consdev[7] == '1')) { + cn_tab = &zs_cn; + (*cn_tab->cn_init)(cn_tab); + } #endif - return; - } - } + break; +#endif /* IP2X */ + +#if defined(IP32) + case MACH_SGI_IP32: +#if (NCOM > 0) + if ( (strlen(consdev) == 9) && + (!strncmp(consdev, "serial", 6)) && + (consdev[7] == '0' || consdev[7] == '1')) { + delay(10000); + /* XXX: hardcoded MACE iotag */ + if (comcnattach(3, + MIPS_PHYS_TO_KSEG1(MACE_BASE + + ((consdev[7] == '0') ? + MACE_ISA_SER1_BASE:MACE_ISA_SER2_BASE)), + speed, COM_FREQ, COM_TYPE_NORMAL, + comcnmode) == 0) + break; + } #endif - -#if (defined(IP2X)) && (NZSC > 0) - if ( (mach_type == MACH_SGI_IP20) || (mach_type == MACH_SGI_IP22) ) { - if (strlen(consdev) == 9 && - strncmp(consdev, "serial", 6) == 0 && - (consdev[7] == '0' || consdev[7] == '1')) { - cn_tab = &zs_cn; - (*cn_tab->cn_init)(cn_tab); - return; - } + panic("ip32 supports serial console only. sorry."); + break; +#endif /* IP32 */ + default: + printf("Using ARCS for console I/O.\n"); + break; } -#endif /* (IP2X) && (NZSC > 0) */ - -#if defined(IP32) && (NCOM > 0) - if (mach_type == MACH_SGI_IP32) { - if (strlen(consdev) == 9 && - strncmp(consdev, "serial", 6) == 0 && - (consdev[7] == '0' || consdev[7] == '1')) { - delay(10000); - /* XXX: hardcoded MACE iotag */ - if (comcnattach(3, MIPS_PHYS_TO_KSEG1(MACE_BASE + - ((consdev[7] == '0') ? - MACE_ISA_SER1_BASE : MACE_ISA_SER2_BASE)), - speed, COM_FREQ, COM_TYPE_NORMAL, comcnmode) == 0) - return; - - panic("can't init serial hardware console!"); - } - panic("ip32 supports serial console only. sorry."); - } -#endif /* IP32 && (NCOM > 0) */ - - force_arcs: - printf("Using ARCS for console I/O.\n"); } #if defined(KGDB)