summaryrefslogtreecommitdiffstats
path: root/sys/arm/at91
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2014-01-26 04:57:58 +0000
committerimp <imp@FreeBSD.org>2014-01-26 04:57:58 +0000
commit741e52a6b9b63535507afa219c9d9b0a7c742c7b (patch)
treee9f16c5dedd9e7f19de305de2f301e8a6b29ec46 /sys/arm/at91
parenta15825e0be367072f4881df66a7e99d1b30ae521 (diff)
downloadFreeBSD-src-741e52a6b9b63535507afa219c9d9b0a7c742c7b.zip
FreeBSD-src-741e52a6b9b63535507afa219c9d9b0a7c742c7b.tar.gz
Before resetting the USART, delay a bit to allow the transmitter to
finish the current character to drain to avoid glitching. Also, simplify the code a smidge.
Diffstat (limited to 'sys/arm/at91')
-rw-r--r--sys/arm/at91/uart_dev_at91usart.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/arm/at91/uart_dev_at91usart.c b/sys/arm/at91/uart_dev_at91usart.c
index 1e673ed..69e3fb9 100644
--- a/sys/arm/at91/uart_dev_at91usart.c
+++ b/sys/arm/at91/uart_dev_at91usart.c
@@ -421,7 +421,6 @@ at91_usart_bus_attach(struct uart_softc *sc)
{
int err;
int i;
- uint32_t cr;
struct at91_usart_softc *atsc;
atsc = (struct at91_usart_softc *)sc;
@@ -490,8 +489,8 @@ at91_usart_bus_attach(struct uart_softc *sc)
}
/* Turn on rx and tx */
- cr = USART_CR_RSTSTA | USART_CR_RSTRX | USART_CR_RSTTX;
- WR4(&sc->sc_bas, USART_CR, cr);
+ DELAY(1000); /* Give pending character a chance to drain. */
+ WR4(&sc->sc_bas, USART_CR, USART_CR_RSTSTA | USART_CR_RSTRX | USART_CR_RSTTX);
WR4(&sc->sc_bas, USART_CR, USART_CR_RXEN | USART_CR_TXEN);
/*
OpenPOWER on IntegriCloud