From 462eaa9531b9e62916b02ab52759cd070de755d3 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Wed, 14 Apr 2021 14:34:38 +0200 Subject: Implemented some I/O interfaces --- kernel/drivers/ps2/keyboard.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'kernel/drivers/ps2/keyboard.c') diff --git a/kernel/drivers/ps2/keyboard.c b/kernel/drivers/ps2/keyboard.c index 9a19b5c..3c2cdbb 100644 --- a/kernel/drivers/ps2/keyboard.c +++ b/kernel/drivers/ps2/keyboard.c @@ -3,8 +3,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -14,7 +14,6 @@ #include PROTECTED static struct stack *queue = NULL; -PROTECTED static u32 dev_id = 0; static struct event_keyboard *event = NULL; static int state = 0; @@ -46,9 +45,8 @@ static void keyboard_handler(struct regs *r) merged = 0; } -static res keyboard_read(void *buf, u32 offset, u32 count, struct vfs_dev *dev) +static res keyboard_read(void *buf, u32 offset, u32 count) { - UNUSED(dev); if (stack_empty(queue)) return -EINVAL; @@ -68,16 +66,15 @@ CLEAR void ps2_keyboard_reset(void) stack_clear(queue); } -CLEAR void ps2_keyboard_install(void) +CLEAR void ps2_keyboard_install(u8 device) { - //keyboard_rate(); TODO: Fix keyboard rate? + UNUSED(device); + irq_install_handler(1, keyboard_handler); queue = stack_new(); - struct vfs_dev *dev = zalloc(sizeof(*dev)); - dev->name = strdup("kbd"); - dev->type = DEV_CHAR; + struct io_dev *dev = zalloc(sizeof(*dev)); dev->read = keyboard_read; - /* device_add(dev); */ - dev_id = dev->id; + dev->ready = keyboard_ready; + io_add(IO_KEYBOARD, dev); } -- cgit v1.2.3