Move serial driver code to kernel/dev

This commit is contained in:
2025-10-05 19:50:42 +02:00
parent e9838d530f
commit cdfb1e39c0
4 changed files with 40 additions and 56 deletions

View File

@ -58,7 +58,6 @@ SRCFILES += $(call GRABSRC, \
path \ path \
rbuf \ rbuf \
ipc/pipe \ ipc/pipe \
drivers/serial \
dev \ dev \
) )

View File

@ -6,8 +6,47 @@
#include "util/util.h" #include "util/util.h"
#include "hshtb.h" #include "hshtb.h"
#include "sysdefs/devctl.h" #include "sysdefs/devctl.h"
#include "drivers/serial/serial.h"
#include "kprintf.h" #include "kprintf.h"
#include "hal/hal.h"
// https://wiki.osdev.org/Serial_Ports
#define PORT 0x3f8
void serial_init(void) {
io_out8(PORT+1, 0x00);
io_out8(PORT+3, 0x80);
io_out8(PORT+0, 0x03);
io_out8(PORT+1, 0x00);
io_out8(PORT+3, 0x03);
io_out8(PORT+2, 0xC7);
io_out8(PORT+4, 0x0B);
io_out8(PORT+4, 0x1E);
io_out8(PORT+0, 0xAE);
if (io_in8(PORT+0) != 0xAE) {
ERR("serial", "serial is faulty!\n");
return;
}
io_out8(PORT+4, 0x0F);
}
int serial_recvready(void) {
return io_in8(PORT+5) & 1;
}
uint8_t serial_recvb(void) {
return io_in8(PORT);
}
int serial_sendready(void) {
return io_in8(PORT+5) & 0x20;
}
void serial_sendb(uint8_t b) {
io_out8(PORT, b);
}
int32_t serialdev_sendb(uint8_t *buffer, size_t len, void *extra) { int32_t serialdev_sendb(uint8_t *buffer, size_t len, void *extra) {
(void)len; (void)extra; (void)len; (void)extra;

View File

@ -1,42 +0,0 @@
#include <stdint.h>
#include "hal/hal.h"
#include "kprintf.h"
// https://wiki.osdev.org/Serial_Ports
#define PORT 0x3f8
void serial_init(void) {
io_out8(PORT+1, 0x00);
io_out8(PORT+3, 0x80);
io_out8(PORT+0, 0x03);
io_out8(PORT+1, 0x00);
io_out8(PORT+3, 0x03);
io_out8(PORT+2, 0xC7);
io_out8(PORT+4, 0x0B);
io_out8(PORT+4, 0x1E);
io_out8(PORT+0, 0xAE);
if (io_in8(PORT+0) != 0xAE) {
ERR("serial", "serial is faulty!\n");
return;
}
io_out8(PORT+4, 0x0F);
}
int serial_recvready(void) {
return io_in8(PORT+5) & 1;
}
uint8_t serial_recvb(void) {
return io_in8(PORT);
}
int serial_sendready(void) {
return io_in8(PORT+5) & 0x20;
}
void serial_sendb(uint8_t b) {
io_out8(PORT, b);
}

View File

@ -1,12 +0,0 @@
#ifndef DRIVERS_SERIAL_SERIAL_H_
#define DRIVERS_SERIAL_SERIAL_H_
#include <stdint.h>
void serial_init(void);
int serial_recvready(void);
uint8_t serial_recvb(void);
int serial_sendready(void);
void serial_sendb(uint8_t b);
#endif // DRIVERS_SERIAL_SERIAL_H_