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