PERFORCE change 36742 for review

Marcel Moolenaar marcel at FreeBSD.org
Sat Aug 23 02:09:26 PDT 2003


http://perforce.freebsd.org/chv.cgi?CH=36742

Change 36742 by marcel at marcel_nfs on 2003/08/23 00:03:15

	Move "signals" in ns8250_softc to "sc_hwsig" in uart_softc.
	All hardware drivers need a place to keep track of signals,
	so we might as well provide a service. The abstract driver
	does not use this field.

Affected files ...

.. //depot/projects/uart/dev/uart/uart_bus.h#16 edit
.. //depot/projects/uart/dev/uart/uart_dev_ns8250.c#19 edit

Differences ...

==== //depot/projects/uart/dev/uart/uart_bus.h#16 (text+ko) ====

@@ -115,6 +115,7 @@
 	int		sc_txbusy:1;	/* This UART is transmitting. */
 
 	int		sc_altbrk;	/* State for alt break sequence. */
+	int		sc_hwsig;	/* Signal state. Used by HW driver. */
 
 	/* Receiver data. */
 	uint16_t	*sc_rxbuf;

==== //depot/projects/uart/dev/uart/uart_dev_ns8250.c#19 (text+ko) ====

@@ -339,7 +339,6 @@
 	uint8_t		fcr;
 	uint8_t		ier;
 	uint8_t		mcr;
-	int		signals;
 };
 
 static int ns8250_bus_attach(struct uart_softc *);
@@ -397,9 +396,9 @@
 	ns8250_bus_flush(sc, UART_FLUSH_RECEIVER|UART_FLUSH_TRANSMITTER);
 
 	if (ns8250->mcr & MCR_DTR)
-		ns8250->signals |= UART_SIG_DTR;
+		sc->sc_hwsig |= UART_SIG_DTR;
 	if (ns8250->mcr & MCR_RTS)
-		ns8250->signals |= UART_SIG_RTS;
+		sc->sc_hwsig |= UART_SIG_RTS;
 	ns8250_bus_getsig(sc);
 
 	ns8250_clrint(bas);
@@ -440,17 +439,16 @@
 static int
 ns8250_bus_getsig(struct uart_softc *sc)
 {
-	struct ns8250_softc *ns8250 = (struct ns8250_softc*)sc;
+	int sig;
 	uint8_t msr;
-	int sig;
 
 	msr = uart_getreg(&sc->sc_bas, REG_MSR);
-	sig = ns8250->signals;
+	sig = sc->sc_hwsig;
 	SIGCHG(msr & MSR_DSR, sig, UART_SIG_DSR, UART_SIG_DDSR);
 	SIGCHG(msr & MSR_CTS, sig, UART_SIG_CTS, UART_SIG_DCTS);
 	SIGCHG(msr & MSR_DCD, sig, UART_SIG_DCD, UART_SIG_DDCD);
 	SIGCHG(msr & MSR_RI,  sig, UART_SIG_RI,  UART_SIG_DRI);
-	ns8250->signals = sig & ~UART_SIGMASK_DELTA;
+	sc->sc_hwsig = sig & ~UART_SIGMASK_DELTA;
 	return (sig);
 }
 
@@ -652,17 +650,17 @@
 	uint8_t lcr;
 
 	if (sig & UART_SIG_DDTR) {
-		SIGCHG(sig & UART_SIG_DTR, ns8250->signals, UART_SIG_DTR,
+		SIGCHG(sig & UART_SIG_DTR, sc->sc_hwsig, UART_SIG_DTR,
 		    UART_SIG_DDTR);
 	}
 	if (sig & UART_SIG_DRTS) {
-		SIGCHG(sig & UART_SIG_RTS, ns8250->signals, UART_SIG_RTS,
+		SIGCHG(sig & UART_SIG_RTS, sc->sc_hwsig, UART_SIG_RTS,
 		    UART_SIG_DRTS);
 	}
 	ns8250->mcr &= ~(MCR_DTR|MCR_RTS);
-	if (ns8250->signals & UART_SIG_DTR)
+	if (sc->sc_hwsig & UART_SIG_DTR)
 		ns8250->mcr |= MCR_DTR;
-	if (ns8250->signals & UART_SIG_RTS)
+	if (sc->sc_hwsig & UART_SIG_RTS)
 		ns8250->mcr |= MCR_RTS;
 	uart_setreg(&sc->sc_bas, REG_MCR, ns8250->mcr);
 	uart_barrier(&sc->sc_bas);


More information about the p4-projects mailing list