diff options
author | Kenneth R Westerback <krw@cvs.openbsd.org> | 2008-03-29 15:26:48 +0000 |
---|---|---|
committer | Kenneth R Westerback <krw@cvs.openbsd.org> | 2008-03-29 15:26:48 +0000 |
commit | 83316508e2fae3b8d8e394ac1efacbf618cba949 (patch) | |
tree | a31828cf5f3b5fa0e7c8f3ab243f3f9f63624d82 /sys/arch/i386 | |
parent | 52cf24ee419f81b6971a23c36b0372212987481e (diff) |
Fix amd64 and i386 serial console handling for non-default speeds. Bring
i386 pccom into line with com. Problem reported and first diff by Markus
Hennecke, who also tested and corrected subsequent diffs. Boot messages
and console now work with his 57K serial connections.
Suggestions and ok miod@
Diffstat (limited to 'sys/arch/i386')
-rw-r--r-- | sys/arch/i386/i386/bios.c | 6 | ||||
-rw-r--r-- | sys/arch/i386/isa/pccom.c | 19 |
2 files changed, 12 insertions, 13 deletions
diff --git a/sys/arch/i386/i386/bios.c b/sys/arch/i386/i386/bios.c index f6b2b002788..e566d26e6bd 100644 --- a/sys/arch/i386/i386/bios.c +++ b/sys/arch/i386/i386/bios.c @@ -1,4 +1,4 @@ -/* $OpenBSD: bios.c,v 1.78 2008/03/02 18:01:05 deraadt Exp $ */ +/* $OpenBSD: bios.c,v 1.79 2008/03/29 15:26:47 krw Exp $ */ /* * Copyright (c) 1997-2001 Michael Shalayeff @@ -480,8 +480,8 @@ bios_getopt() #include "com.h" #include "pccom.h" #if NCOM + NPCCOM > 0 - extern int comdefaultrate; /* ic/com.c */ - comdefaultrate = cdp->conspeed; + extern int comconsrate; /* isa/pccom.c */ + comconsrate = cdp->conspeed; #endif #ifdef BIOS_DEBUG printf(" console 0x%x:%d", diff --git a/sys/arch/i386/isa/pccom.c b/sys/arch/i386/isa/pccom.c index 74931000a3f..27413ee143c 100644 --- a/sys/arch/i386/isa/pccom.c +++ b/sys/arch/i386/isa/pccom.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pccom.c,v 1.62 2008/01/23 16:37:56 jsing Exp $ */ +/* $OpenBSD: pccom.c,v 1.63 2008/03/29 15:26:47 krw Exp $ */ /* $NetBSD: com.c,v 1.82.4.1 1996/06/02 09:08:00 mrg Exp $ */ /* @@ -139,14 +139,11 @@ void cominit(bus_space_tag_t, bus_space_handle_t, int); #define CONSPEED B9600 #endif -#if defined(COMCONSOLE) || defined(PCCOMCONSOLE) -int comdefaultrate = CONSPEED; /* XXX why set default? */ -#else int comdefaultrate = TTYDEF_SPEED; -#endif -bus_addr_t comconsaddr; +int comconsrate = CONSPEED; int comconsinit; int comconsattached; +bus_addr_t comconsaddr; bus_space_tag_t comconsiot; bus_space_handle_t comconsioh; tcflag_t comconscflag = TTYDEF_CFLAG; @@ -516,10 +513,13 @@ comopen(dev_t dev, int flag, int mode, struct proc *p) ttychars(tp); tp->t_iflag = TTYDEF_IFLAG; tp->t_oflag = TTYDEF_OFLAG; - if (ISSET(sc->sc_hwflags, COM_HW_CONSOLE)) + if (ISSET(sc->sc_hwflags, COM_HW_CONSOLE)) { tp->t_cflag = comconscflag; - else + tp->t_ispeed = tp->t_ospeed = comconsrate; + } else { tp->t_cflag = TTYDEF_CFLAG; + tp->t_ispeed = tp->t_ospeed = comdefaultrate; + } if (ISSET(sc->sc_swflags, COM_SW_CLOCAL)) SET(tp->t_cflag, CLOCAL); if (ISSET(sc->sc_swflags, COM_SW_CRTSCTS)) @@ -527,7 +527,6 @@ comopen(dev_t dev, int flag, int mode, struct proc *p) if (ISSET(sc->sc_swflags, COM_SW_MDMBUF)) SET(tp->t_cflag, MDMBUF); tp->t_lflag = TTYDEF_LFLAG; - tp->t_ispeed = tp->t_ospeed = comdefaultrate; s = spltty(); @@ -1593,7 +1592,7 @@ comcninit(struct consdev *cp) if (bus_space_map(comconsiot, comconsaddr, COM_NPORTS, 0, &comconsioh)) panic("comcninit: mapping failed"); - cominit(comconsiot, comconsioh, comdefaultrate); + cominit(comconsiot, comconsioh, comconsrate); comconsinit = 0; } |