git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactor: one more step towards arch-agnostic design
[lunaix-os.git]
/
lunaix-os
/
kernel
/
peripheral
/
serial.c
diff --git
a/lunaix-os/kernel/peripheral/serial.c
b/lunaix-os/kernel/peripheral/serial.c
index c7145b8dcb4eb43861b5958535d54c4a28bd3227..516d569c088fe03836b57c33201ac2369dc74e12 100644
(file)
--- a/
lunaix-os/kernel/peripheral/serial.c
+++ b/
lunaix-os/kernel/peripheral/serial.c
@@
-1,39
+1,39
@@
#include <hal/cpu.h>
#include <hal/cpu.h>
-#include <hal/io.h>
#include <lunaix/peripheral/serial.h>
#include <lunaix/syslog.h>
#include <lunaix/peripheral/serial.h>
#include <lunaix/syslog.h>
+#include <sys/port_io.h>
-LOG_MODULE("
COM
")
+LOG_MODULE("
UART
")
void
void
-serial_init_port(
uint
ptr_t port)
+serial_init_port(ptr_t port)
{
// disable interrupt, use irq instead
{
// disable interrupt, use irq instead
-
io_outb
(COM_RIE(port), 0);
+
port_wrbyte
(COM_RIE(port), 0);
// baud rate config (DLAB = 1)
// 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
// 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
// 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;
}
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
}
void
@@
-46,16
+46,16
@@
serial_init()
}
char
}
char
-serial_rx_byte(
uint
ptr_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
}
void
-serial_rx_buffer(
uint
ptr_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);
{
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
}
void
-serial_tx_byte(
uint
ptr_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
}
void
-serial_tx_buffer(
uint
ptr_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]);
{
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
}
void
-serial_clear_fifo(
uint
ptr_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
}
void
-serial_disable_irq(
uint
ptr_t port)
+serial_disable_irq(ptr_t port)
{
{
-
io_outb
(COM_RIE(port), 0x0);
+
port_wrbyte
(COM_RIE(port), 0x0);
}
void
}
void
-serial_enable_irq(
uint
ptr_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
}
\ No newline at end of file