X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/ebb55b7e5f0b8f31328950ec383b77b208ffbb64..836d44ecb7a2c37427f6baf8b25e872e9e943d5b:/lunaix-os/hal/char/uart/16x50.h diff --git a/lunaix-os/hal/char/uart/16x50.h b/lunaix-os/hal/char/uart/16x50.h index addedfa..4a2c8a5 100644 --- a/lunaix-os/hal/char/uart/16x50.h +++ b/lunaix-os/hal/char/uart/16x50.h @@ -2,6 +2,7 @@ #define __LUNAIX_16550_H #include +#include #include #define UART_rRxTX 0 @@ -69,7 +70,8 @@ struct uart16550 struct llist_header local_ports; struct serial_dev* sdev; ptr_t base_addr; - int iv; + unsigned int base_clk; + irq_t irq; struct { @@ -118,12 +120,12 @@ void uart_free(struct uart16550*); static inline int -uart_baud_divisor(struct uart16550* uart, int div) +uart_baud_divisor(struct uart16550* uart, unsigned int div) { u32_t rlc = uart->read_reg(uart, UART_rLC); uart->write_reg(uart, UART_rLC, UART_rLC_DLAB | rlc); - u8_t ls = (div & 0xff), ms = (div & 0xff00) >> 8; + u8_t ls = (div & 0x00ff), ms = (div & 0xff00) >> 8; uart->write_reg(uart, UART_rLS, ls); uart->write_reg(uart, UART_rMS, ms); @@ -226,10 +228,10 @@ int uart_general_tx(struct serial_dev* sdev, u8_t* data, size_t len); void -uart_handle_irq_overlap(int iv, struct llist_header* ports); +uart_handle_irq_overlap(irq_t irq, struct llist_header* ports); void -uart_handle_irq(int iv, struct uart16550 *uart); +uart_handle_irq(irq_t irq, struct uart16550 *uart); static inline struct serial_dev* uart_create_serial(struct uart16550* uart, struct devclass* class,