Revert "libpayload: Reset PS/2 keyboard"
Documentation is scarce on the matter, however the related coreboot code suggests that after the ACK, the keyboard also sends the result of the self test (passed/failed). It looks like this result is never consumed here, probably resulting in further confusion for later com- mands. Let's revert this for now (if it's not too late for the 4.10 release) and break things later again. IMHO, due to the fact that there are dozens of different keyboard controller and keyboard implementations and no accurate specification followed, such changes should be tested on a lot of hardware before merge. This reverts commita99ed13e33
. This reverts commit7ae606f57f
. Change-Id: I4d4304d5d8a01e013feac61016c59bcaeea81140 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/33244 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Martin Kepplinger <martink@posteo.de> Reviewed-by: Patrick Georgi <pgeorgi@google.com> Reviewed-by: Felix Held <felix-coreboot@felixheld.de> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
parent
1f12772d19
commit
21bfc9f99b
|
@ -63,7 +63,6 @@
|
|||
#define I8042_KBCMD_EN 0xf4
|
||||
#define I8042_KBCMD_DEFAULT_DIS 0xf5
|
||||
#define I8042_KBCMD_SET_DEFAULT 0xf6
|
||||
#define I8042_KBCMD_ACK 0xfa
|
||||
#define I8042_KBCMD_RESEND 0xfe
|
||||
#define I8042_KBCMD_RESET 0xff
|
||||
|
||||
|
|
|
@ -172,7 +172,7 @@ static unsigned char keyboard_cmd(unsigned char cmd)
|
|||
{
|
||||
i8042_write_data(cmd);
|
||||
|
||||
return i8042_wait_read_ps2() == I8042_KBCMD_ACK;
|
||||
return i8042_wait_read_ps2() == 0xfa;
|
||||
}
|
||||
|
||||
int keyboard_havechar(void)
|
||||
|
@ -317,42 +317,27 @@ void keyboard_init(void)
|
|||
/* Enable first PS/2 port */
|
||||
i8042_cmd(I8042_CMD_EN_KB);
|
||||
|
||||
/* Reset keyboard and self test (keyboard side) */
|
||||
ret = keyboard_cmd(I8042_KBCMD_RESET);
|
||||
if (!ret) {
|
||||
printf("ERROR: Keyboard reset failed!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Set scancode set 1 */
|
||||
ret = keyboard_cmd(I8042_KBCMD_SET_SCANCODE);
|
||||
if (!ret && !CONFIG(LP_PC_KEYBOARD_IGNORE_INIT_FAILURE)) {
|
||||
printf("ERROR: Keyboard set scancode failed!\n");
|
||||
if (!ret && !CONFIG(LP_PC_KEYBOARD_IGNORE_INIT_FAILURE))
|
||||
return;
|
||||
}
|
||||
|
||||
ret = keyboard_cmd(I8042_SCANCODE_SET_1);
|
||||
if (!ret && !CONFIG(LP_PC_KEYBOARD_IGNORE_INIT_FAILURE)) {
|
||||
printf("ERROR: Keyboard scancode set#1 failed!\n");
|
||||
if (!ret && !CONFIG(LP_PC_KEYBOARD_IGNORE_INIT_FAILURE))
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set default parameters.
|
||||
* Fix for broken QEMU ps/2 make scancodes.
|
||||
*/
|
||||
ret = keyboard_cmd(0xf6);
|
||||
if (!ret) {
|
||||
printf("ERROR: Keyboard set default params failed!\n");
|
||||
if (!ret)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Enable scanning */
|
||||
ret = keyboard_cmd(I8042_KBCMD_EN);
|
||||
if (!ret && !CONFIG(LP_PC_KEYBOARD_IGNORE_INIT_FAILURE)) {
|
||||
printf("ERROR: Keyboard enable scanning failed!\n");
|
||||
if (!ret && !CONFIG(LP_PC_KEYBOARD_IGNORE_INIT_FAILURE))
|
||||
return;
|
||||
}
|
||||
|
||||
console_add_input_driver(&cons);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue