summaryrefslogtreecommitdiff
path: root/payloads
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@google.com>2021-04-28 09:40:26 -0700
committerRaul Rangel <rrangel@chromium.org>2021-05-03 15:55:52 +0000
commitd87bbde169f84b8c723b0d5289f39df164251b52 (patch)
tree445467cafc592ed94ae44335f59e7b1d727a3f48 /payloads
parente46e740f9155a7beeb11358b2312c3a6f6922979 (diff)
downloadcoreboot-d87bbde169f84b8c723b0d5289f39df164251b52.tar.xz
libpayload: i8042: Enable keyboard translation by default on exit
Add a Kconfig option to set the keyboard translation state on exit and set the default to true. This restores the keyboard to the power-up defaults for firmware that does not always run libpayload keyboard init to have consistent state, and provides an option to disable translation for keyboards that might need it. Change-Id: I25dfe3f425a5bb57e97476564886672b707aa3bd Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/52737 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Felix Singer <felixsinger@posteo.net> Reviewed-by: Raul Rangel <rrangel@chromium.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'payloads')
-rw-r--r--payloads/libpayload/Kconfig5
-rw-r--r--payloads/libpayload/drivers/i8042/keyboard.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/payloads/libpayload/Kconfig b/payloads/libpayload/Kconfig
index 7a502b5853..f7d78e069d 100644
--- a/payloads/libpayload/Kconfig
+++ b/payloads/libpayload/Kconfig
@@ -385,6 +385,11 @@ config PC_KEYBOARD_LAYOUT_DE
depends on PC_KEYBOARD
default n
+config PC_KEYBOARD_TRANSLATION
+ bool "Enable or Disable translation in PC keyboard set 2 on exit"
+ depends on PC_KEYBOARD
+ default y
+
endmenu
menu "Drivers"
diff --git a/payloads/libpayload/drivers/i8042/keyboard.c b/payloads/libpayload/drivers/i8042/keyboard.c
index a695723a06..952f5f1456 100644
--- a/payloads/libpayload/drivers/i8042/keyboard.c
+++ b/payloads/libpayload/drivers/i8042/keyboard.c
@@ -658,7 +658,7 @@ void keyboard_disconnect(void)
/* Nobody but us seems to still use scancode set #1.
So try to hand over with more modern settings. */
set_scancode_set(2);
- i8042_set_kbd_translation(false);
+ i8042_set_kbd_translation(CONFIG(LP_PC_KEYBOARD_TRANSLATION));
/* Send keyboard disconnect command */
i8042_cmd(I8042_CMD_DIS_KB);