at91usart_writereg
at91usart_writereg(sc, US_CR, US_CR_RSTSTA | US_CR_STTTO);
at91usart_writereg(sc, US_CR, US_CR_STTTO);
at91usart_writereg(sc, US_IER, sc->sc_ier); // re-enable interrupts
at91usart_writereg(sc, US_IDR, -1);
at91usart_writereg(sc, US_IDR, -1);
at91usart_writereg(sc, US_RTOR, 12); // 12-bit timeout
at91usart_writereg(sc, US_PDC + PDC_PTCR, PDC_PTCR_TXTDIS | PDC_PTCR_RXTDIS);
at91usart_writereg(sc, US_PDC + PDC_PTCR, PDC_PTCR_TXTEN);
at91usart_writereg(sc, US_PDC + PDC_PTCR, PDC_PTCR_TXTDIS);
at91usart_writereg(sc, US_IER, sc->sc_ier);
at91usart_writereg(sc, US_CR, onoff ? US_CR_STTBRK : US_CR_STPBRK);
at91usart_writereg(sc, US_PDC + PDC_PTCR, PDC_PTCR_TXTDIS | PDC_PTCR_RXTDIS);
at91usart_writereg(sc, US_PDC + PDC_TNCR, 0);
at91usart_writereg(sc, US_PDC + PDC_TCR, 0);
at91usart_writereg(sc, US_PDC + PDC_RNCR, 0);
at91usart_writereg(sc, US_PDC + PDC_RCR, 0);
at91usart_writereg(sc, US_IDR, -1);
at91usart_writereg(sc, US_CR, US_CR_RSTSTA | US_CR_STTTO);
at91usart_writereg(sc, US_IER, sc->sc_ier);
at91usart_writereg(sc, US_PDC + PDC_PTCR, PDC_PTCR_RXTEN);
at91usart_writereg(sc, US_MR, US_MR_CHRL_8 | US_MR_PAR_NONE | US_MR_NBSTOP_1);
at91usart_writereg(sc, US_BRGR, sc->sc_brgr);
at91usart_writereg(sc, US_CR, US_CR_TXEN | US_CR_RXEN); // @@@ just in case
at91usart_writereg(sc, US_PDC + PDC_PTCR, \
at91usart_writereg(sc, US_PDC + PDC_RNCR, 0); \
at91usart_writereg(sc, US_PDC + PDC_RCR, 0); \
at91usart_writereg(sc, US_PDC + PDC_TNCR, 0); \
at91usart_writereg(sc, US_PDC + PDC_TCR, 0); \
at91usart_writereg(sc, US_MR, US_MR_USCLKS_MCK | US_MR_CHRL_8 \
at91usart_writereg(sc, US_BRGR, \
at91usart_writereg(sc, US_CR, US_CR_RSTRX | US_CR_RSTTX); \
at91usart_writereg(sc, US_CR, US_CR_RSTSTA | US_CR_RXEN | US_CR_TXEN \