void avr_uart_configure(void) { unsigned char cval = UART_LCR_WLEN8; unsigned int quot = AVR_QUOT(avr_clock); if (!avr_addr || !avr_clock) return; out_8(avr_addr + UART_LCR, cval); /* initialise UART */ out_8(avr_addr + UART_MCR, 0); out_8(avr_addr + UART_IER, 0); cval |= UART_LCR_STOP | UART_LCR_PARITY | UART_LCR_EPAR; out_8(avr_addr + UART_LCR, cval); /* Set character format */ out_8(avr_addr + UART_LCR, cval | UART_LCR_DLAB); /* set DLAB */ out_8(avr_addr + UART_DLL, quot & 0xff); /* LS of divisor */ out_8(avr_addr + UART_DLM, quot >> 8); /* MS of divisor */ out_8(avr_addr + UART_LCR, cval); /* reset DLAB */ out_8(avr_addr + UART_FCR, UART_FCR_ENABLE_FIFO); /* enable FIFO */ }
void avr_uart_configure(void) { unsigned char cval = UART_LCR_WLEN8; unsigned int quot = AVR_QUOT(avr_clock); if (!avr_addr || !avr_clock) return; out_8(avr_addr + UART_LCR, cval); out_8(avr_addr + UART_MCR, 0); out_8(avr_addr + UART_IER, 0); cval |= UART_LCR_STOP | UART_LCR_PARITY | UART_LCR_EPAR; out_8(avr_addr + UART_LCR, cval); out_8(avr_addr + UART_LCR, cval | UART_LCR_DLAB); out_8(avr_addr + UART_DLL, quot & 0xff); out_8(avr_addr + UART_DLM, quot >> 8); out_8(avr_addr + UART_LCR, cval); out_8(avr_addr + UART_FCR, UART_FCR_ENABLE_FIFO); }