aboutsummaryrefslogtreecommitdiff
path: root/drivers/ps2.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ps2.c')
-rw-r--r--drivers/ps2.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/ps2.c b/drivers/ps2.c
new file mode 100644
index 0000000..ff85091
--- /dev/null
+++ b/drivers/ps2.c
@@ -0,0 +1,29 @@
+#include <stdint.h>
+#include <stdio.h>
+#include "io.h"
+#include "isr.h"
+#include "ps2.h"
+
+void ps2_set_leds(uint8_t status)
+{
+ outb(0x60, 0xED);
+ outb(0x60, status);
+}
+
+static void ps2_handler(struct regs_t regs)
+{
+ uint8_t scancode = inb(0x60);
+ /* TODO: handle scancode */
+}
+
+static void ps2_set_scancode_set(uint8_t set)
+{
+ outb(0x60, 0xF0);
+ outb(0x60, set);
+}
+
+void ps2_init(void)
+{
+ set_interrupt_handler(IRQ(1), ps2_handler);
+ ps2_set_scancode_set(1);
+}