From 7f0c15e6d2accd3aec28c93ff7add11268e3e6c7 Mon Sep 17 00:00:00 2001 From: Scott Chao Date: Tue, 3 Nov 2020 09:04:43 +0800 Subject: eldrid: add FW_CONFIG support for different keyboard layout BUG=b:172133632 BRANCH=firmware-volteer-13521.B-master TEST=make buildall TEST= ectool cbi get = 0x14902 ectool cbi set 0x114902 4 Signed-off-by: Scott Chao Change-Id: I0decd978bf6c21dddd315857bb1a29ac20dbf276 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2528732 Reviewed-by: Keith Short --- baseboard/volteer/cbi_ec_fw_config.c | 4 ++++ baseboard/volteer/cbi_ec_fw_config.h | 15 ++++++++++++++- board/eldrid/board.c | 8 ++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/baseboard/volteer/cbi_ec_fw_config.c b/baseboard/volteer/cbi_ec_fw_config.c index 12b96ff5b4..e602691aeb 100644 --- a/baseboard/volteer/cbi_ec_fw_config.c +++ b/baseboard/volteer/cbi_ec_fw_config.c @@ -49,3 +49,7 @@ bool ec_cfg_has_numeric_pad(void) return (fw_config.num_pad == NUMERIC_PAD_ENABLED); } +enum ec_cfg_keyboard_layout ec_cfg_keyboard_layout(void) +{ + return fw_config.kb_layout; +} diff --git a/baseboard/volteer/cbi_ec_fw_config.h b/baseboard/volteer/cbi_ec_fw_config.h index 5b97f778ec..0a44e1f9e4 100644 --- a/baseboard/volteer/cbi_ec_fw_config.h +++ b/baseboard/volteer/cbi_ec_fw_config.h @@ -43,6 +43,11 @@ enum ec_cfg_numeric_pad_type { NUMERIC_PAD_ENABLED = 1 }; +enum ec_cfg_keyboard_layout { + KB_LAYOUT_DEFAULT = 0, + KB_LAYOUT_1 = 1 +}; + union volteer_cbi_fw_config { struct { enum ec_cfg_usb_db_type usb_db : 4; @@ -53,7 +58,8 @@ union volteer_cbi_fw_config { enum ec_cfg_keyboard_backlight_type kb_bl : 1; enum ec_cfg_numeric_pad_type num_pad : 1; uint32_t sd_db : 4; - uint32_t reserved_2 : 12; + enum ec_cfg_keyboard_layout kb_layout : 2; + uint32_t reserved_2 : 10; }; uint32_t raw_value; }; @@ -108,4 +114,11 @@ bool ec_cfg_has_keyboard_backlight(void); */ bool ec_cfg_has_numeric_pad(void); +/** + * Get keyboard type from FW_CONFIG. + * + * @return the keyboard type. + */ +enum ec_cfg_keyboard_layout ec_cfg_keyboard_layout(void); + #endif /* __VOLTEER_CBI_EC_FW_CONFIG_H_ */ diff --git a/board/eldrid/board.c b/board/eldrid/board.c index 12286dc7b9..1ce028d96e 100644 --- a/board/eldrid/board.c +++ b/board/eldrid/board.c @@ -24,6 +24,7 @@ #include "fan_chip.h" #include "gpio.h" #include "hooks.h" +#include "keyboard_8042_sharedlib.h" #include "keyboard_raw.h" #include "lid_switch.h" #include "keyboard_scan.h" @@ -414,6 +415,13 @@ __override void board_cbi_init(void) if ((!IS_ENABLED(TEST_BUILD) && !ec_cfg_has_numeric_pad()) || get_board_id() < 1) keyboard_raw_set_cols(KEYBOARD_COLS_NO_KEYPAD); + + /* + * If keyboard is US2(KB_LAYOUT_1), we need translate right ctrl + * to backslash(\|) key. + */ + if (ec_cfg_keyboard_layout() == KB_LAYOUT_1) + set_scancode_set2(4, 0, get_scancode_set2(2, 7)); } /******************************************************************************/ -- cgit v1.2.1