From 86853653efb5acf2bb84ca220d9e309a4745d3a0 Mon Sep 17 00:00:00 2001 From: Fabio Baltieri Date: Wed, 16 Nov 2022 11:33:01 +0000 Subject: 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 Change-Id: I8e6654c7ebca8553b1f930b87c320af50895048f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4030886 Code-Coverage: Zoss Reviewed-by: Keith Short --- zephyr/Kconfig.keyboard | 9 +++++++++ zephyr/shim/src/CMakeLists.txt | 2 +- zephyr/shim/src/keyscan.c | 4 ++-- 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 -#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 -- cgit v1.2.1