summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
Diffstat (limited to 'driver')
-rw-r--r--driver/serial.c6
-rw-r--r--driver/serial.h25
2 files changed, 18 insertions, 13 deletions
diff --git a/driver/serial.c b/driver/serial.c
index f402d0c..1a36bf5 100644
--- a/driver/serial.c
+++ b/driver/serial.c
@@ -1,9 +1,7 @@
#define FOOLOS_MODULE_NAME "serial"
-// https://wiki.osdev.org/Serial_Ports
+#include "serial.h"
#define PORT 0x3f8 /* COM1 */
-
-#include "lib/logger/log.h"
void serial_init() {
@@ -15,7 +13,7 @@ void serial_init() {
x86_outb(PORT + 2, 0xC7); // Enable FIFO, clear them, with 14-byte threshold
x86_outb(PORT + 4, 0x0B); // IRQs enabled, RTS/DSR set
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"COM 1 - initialized");
+// log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"COM 1 - initialized");
}
int serial_received() {
diff --git a/driver/serial.h b/driver/serial.h
index 2f287e6..2e10af8 100644
--- a/driver/serial.h
+++ b/driver/serial.h
@@ -1,11 +1,18 @@
-void serial_init()
+/**
+ * @file
+ * Serial Port Driver for COM1
+ *
+ * https://wiki.osdev.org/Serial_Ports
+ *
+ * Call serial_init() once before reading and writing with serial_read()
+ * and serial_write(). Note that reading and writing might block.
+ */
-char serial_read() {
-int is_transmit_empty() {
- return x86_inb(PORT + 5) & 0x20;
-}
+/** Initialize COM1 **/
+void serial_init();
+
+/** read one byte from COM1 (blocking) **/
+char serial_read();
-void serial_write(char a) {
- while (is_transmit_empty() == 0);
- x86_outb(PORT,a);
-}
+/** write one byte from COM1 (blocking) **/
+void serial_write(char a);