#define __LUNAIX_16550_H
#include <hal/serial.h>
+#include <hal/irq.h>
#include <lunaix/types.h>
#define UART_rRxTX 0
struct llist_header local_ports;
struct serial_dev* sdev;
ptr_t base_addr;
- int iv;
+ unsigned int base_clk;
+ irq_t irq;
struct
{
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);
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,