fix: corrected time conversion on alarm/sleep syscall
[lunaix-os.git] / lunaix-os / kernel / peripheral / serial.c
index c7145b8dcb4eb43861b5958535d54c4a28bd3227..516d569c088fe03836b57c33201ac2369dc74e12 100644 (file)
@@ -1,39 +1,39 @@
 #include <hal/cpu.h>
-#include <hal/io.h>
 #include <lunaix/peripheral/serial.h>
 #include <lunaix/syslog.h>
+#include <sys/port_io.h>
 
-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