diff options
author | imp <imp@FreeBSD.org> | 2014-01-26 04:57:58 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2014-01-26 04:57:58 +0000 |
commit | 741e52a6b9b63535507afa219c9d9b0a7c742c7b (patch) | |
tree | e9f16c5dedd9e7f19de305de2f301e8a6b29ec46 /sys/arm/at91 | |
parent | a15825e0be367072f4881df66a7e99d1b30ae521 (diff) | |
download | FreeBSD-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.c | 5 |
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); /* |