diff options
| author | tsutsui <tsutsui@NetBSD.org> | 2008-04-11 12:45:08 +0000 |
|---|---|---|
| committer | tsutsui <tsutsui@NetBSD.org> | 2008-04-11 12:45:08 +0000 |
| commit | 435efaffea30b988ac32f2d3a2b03364885b891d (patch) | |
| tree | a89c0bce33653fea1db7cab32a586b54b48d876d /sys/dev | |
| parent | ff8a916efae25e128c07afef430bdbb29437ef2e (diff) | |
If it's a high speed, trim the trigger level down to prevent overflows,
as comment says. The piece of code was removed in rev 1.230,
but it looks an error on reverting of rev 1.228.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/ic/com.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/dev/ic/com.c b/sys/dev/ic/com.c index 75600572868..b3bbf8fca91 100644 --- a/sys/dev/ic/com.c +++ b/sys/dev/ic/com.c @@ -1,4 +1,4 @@ -/* $NetBSD: com.c,v 1.277 2008/03/14 22:47:06 cube Exp $ */ +/* $NetBSD: com.c,v 1.278 2008/04/11 12:45:08 tsutsui Exp $ */ /*- * Copyright (c) 1998, 1999, 2004, 2008 The NetBSD Foundation, Inc. @@ -73,7 +73,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.277 2008/03/14 22:47:06 cube Exp $"); +__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.278 2008/04/11 12:45:08 tsutsui Exp $"); #include "opt_com.h" #include "opt_ddb.h" @@ -1332,10 +1332,14 @@ comparam(struct tty *tp, struct termios *t) */ if (sc->sc_type == COM_TYPE_HAYESP) sc->sc_fifo = FIFO_DMA_MODE | FIFO_ENABLE | FIFO_TRIGGER_8; - else if (ISSET(sc->sc_hwflags, COM_HW_FIFO)) - sc->sc_fifo = FIFO_ENABLE | - (t->c_ospeed <= 1200 ? FIFO_TRIGGER_1 : FIFO_TRIGGER_8); - else + else if (ISSET(sc->sc_hwflags, COM_HW_FIFO)) { + if (t->c_ospeed <= 1200) + sc->sc_fifo = FIFO_ENABLE | FIFO_TRIGGER_1; + else if (t->c_ospeed <= 38400) + sc->sc_fifo = FIFO_ENABLE | FIFO_TRIGGER_8; + else + sc->sc_fifo = FIFO_ENABLE | FIFO_TRIGGER_4; + } else sc->sc_fifo = 0; /* And copy to tty. */ |
