fix bugs and restruct some excerpts
[lunaix-os.git] / lunaix-os / includes / lunaix / peripheral / ps2kbd.h
index a63ffdc5690b97c3fe71937cfe9f4e4dc9a7570f..2d568a6bc9ebd31fcd33006fef435f1bf4d9e1cd 100644 (file)
@@ -3,6 +3,8 @@
 
 #include <hal/io.h>
 #include <lunaix/keyboard.h>
+#include <lunaix/ds/mutex.h>
+
 
 #define PS2_PORT_ENC_DATA 0x60
 #define PS2_PORT_ENC_CMDREG 0x60
@@ -33,7 +35,7 @@
 #define PS2_CMD_SELFTEST      0xaa
 #define PS2_CMD_SELFTEST_PORT1      0xab
 
-#define PS2_CMD_READ_CFG       0x20
+#define PS2_CMD_READ_CFG       0x20 
 #define PS2_CMD_WRITE_CFG       0x60
 
 #define PS2_CFG_P1INT             0x1
@@ -54,7 +56,7 @@ struct ps2_cmd {
 };
 
 struct ps2_kbd_state {
-    char state;
+    volatile char state;
     volatile char masked;
     kbd_keycode_t* translation_table;
     kbd_kstate_t key_state;
@@ -64,16 +66,14 @@ struct ps2_cmd_queue {
     struct ps2_cmd cmd_queue[PS2_CMD_QUEUE_SIZE];
     int queue_ptr;
     int queue_len;
-    // FIXME: replace lock with something specialized.
-    volatile char lock;
+    mutex_t mutex;
 };
 
 struct ps2_key_buffer {
     struct kdb_keyinfo_pkt buffer[PS2_KBD_RECV_BUFFER_SIZE];
     int read_ptr;
     int buffered_len;
-    // FIXME: replace lock with something specialized.
-    volatile char lock;
+    mutex_t mutex;
 };
 
 /**