summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabio Baltieri <fabiobaltieri@google.com>2022-11-16 11:33:01 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-11-16 18:22:23 +0000
commit86853653efb5acf2bb84ca220d9e309a4745d3a0 (patch)
tree480561d0138f18d80a9ec0c3905a7666249ec9d0
parent4115c899e6705fb589c4b2e1c78e18eb9b50c11e (diff)
downloadchrome-ec-86853653efb5acf2bb84ca220d9e309a4745d3a0.tar.gz
zephyr: keyboard: split dt based keymap to its own config
Add a separate config for instantiating keyscan_config based on the devicetree, decoupling it from the main PLATFORM_EC_KEYBOARD option. The new one is selected automatically based on devicetree and the driver does not need a #if guard anymore. BRANCH=none BUG=none TEST=cq dry run Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com> Change-Id: I8e6654c7ebca8553b1f930b87c320af50895048f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4030886 Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com> Reviewed-by: Keith Short <keithshort@chromium.org>
-rw-r--r--zephyr/Kconfig.keyboard9
-rw-r--r--zephyr/shim/src/CMakeLists.txt2
-rw-r--r--zephyr/shim/src/keyscan.c4
3 files changed, 12 insertions, 3 deletions
diff --git a/zephyr/Kconfig.keyboard b/zephyr/Kconfig.keyboard
index 15ca7d20e7..400f295418 100644
--- a/zephyr/Kconfig.keyboard
+++ b/zephyr/Kconfig.keyboard
@@ -19,6 +19,15 @@ menuconfig PLATFORM_EC_KEYBOARD
if PLATFORM_EC_KEYBOARD
+config CROS_EC_KEYSCAN
+ bool "Devicetree based keyscan map"
+ default y
+ depends on DT_HAS_CROS_EC_KEYSCAN_ENABLED
+ help
+ Define a keyscan_config data structure based on a the keyscan
+ configuration found in devicetree. Requires a cros-ec,keyscan node to
+ be defined.
+
choice PLATFORM_EC_KEYBOARD_PROTOCOL_MODE
prompt "Select the keyboard protocol to use"
help
diff --git a/zephyr/shim/src/CMakeLists.txt b/zephyr/shim/src/CMakeLists.txt
index 5aa94b31ce..74da11da2c 100644
--- a/zephyr/shim/src/CMakeLists.txt
+++ b/zephyr/shim/src/CMakeLists.txt
@@ -42,7 +42,7 @@ if (NOT DEFINED CONFIG_PLATFORM_EC_KEYBOARD_DISCRETE)
zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_KEYBOARD
keyboard_raw.c)
endif()
-zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_KEYBOARD keyscan.c)
+zephyr_library_sources_ifdef(CONFIG_CROS_EC_KEYSCAN keyscan.c)
zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_LOG_BACKEND_CONSOLE_BUFFER
log_backend_console_buffer.c)
zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_MKBP_EVENT mkbp_event.c)
diff --git a/zephyr/shim/src/keyscan.c b/zephyr/shim/src/keyscan.c
index 9bf2a5ec1f..46bb5fcc7f 100644
--- a/zephyr/shim/src/keyscan.c
+++ b/zephyr/shim/src/keyscan.c
@@ -13,7 +13,8 @@
#include <soc.h>
-#if DT_NODE_EXISTS(DT_INST(0, cros_ec_keyscan))
+BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) == 1,
+ "Exactly one instance of cros-ec,keyscan should be defined.");
/* The keyboard matrix should have at least enough columns for the
* standard keyboard with no keypad.
@@ -33,4 +34,3 @@ __override struct keyboard_scan_config keyscan_config = {
.poll_timeout_us = DT_INST_PROP(0, poll_timeout),
.actual_key_mask = DT_INST_PROP(0, actual_key_mask),
};
-#endif