diff options
author | Keith Short <keithshort@chromium.org> | 2021-08-09 16:00:31 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-08-10 22:19:32 +0000 |
commit | 8f1cc4196595280d5c5b817b4015b6d9a308e5c0 (patch) | |
tree | 88baeefe55813656f96f9658209bd715bd86c37b /zephyr/shim/src | |
parent | d38c5745d486004da1eb7b942b4ce3dbcf7a9be7 (diff) | |
download | chrome-ec-8f1cc4196595280d5c5b817b4015b6d9a308e5c0.tar.gz |
zephyr: Create devicetree node for keyscan
Create devicetree node to specify the keyscan runtime parameters.
BUG=b:195945894
BRANCH=none
TEST=zmake testall
TEST=verify keyboard on Volteer with next CL
Signed-off-by: Keith Short <keithshort@chromium.org>
Change-Id: I4dbf5e4f2205f31651d33b6ffc1ecd1dd6696795
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3083721
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
Diffstat (limited to 'zephyr/shim/src')
-rw-r--r-- | zephyr/shim/src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | zephyr/shim/src/keyscan.c | 34 |
2 files changed, 35 insertions, 0 deletions
diff --git a/zephyr/shim/src/CMakeLists.txt b/zephyr/shim/src/CMakeLists.txt index 9b198ec3f2..7be2e75fb2 100644 --- a/zephyr/shim/src/CMakeLists.txt +++ b/zephyr/shim/src/CMakeLists.txt @@ -26,6 +26,7 @@ zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_HOSTCMD host_command.c) zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_HOSTCMD_CONSOLE console_buffer.c) zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_KEYBOARD keyboard_raw.c) +zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_KEYBOARD keyscan.c) zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_MKBP_EVENT mkbp_event.c) zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_MOTIONSENSE motionsense_sensors.c) diff --git a/zephyr/shim/src/keyscan.c b/zephyr/shim/src/keyscan.c new file mode 100644 index 0000000000..514d9ffaed --- /dev/null +++ b/zephyr/shim/src/keyscan.c @@ -0,0 +1,34 @@ +/* Copyright 2021 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#define DT_DRV_COMPAT cros_kb_raw_keyscan + +#include <assert.h> +#include <kernel.h> +#include <soc.h> + +#include "keyboard_scan.h" + +#if DT_NODE_EXISTS(DT_INST(0, cros_kb_raw_keyscan)) + +/* The keyboard matrix should have at least enough columns for the + * standard keyboard with no keypad. + */ +BUILD_ASSERT(DT_INST_PROP_LEN(0, actual_key_mask) >= KEYBOARD_COLS_NO_KEYPAD); + +/* + * Override the default keyscan_config if the board defines a + * cros-kb-raw-keyscan node. + */ +__override struct keyboard_scan_config keyscan_config = { + .output_settle_us = DT_INST_PROP(0, output_settle), + .debounce_down_us = DT_INST_PROP(0, debounce_down), + .debounce_up_us = DT_INST_PROP(0, debounce_up), + .scan_period_us = DT_INST_PROP(0, scan_period), + .min_post_scan_delay_us = DT_INST_PROP(0, min_post_scan_delay), + .poll_timeout_us = DT_INST_PROP(0, poll_timeout), + .actual_key_mask = DT_INST_PROP(0, actual_key_mask), +}; +#endif |