diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2009-01-17 23:30:01 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2009-01-17 23:30:01 -0500 |
commit | b44a852635ef148b5057bc5ca9f37cd29b8a379c (patch) | |
tree | c3d8526233ac4c0fcff90222da8eeb238f8449d6 /src/kbd.c | |
parent | 0d9e673292d7511631da4568f5513b9be02c9e60 (diff) | |
download | seabios-hppa-b44a852635ef148b5057bc5ca9f37cd29b8a379c.zip seabios-hppa-b44a852635ef148b5057bc5ca9f37cd29b8a379c.tar.gz seabios-hppa-b44a852635ef148b5057bc5ca9f37cd29b8a379c.tar.bz2 |
Cleanup keyboard reset handling.
Use custom timeouts when issuing a reset.
Handle 1-byte returns from reset in ps2 code.
Do full keyboard reset even in coreboot mode.
Send set scan mode command during reset.
Diffstat (limited to 'src/kbd.c')
-rw-r--r-- | src/kbd.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -15,10 +15,6 @@ static void keyboard_init() { - if (CONFIG_COREBOOT) - // Coreboot already does low-level keyboard init. - goto end; - /* flush incoming keys */ int ret = i8042_flush(); if (ret) @@ -55,7 +51,7 @@ keyboard_init() /* ------------------- keyboard side ------------------------*/ /* reset keyboard and self test (keyboard side) */ ret = kbd_command(ATKBD_CMD_RESET_BAT, param); - if (ret != 0 && ret != 2) + if (ret) return; if (param[0] != 0xaa) { dprintf(1, "keyboard self test failed (got %x not 0xaa)\n", param[0]); @@ -67,7 +63,12 @@ keyboard_init() if (ret) return; -end: + // Set scancode command (mode 2) + param[0] = 0x02; + ret = kbd_command(ATKBD_CMD_SSCANSET, param); + if (ret) + return; + // Keyboard Mode: scan code convert, disable mouse, enable IRQ 1 SET_EBDA(ps2ctr, I8042_CTR_AUXDIS | I8042_CTR_XLATE | I8042_CTR_KBDINT); |