summaryrefslogtreecommitdiff
path: root/sys/arch/i386/isa
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2006-12-28 20:50:27 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2006-12-28 20:50:27 +0000
commit3f4b1eb0600c478d611cbe6c62e480b4d3ce739f (patch)
treec6fc1813cffb16cc97671114cdc3b54754987c90 /sys/arch/i386/isa
parent0120d5b8c1276e772173c88de8aa624dd1594628 (diff)
Support for ST16C654 chips, however these aren't detected as such, so the
attachment code has to know better for now; from Alexei G. Malinin (alexei.malinin@inetcomm.ru)
Diffstat (limited to 'sys/arch/i386/isa')
-rw-r--r--sys/arch/i386/isa/pccom.c11
-rw-r--r--sys/arch/i386/isa/pccomvar.h3
2 files changed, 12 insertions, 2 deletions
diff --git a/sys/arch/i386/isa/pccom.c b/sys/arch/i386/isa/pccom.c
index a37b083823b..a8b11944d59 100644
--- a/sys/arch/i386/isa/pccom.c
+++ b/sys/arch/i386/isa/pccom.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pccom.c,v 1.55 2006/09/19 11:06:34 jsg Exp $ */
+/* $OpenBSD: pccom.c,v 1.56 2006/12/28 20:50:21 miod Exp $ */
/* $NetBSD: com.c,v 1.82.4.1 1996/06/02 09:08:00 mrg Exp $ */
/*
@@ -541,6 +541,7 @@ comopen(dev_t dev, int flag, int mode, struct proc *p)
switch (sc->sc_uarttype) {
case COM_UART_ST16650:
case COM_UART_ST16650V2:
+ case COM_UART_ST16C654:
case COM_UART_XR16850:
case COM_UART_OX16C950:
bus_space_write_1(iot, ioh, com_lcr, LCR_EFR);
@@ -571,6 +572,12 @@ comopen(dev_t dev, int flag, int mode, struct proc *p)
else
fifo |= FIFO_RCV_TRIGGER_28|FIFO_XMT_TRIGGER_30;
break;
+ case COM_UART_ST16C654:
+ if (tp->t_ispeed <= 1200)
+ fifo |= FIFO_RCV3_TRIGGER_8|FIFO_XMT3_TRIGGER_8; /* XXX */
+ else
+ fifo |= FIFO_RCV3_TRIGGER_60|FIFO_XMT3_TRIGGER_56;
+ break;
case COM_UART_XR16850:
case COM_UART_OX16C950:
pccom_xr16850_fifo_init(iot, ioh);
@@ -748,6 +755,7 @@ compwroff(struct com_softc *sc)
switch (sc->sc_uarttype) {
case COM_UART_ST16650:
case COM_UART_ST16650V2:
+ case COM_UART_ST16C654:
case COM_UART_XR16850:
case COM_UART_OX16C950:
bus_space_write_1(iot, ioh, com_lcr, LCR_EFR);
@@ -1018,6 +1026,7 @@ comparam(struct tty *tp, struct termios *t)
else
fifo |= FIFO_RCV_TRIGGER_28|FIFO_XMT_TRIGGER_30;
break;
+ case COM_UART_ST16C654:
case COM_UART_XR16850:
case COM_UART_OX16C950:
if (t->c_ispeed <= 1200)
diff --git a/sys/arch/i386/isa/pccomvar.h b/sys/arch/i386/isa/pccomvar.h
index 64a18db08ba..1119762240c 100644
--- a/sys/arch/i386/isa/pccomvar.h
+++ b/sys/arch/i386/isa/pccomvar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pccomvar.h,v 1.18 2006/07/31 11:06:20 mickey Exp $ */
+/* $OpenBSD: pccomvar.h,v 1.19 2006/12/28 20:50:21 miod Exp $ */
/* $NetBSD: comvar.h,v 1.5 1996/05/05 19:50:47 christos Exp $ */
/*
@@ -70,6 +70,7 @@ struct com_softc {
#define COM_UART_ST16650 0x05 /* no working fifo */
#define COM_UART_ST16650V2 0x06 /* 32 byte fifo */
#define COM_UART_TI16750 0x07 /* 64 byte fifo */
+#define COM_UART_ST16C654 0x08 /* 64 bytes fifo */
#define COM_UART_XR16850 0x10 /* 128 byte fifo */
#define COM_UART_OX16C950 0x12 /* 128 byte fifo */
u_char sc_uartrev;