diff options
author | Zick Wei <zick.wei@quanta.corp-partner.google.com> | 2022-10-14 10:04:38 +0800 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-10-20 03:06:46 +0000 |
commit | af77859fc32ddf59ad6d7606924f5fef405abfc0 (patch) | |
tree | 7185135ef77b74ea02e76f2eaeaf990cc0bfd0ee | |
parent | 15cdbbbbf8aa5f6d301f3b1825b9c7e924b74f71 (diff) | |
download | chrome-ec-af77859fc32ddf59ad6d7606924f5fef405abfc0.tar.gz |
yaviks: update keyboard mapping
Update different keyboard mapping to cbi fw_config.
BUG=b:249388097, b:249388270
BRANCH=none
TEST=manually update cbi fw_config and make sure keyboard work intended.
LOW_COVERAGE_REASON=board-specific code
Signed-off-by: Zick Wei <zick.wei@quanta.corp-partner.google.com>
Change-Id: I09970d16626d74d6c103c83f9eadd217009d7fa3
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3954784
Reviewed-by: Shou-Chieh Hsu <shouchieh@chromium.org>
Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
Commit-Queue: Shou-Chieh Hsu <shouchieh@chromium.org>
-rw-r--r-- | zephyr/projects/nissa/yaviks/src/keyboard.c | 60 |
1 files changed, 58 insertions, 2 deletions
diff --git a/zephyr/projects/nissa/yaviks/src/keyboard.c b/zephyr/projects/nissa/yaviks/src/keyboard.c index 1e5ac7a953..46d6083dbf 100644 --- a/zephyr/projects/nissa/yaviks/src/keyboard.c +++ b/zephyr/projects/nissa/yaviks/src/keyboard.c @@ -2,11 +2,17 @@ * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ +#include <zephyr/logging/log.h> +#include "cros_cbi.h" #include "ec_commands.h" +#include "hooks.h" +#include "keyboard_8042_sharedlib.h" #include "keyboard_scan.h" #include "timer.h" +LOG_MODULE_DECLARE(nissa, CONFIG_NISSA_LOG_LEVEL); + /* Keyboard scan setting */ __override struct keyboard_scan_config keyscan_config = { /* Increase from 50 us, because KSO_02 passes through the H1. */ @@ -23,7 +29,7 @@ __override struct keyboard_scan_config keyscan_config = { }, }; -static const struct ec_response_keybd_config yaviks_kb_legacy = { +static const struct ec_response_keybd_config yaviks_kb_w_kb_light = { .num_top_row_keys = 13, .action_keys = { TK_BACK, /* T1 */ @@ -43,8 +49,58 @@ static const struct ec_response_keybd_config yaviks_kb_legacy = { .capabilities = KEYBD_CAP_NUMERIC_KEYPAD, }; +static const struct ec_response_keybd_config yaviks_kb_wo_kb_light = { + .num_top_row_keys = 13, + .action_keys = { + TK_BACK, /* T1 */ + TK_REFRESH, /* T2 */ + TK_FULLSCREEN, /* T3 */ + TK_OVERVIEW, /* T4 */ + TK_SNAPSHOT, /* T5 */ + TK_BRIGHTNESS_DOWN, /* T6 */ + TK_BRIGHTNESS_UP, /* T7 */ + TK_PLAY_PAUSE, /* T8 */ + TK_MICMUTE, /* T9 */ + TK_VOL_MUTE, /* T10 */ + TK_VOL_DOWN, /* T11 */ + TK_VOL_UP, /* T12 */ + TK_MENU, /* T13 */ + }, + .capabilities = KEYBD_CAP_NUMERIC_KEYPAD, +}; + __override const struct ec_response_keybd_config * board_vivaldi_keybd_config(void) { - return &yaviks_kb_legacy; + uint32_t val; + + cros_cbi_get_fw_config(FW_KB_BACKLIGHT, &val); + + if (val == FW_KB_BACKLIGHT_OFF) + return &yaviks_kb_wo_kb_light; + else + return &yaviks_kb_w_kb_light; +} + +/* + * Keyboard layout decided by FW config. + */ +static void kb_layout_init(void) +{ + int ret; + uint32_t val; + + ret = cros_cbi_get_fw_config(FW_KB_LAYOUT, &val); + if (ret != 0) { + LOG_ERR("Error retrieving CBI FW_CONFIG field %d", + FW_KB_LAYOUT); + return; + } + /* + * If keyboard is US2(FW_KB_LAYOUT_US2), we need translate right ctrl + * to backslash(\|) key. + */ + if (val == FW_KB_LAYOUT_US2) + set_scancode_set2(4, 0, get_scancode_set2(2, 7)); } +DECLARE_HOOK(HOOK_INIT, kb_layout_init, HOOK_PRIO_POST_FIRST); |