diff options
-rw-r--r-- | baseboard/volteer/cbi_ec_fw_config.c | 4 | ||||
-rw-r--r-- | baseboard/volteer/cbi_ec_fw_config.h | 15 | ||||
-rw-r--r-- | board/eldrid/board.c | 8 |
3 files changed, 26 insertions, 1 deletions
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)); } /******************************************************************************/ |