X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/4f966b9a6710d138d6e921bf2a1e40f2abc76f9a..1fe5f5eb5378a47bf0f3451762743c162e40faad:/lunaix-os/kernel/peripheral/serial.c diff --git a/lunaix-os/kernel/peripheral/serial.c b/lunaix-os/kernel/peripheral/serial.c index c7145b8..516d569 100644 --- a/lunaix-os/kernel/peripheral/serial.c +++ b/lunaix-os/kernel/peripheral/serial.c @@ -1,39 +1,39 @@ #include -#include #include #include +#include -LOG_MODULE("COM") +LOG_MODULE("UART") void -serial_init_port(uintptr_t port) +serial_init_port(ptr_t port) { // disable interrupt, use irq instead - io_outb(COM_RIE(port), 0); + port_wrbyte(COM_RIE(port), 0); // baud rate config (DLAB = 1) - io_outb(COM_RCLINE(port), 0x80); - io_outb(COM_RRXTX(port), BAUD_9600); - io_outb(COM_RIE(port), 0); + port_wrbyte(COM_RCLINE(port), 0x80); + port_wrbyte(COM_RRXTX(port), BAUD_9600); + port_wrbyte(COM_RIE(port), 0); // transmission size = 7bits, no parity, 1 stop bits - io_outb(COM_RCLINE(port), 0x2); + port_wrbyte(COM_RCLINE(port), 0x2); // rx trigger level = 14, clear rx/tx buffer, enable buffer - io_outb(COM_RCFIFO(port), 0xcf); + port_wrbyte(COM_RCFIFO(port), 0xcf); - io_outb(COM_RCMODEM(port), 0x1e); + port_wrbyte(COM_RCMODEM(port), 0x1e); - io_outb(COM_RRXTX(port), 0xaa); + port_wrbyte(COM_RRXTX(port), 0xaa); - if (io_inb(COM_RRXTX(port)) != 0xaa) { - kprintf(KWARN "Port (%p) is faulty, use other instead.\n", port); + if (port_rdbyte(COM_RRXTX(port)) != 0xaa) { + kprintf(KWARN "port.%p: faulty\n", port); return; } - io_outb(COM_RCMODEM(port), 0xf); - io_outb(COM_RIE(port), 0x1); - kprintf("Port (%p) ok\n", port); + port_wrbyte(COM_RCMODEM(port), 0xf); + port_wrbyte(COM_RIE(port), 0x1); + kprintf("port.%p: ok\n", port); } void @@ -46,16 +46,16 @@ serial_init() } char -serial_rx_byte(uintptr_t port) +serial_rx_byte(ptr_t port) { - while (!(io_inb(COM_RSLINE(port)) & 0x01)) + while (!(port_rdbyte(COM_RSLINE(port)) & 0x01)) ; - return io_inb(COM_RRXTX(port)); + return port_rdbyte(COM_RRXTX(port)); } void -serial_rx_buffer(uintptr_t port, char* data, size_t len) +serial_rx_buffer(ptr_t port, char* data, size_t len) { for (size_t i = 0; i < len; i++) { data[i] = serial_rx_byte(port); @@ -63,16 +63,16 @@ serial_rx_buffer(uintptr_t port, char* data, size_t len) } void -serial_tx_byte(uintptr_t port, char data) +serial_tx_byte(ptr_t port, char data) { - while (!(io_inb(COM_RSLINE(port)) & 0x20)) + while (!(port_rdbyte(COM_RSLINE(port)) & 0x20)) ; - io_outb(COM_RRXTX(port), data); + port_wrbyte(COM_RRXTX(port), data); } void -serial_tx_buffer(uintptr_t port, char* data, size_t len) +serial_tx_buffer(ptr_t port, char* data, size_t len) { for (size_t i = 0; i < len; i++) { serial_tx_byte(port, data[i]); @@ -80,23 +80,23 @@ serial_tx_buffer(uintptr_t port, char* data, size_t len) } void -serial_clear_fifo(uintptr_t port) +serial_clear_fifo(ptr_t port) { - io_outb(COM_RIE(port), 0x0); - io_outb(COM_RCFIFO(port), 0x00); + port_wrbyte(COM_RIE(port), 0x0); + port_wrbyte(COM_RCFIFO(port), 0x00); - io_outb(COM_RCFIFO(port), 0xcf); - io_outb(COM_RIE(port), 0x1); + port_wrbyte(COM_RCFIFO(port), 0xcf); + port_wrbyte(COM_RIE(port), 0x1); } void -serial_disable_irq(uintptr_t port) +serial_disable_irq(ptr_t port) { - io_outb(COM_RIE(port), 0x0); + port_wrbyte(COM_RIE(port), 0x0); } void -serial_enable_irq(uintptr_t port) +serial_enable_irq(ptr_t port) { - io_outb(COM_RIE(port), 0x1); + port_wrbyte(COM_RIE(port), 0x1); } \ No newline at end of file