summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZick Wei <zick.wei@quanta.corp-partner.google.com>2022-10-14 10:04:38 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-10-20 03:06:46 +0000
commitaf77859fc32ddf59ad6d7606924f5fef405abfc0 (patch)
tree7185135ef77b74ea02e76f2eaeaf990cc0bfd0ee
parent15cdbbbbf8aa5f6d301f3b1825b9c7e924b74f71 (diff)
downloadchrome-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.c60
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);