Date: Sat, 23 Aug 2003 00:03:51 -0700 (PDT) From: Marcel Moolenaar <marcel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 36742 for review Message-ID: <200308230703.h7N73pVa091105@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=36742 Change 36742 by marcel@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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200308230703.h7N73pVa091105>