#include <hal/cpu.h>
-#include <hal/io.h>
#include <lunaix/peripheral/serial.h>
#include <lunaix/syslog.h>
+#include <sys/port_io.h>
LOG_MODULE("UART")
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) {
+ 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);
+ port_wrbyte(COM_RCMODEM(port), 0xf);
+ port_wrbyte(COM_RIE(port), 0x1);
kprintf("port.%p: ok\n", port);
}
char
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
void
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
void
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(ptr_t port)
{
- io_outb(COM_RIE(port), 0x0);
+ port_wrbyte(COM_RIE(port), 0x0);
}
void
serial_enable_irq(ptr_t port)
{
- io_outb(COM_RIE(port), 0x1);
+ port_wrbyte(COM_RIE(port), 0x1);
}
\ No newline at end of file