From da2bbef4e4f586ecf13cd5ffe9a62df3114a3483 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Thu, 7 Apr 2022 21:13:00 +0200 Subject: kernel: add a /com1 device --- src/kernel/arch/i386/tty/serial.c | 46 --------------------------------------- 1 file changed, 46 deletions(-) delete mode 100644 src/kernel/arch/i386/tty/serial.c (limited to 'src/kernel/arch/i386/tty/serial.c') diff --git a/src/kernel/arch/i386/tty/serial.c b/src/kernel/arch/i386/tty/serial.c deleted file mode 100644 index 054f956..0000000 --- a/src/kernel/arch/i386/tty/serial.c +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include -#include -#include - -static const int COM1 = 0x3f8; - -static void serial_selftest(void) { - char b = 0x69; - port_out8(COM1 + 4, 0b00011110); // enable loopback mode - port_out8(COM1, b); - assert(port_in8(COM1) == b); -} - -void serial_init(void) { - // see https://www.sci.muni.cz/docs/pc/serport.txt - // set baud rate divisor - port_out8(COM1 + 3, 0b10000000); // enable DLAB - port_out8(COM1 + 0, 0x01); // divisor = 1 (low byte) - port_out8(COM1 + 1, 0x00); // (high byte) - - port_out8(COM1 + 3, 0b00000011); // 8 bits, no parity, one stop bit - port_out8(COM1 + 1, 0x01); // enable the Data Ready IRQ - port_out8(COM1 + 2, 0b11000111); // enable FIFO with 14-bit trigger level (???) - - serial_selftest(); - - port_out8(COM1 + 4, 0b00001111); // enable everything in the MCR -} - -static void serial_putchar(char c) { - while ((port_in8(COM1 + 5) & 0x20) == 0); // wait for THRE - port_out8(COM1, c); -} - -bool serial_poll_read(char *c) { - if ((port_in8(COM1 + 5) & 0x01) == 0) // needs DR - return false; - *c = port_in8(COM1); - return true; -} - -void serial_write(const char *buf, size_t len) { - for (size_t i = 0; i < len; i++) - serial_putchar(buf[i]); -} -- cgit v1.2.3