aboutsummaryrefslogtreecommitdiff
path: root/drivers/ps2.c
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2015-02-02 21:48:38 -0500
committerFranklin Wei <frankhwei536@gmail.com>2015-02-02 21:48:38 -0500
commitc8a195e1eb19d346c03c1dfa6ed66c6215caefa2 (patch)
tree3096ea08f7f213d7efe56a86391ab79b27333d40 /drivers/ps2.c
parent5c84e678defa9333aefcdcd0870564fb945a8c61 (diff)
downloadkappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.zip
kappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.tar.gz
kappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.tar.bz2
kappa-c8a195e1eb19d346c03c1dfa6ed66c6215caefa2.tar.xz
Refactor, begin writing a PS/2 driver
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);
+}