diff options
| author | jmcneill <jmcneill@NetBSD.org> | 2015-12-14 23:57:30 +0000 |
|---|---|---|
| committer | jmcneill <jmcneill@NetBSD.org> | 2015-12-14 23:57:30 +0000 |
| commit | 7cf98de7ae864bee6687940749bcd0a6a615c3a8 (patch) | |
| tree | a71807dbefc4a779bc2460a1cebf4c06a2c4f32d /sys/dev | |
| parent | 7f6f5e2878e548f241cf4259c724c76d09d1d8f9 (diff) | |
Fix TX FIFO on Tegra
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/ic/com.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/sys/dev/ic/com.c b/sys/dev/ic/com.c index 7e5242f4a1e..4238bff96b8 100644 --- a/sys/dev/ic/com.c +++ b/sys/dev/ic/com.c @@ -1,4 +1,4 @@ -/* $NetBSD: com.c,v 1.337 2015/11/02 17:45:13 christos Exp $ */ +/* $NetBSD: com.c,v 1.338 2015/12/14 23:57:30 jmcneill Exp $ */ /*- * Copyright (c) 1998, 1999, 2004, 2008 The NetBSD Foundation, Inc. @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.337 2015/11/02 17:45:13 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.338 2015/12/14 23:57:30 jmcneill Exp $"); #include "opt_com.h" #include "opt_ddb.h" @@ -467,6 +467,14 @@ com_attach_subr(struct com_softc *sc) SET(sc->sc_hwflags, COM_HW_FIFO); SET(sc->sc_hwflags, COM_HW_NOIEN); goto fifodelay; + + case COM_TYPE_TEGRA: + sc->sc_fifolen = 8; + fifo_msg = "Tegra UART, working fifo"; + SET(sc->sc_hwflags, COM_HW_FIFO); + CSR_WRITE_1(regsp, COM_REG_FIFO, + FIFO_ENABLE | FIFO_RCV_RST | FIFO_XMT_RST | FIFO_TRIGGER_1); + goto fifodelay; } sc->sc_fifolen = 1; @@ -1468,17 +1476,20 @@ comparam(struct tty *tp, struct termios *t) * overflows. * * Otherwise set it a bit higher. */ - if (sc->sc_type == COM_TYPE_HAYESP) + 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)) { + } else if (sc->sc_type == COM_TYPE_TEGRA) { + sc->sc_fifo = FIFO_ENABLE | FIFO_TRIGGER_1; + } 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 + } else { sc->sc_fifo = 0; + } if (sc->sc_type == COM_TYPE_INGENIC) sc->sc_fifo |= FIFO_UART_ON; |
