Module Name: src Committed By: tsutsui Date: Thu Apr 17 12:35:24 UTC 2014
Modified Files: src/sys/arch/hp300/stand/common: apci.c Log Message: Check the service switch on 425e to select apci serial console. Taken from OpenBSD/hp300. See the following comment for details: >> * Check the service switch. On the 425e, this is a physical >> * switch, unlike other frodo-based machines, so we can use it >> * as a serial vs internal video selector, since the PROM can not >> * be configured for serial console. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/sys/arch/hp300/stand/common/apci.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/hp300/stand/common/apci.c diff -u src/sys/arch/hp300/stand/common/apci.c:1.12 src/sys/arch/hp300/stand/common/apci.c:1.13 --- src/sys/arch/hp300/stand/common/apci.c:1.12 Thu Apr 10 18:10:09 2014 +++ src/sys/arch/hp300/stand/common/apci.c Thu Apr 17 12:35:24 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: apci.c,v 1.12 2014/04/10 18:10:09 tsutsui Exp $ */ +/* $NetBSD: apci.c,v 1.13 2014/04/17 12:35:24 tsutsui Exp $ */ /*- * Copyright (c) 1997, 1999 The NetBSD Foundation, Inc. @@ -84,9 +84,7 @@ struct apciregs *apcicnaddr = 0; void apciprobe(struct consdev *cp) { - - apcicnaddr = - (void *)IIOV(INTIOBASE + FRODO_BASE + FRODO_APCI_OFFSET(1)); + volatile uint8_t *frodoregs; cp->cn_pri = CN_DEAD; @@ -97,12 +95,26 @@ apciprobe(struct consdev *cp) if (machineid != HP_425 || mmuid != MMUID_425_E) return; + /* + * Check the service switch. On the 425e, this is a physical + * switch, unlike other frodo-based machines, so we can use it + * as a serial vs internal video selector, since the PROM can not + * be configured for serial console. + */ + frodoregs = (volatile u_int8_t *)IIOV(INTIOBASE + FRODO_BASE); + if (badaddr((char *)frodoregs) == 0 && + (frodoregs[FRODO_IISR] & FRODO_IISR_SERVICE) == 0) + cp->cn_pri = CN_REMOTE; + else + cp->cn_pri = CN_NORMAL; + #ifdef FORCEAPCICONSOLE cp->cn_pri = CN_REMOTE; -#else - cp->cn_pri = CN_NORMAL; #endif curcons_scode = -2; + + apcicnaddr = + (void *)IIOV(INTIOBASE + FRODO_BASE + FRODO_APCI_OFFSET(1)); } void