diff options
author | marcel <marcel@FreeBSD.org> | 2005-01-30 22:14:30 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2005-01-30 22:14:30 +0000 |
commit | 456a3116c9b3bbb023f006fb186df785e0e19f57 (patch) | |
tree | c95cd487a95a15ec2eaf1b2d5be69b48f99d7dd4 /sys/dev/uart | |
parent | 19b479b41fcc8ce21f9b6cc851406e12d90f73a3 (diff) | |
download | FreeBSD-src-456a3116c9b3bbb023f006fb186df785e0e19f57.zip FreeBSD-src-456a3116c9b3bbb023f006fb186df785e0e19f57.tar.gz |
Fix a logic bug that caused DSR to never be deasserted.
MFC after: 5 days
Diffstat (limited to 'sys/dev/uart')
-rw-r--r-- | sys/dev/uart/uart_dev_sab82532.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/uart/uart_dev_sab82532.c b/sys/dev/uart/uart_dev_sab82532.c index 0da0891..112dca4 100644 --- a/sys/dev/uart/uart_dev_sab82532.c +++ b/sys/dev/uart/uart_dev_sab82532.c @@ -459,7 +459,7 @@ sab82532_bus_getsig(struct uart_softc *sc) SIGCHG(star & SAB_STAR_CTS, sig, SER_CTS, SER_DCTS); vstr = uart_getreg(bas, SAB_VSTR); SIGCHG(vstr & SAB_VSTR_CD, sig, SER_DCD, SER_DDCD); - pvr = uart_getreg(bas, SAB_PVR); + pvr = ~uart_getreg(bas, SAB_PVR); switch (bas->chan) { case 1: pvr &= SAB_PVR_DSR_A; @@ -468,7 +468,7 @@ sab82532_bus_getsig(struct uart_softc *sc) pvr &= SAB_PVR_DSR_B; break; } - SIGCHG(~pvr, sig, SER_DSR, SER_DDSR); + SIGCHG(pvr, sig, SER_DSR, SER_DDSR); mtx_unlock_spin(&sc->sc_hwmtx); new = sig & ~UART_SIGMASK_DELTA; } while (!atomic_cmpset_32(&sc->sc_hwsig, old, new)); |