38 #define NS16550_THRE_TIMEOUT_MS 100 41 #define NS16550_TEMT_TIMEOUT_MS 1000 142 dlm = ( ( ns16550->
divisor >> 8 ) & 0xff );
143 dll = ( ( ns16550->
divisor >> 0 ) & 0xff );
149 ns16550->
divisor = ( ( dlm << 8 ) | dll );
#define NS16550_LCR
Line control register.
static uint8_t ns16550_receive(struct uart *uart)
Receive data.
static int ns16550_init(struct uart *uart)
Initialise UART.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
#define NS16550_SCR
Scratch register.
#define NS16550_DLM
Divisor latch (most significant byte)
static void ns16550_flush(struct uart *uart)
Flush transmitted data.
#define NS16550_FCR_FE
FIFO enable.
#define NS16550_LCR_DLAB
Divisor latch access bit.
static void ns16550_transmit(struct uart *uart, uint8_t data)
Transmit data.
#define NS16550_TEMT_TIMEOUT_MS
Timeout for transmitter to become empty.
unsigned int baud
Baud rate (if specified)
void(* transmit)(struct uart *uart, uint8_t byte)
Transmit byte.
#define NS16550_MCR_DTR
Data terminal ready.
#define NS16550_LSR_TEMT
Transmitter empty.
uint16_t divisor
Baud rate divisor.
#define NS16550_IER
Interrupt enable register.
unsigned int clock
Input clock frequency.
void * priv
Driver-private data.
#define ENODEV
No such device.
struct uart_operations ns16550_operations
16550 UART operations
#define NS16550_MCR
Modem control register.
uint8_t ns16550_read(struct ns16550_uart *ns16550, unsigned int address)
#define NS16550_LSR_DR
Data ready.
#define NS16550_THR
Transmitter holding register.
void mdelay(unsigned long msecs)
Delay for a fixed number of milliseconds.
#define NS16550_LSR
Line status register.
#define NS16550_MCR_RTS
Request to send.
#define NS16550_RBR
Receiver buffer register.
#define NS16550_FCR
FIFO control register.
#define NS16550_LSR_THRE
Transmitter holding reg.
uint8_t data[48]
Additional event data.
#define NS16550_CLK_BIT
Post-division clock cycles per data bit.
#define NS16550_DLL
Divisor latch (least significant byte)
#define NS16550_THRE_TIMEOUT_MS
Timeout for transmit holding register to become empty.
void ns16550_write(struct ns16550_uart *ns16550, unsigned int address, uint8_t data)
Dummy COM1 UART for non-x86 platforms.
#define NS16550_LCR_8N1
Default LCR value: 8 data bits, no parity, one stop bit.
static int ns16550_data_ready(struct uart *uart)
Check if data is ready.