From 6756c16e82728ce612a333017bf23f5a497f554f Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Fri, 29 Jun 2018 09:29:43 -0700 Subject: payloads/libpayload/drivers/i8042: Disable scanning on disconnect This change ensures that keyboard scanning is disabled and keyboard is set to default state while disconnecting the keyboard. This is required to ensure that the controller doesn't keep scanning and buffering keystrokes which could lead to OS drivers reading stale data. BUG=b:110024487 TEST=Verified that kernel driver is able to probe correctly even if multiple keys are pressed during handoff from payload to OS. Change-Id: I1ffb8904d545284454c1825ee2e7c0087fc13762 Signed-off-by: Furquan Shaikh Reviewed-on: https://review.coreboot.org/27290 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- payloads/libpayload/drivers/i8042/keyboard.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'payloads') diff --git a/payloads/libpayload/drivers/i8042/keyboard.c b/payloads/libpayload/drivers/i8042/keyboard.c index d5606a3893..062aec2bf0 100644 --- a/payloads/libpayload/drivers/i8042/keyboard.c +++ b/payloads/libpayload/drivers/i8042/keyboard.c @@ -338,6 +338,9 @@ void keyboard_disconnect(void) while (keyboard_havechar()) keyboard_getchar(); + /* Disable scanning */ + keyboard_cmd(I8042_KBCMD_DEFAULT_DIS); + /* Send keyboard disconnect command */ i8042_cmd(I8042_CMD_DIS_KB); -- cgit v1.2.3