Module Name:    src
Committed By:   jmcneill
Date:           Tue Sep  3 15:32:55 UTC 2013

Modified Files:
        src/sys/dev/ic: com.c comreg.h comvar.h

Log Message:
no EFR on tl16c750, use AFE bit on MCR reg instead for flow control


To generate a diff of this commit:
cvs rdiff -u -r1.314 -r1.315 src/sys/dev/ic/com.c
cvs rdiff -u -r1.20 -r1.21 src/sys/dev/ic/comreg.h
cvs rdiff -u -r1.76 -r1.77 src/sys/dev/ic/comvar.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/ic/com.c
diff -u src/sys/dev/ic/com.c:1.314 src/sys/dev/ic/com.c:1.315
--- src/sys/dev/ic/com.c:1.314	Sun Sep  1 04:58:15 2013
+++ src/sys/dev/ic/com.c	Tue Sep  3 15:32:55 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: com.c,v 1.314 2013/09/01 04:58:15 kiyohara Exp $ */
+/* $NetBSD: com.c,v 1.315 2013/09/03 15:32:55 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.314 2013/09/01 04:58:15 kiyohara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.315 2013/09/03 15:32:55 jmcneill Exp $");
 
 #include "opt_com.h"
 #include "opt_ddb.h"
@@ -505,7 +505,7 @@ com_attach_subr(struct com_softc *sc)
 			    ISSET(iir2, IIR_64B_FIFO)) {
 				/* It is TL16C750. */
 				sc->sc_fifolen = 64;
-				SET(sc->sc_hwflags, COM_HW_FLOW);
+				SET(sc->sc_hwflags, COM_HW_AFE);
 			} else
 				CSR_WRITE_1(regsp, COM_REG_FIFO, fcr);
 
@@ -1358,7 +1358,11 @@ comparam(struct tty *tp, struct termios 
 		sc->sc_mcr_dtr = MCR_DTR;
 		sc->sc_mcr_rts = MCR_RTS;
 		sc->sc_msr_cts = MSR_CTS;
-		sc->sc_efr = EFR_AUTORTS | EFR_AUTOCTS;
+		if (ISSET(sc->sc_hwflags, COM_HW_AFE)) {
+			SET(sc->sc_mcr, MCR_AFE);
+		} else {
+			sc->sc_efr = EFR_AUTORTS | EFR_AUTOCTS;
+		}
 	} else if (ISSET(t->c_cflag, MDMBUF)) {
 		/*
 		 * For DTR/DCD flow control, make sure we don't toggle DTR for
@@ -1367,7 +1371,11 @@ comparam(struct tty *tp, struct termios 
 		sc->sc_mcr_dtr = 0;
 		sc->sc_mcr_rts = MCR_DTR;
 		sc->sc_msr_cts = MSR_DCD;
-		sc->sc_efr = 0;
+		if (ISSET(sc->sc_hwflags, COM_HW_AFE)) {
+			CLR(sc->sc_mcr, MCR_AFE);
+		} else {
+			sc->sc_efr = 0;
+		}
 	} else {
 		/*
 		 * If no flow control, then always set RTS.  This will make
@@ -1377,7 +1385,11 @@ comparam(struct tty *tp, struct termios 
 		sc->sc_mcr_dtr = MCR_DTR | MCR_RTS;
 		sc->sc_mcr_rts = 0;
 		sc->sc_msr_cts = 0;
-		sc->sc_efr = 0;
+		if (ISSET(sc->sc_hwflags, COM_HW_AFE)) {
+			CLR(sc->sc_mcr, MCR_AFE);
+		} else {
+			sc->sc_efr = 0;
+		}
 		if (ISSET(sc->sc_mcr, MCR_DTR))
 			SET(sc->sc_mcr, MCR_RTS);
 		else

Index: src/sys/dev/ic/comreg.h
diff -u src/sys/dev/ic/comreg.h:1.20 src/sys/dev/ic/comreg.h:1.21
--- src/sys/dev/ic/comreg.h:1.20	Sun Sep  1 04:58:15 2013
+++ src/sys/dev/ic/comreg.h	Tue Sep  3 15:32:55 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: comreg.h,v 1.20 2013/09/01 04:58:15 kiyohara Exp $	*/
+/*	$NetBSD: comreg.h,v 1.21 2013/09/03 15:32:55 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 1991 The Regents of the University of California.
@@ -111,6 +111,7 @@
 #define MCR_PRESCALE	0x80	/* 16650/16950: Baud rate prescaler select */
 #define MCR_TCR_TLR	0x40	/* OMAP: enables access to the TCR & TLR regs */
 #define MCR_XONENABLE	0x20	/* OMAP XON_EN */
+#define MCR_AFE		0x20	/* tl16c750: Flow Control Enable */
 #define	MCR_LOOPBACK	0x10	/* Loop test: echos from TX to RX */
 #define	MCR_IENABLE	0x08	/* Out2: enables UART interrupts */
 #define	MCR_DRS		0x04	/* Out1: resets some internal modems */

Index: src/sys/dev/ic/comvar.h
diff -u src/sys/dev/ic/comvar.h:1.76 src/sys/dev/ic/comvar.h:1.77
--- src/sys/dev/ic/comvar.h:1.76	Sun Sep  1 04:51:24 2013
+++ src/sys/dev/ic/comvar.h	Tue Sep  3 15:32:55 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: comvar.h,v 1.76 2013/09/01 04:51:24 kiyohara Exp $	*/
+/*	$NetBSD: comvar.h,v 1.77 2013/09/03 15:32:55 jmcneill Exp $	*/
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All rights reserved.
@@ -69,6 +69,7 @@ int com_is_console(bus_space_tag_t, bus_
 #define	COM_HW_KGDB	0x80
 #define	COM_HW_TXFIFO_DISABLE	0x100
 #define	COM_HW_NO_TXPRELOAD	0x200
+#define	COM_HW_AFE	0x400
 
 /* Buffer size for character buffer */
 #ifndef COM_RING_SIZE

Reply via email to