#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
#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
};
struct ps2_kbd_state {
- char state;
+ volatile char state;
volatile char masked;
kbd_keycode_t* translation_table;
kbd_kstate_t key_state;
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;
};
/**