diff options
author | Peter Marheine <pmarheine@chromium.org> | 2021-12-01 10:58:56 +1100 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-12-08 03:51:23 +0000 |
commit | 849ac6ee864eedc0eef6ce0b900f9645597c0086 (patch) | |
tree | 081ee253b5dc033706b0103e45e13bdc2deadb43 | |
parent | ba2512fce12a15282a8120e1ddbf566383c251e6 (diff) | |
download | chrome-ec-849ac6ee864eedc0eef6ce0b900f9645597c0086.tar.gz |
zephyr: use a chosen device for raw keyboard shim
Rather than assuming the keyboard is named cros_kb_raw, get the device
from a chosen cros-ec,raw-kb node instead. To make this work whether
the keyboard is in use or not, also move the cros_kb_raw node to live in
the main it8xxx2.dtsi file, rather than being duplicated for those
boards that use it.
BUG=b:205615358
TEST=zmake testall
BRANCH=none
Signed-off-by: Peter Marheine <pmarheine@chromium.org>
Change-Id: Id0e6208e03a3cfa06a38c63b34282736fc3a3489
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3312505
Reviewed-by: Keith Short <keithshort@chromium.org>
-rw-r--r-- | zephyr/boards/riscv/asurada/asurada.dts | 13 | ||||
-rw-r--r-- | zephyr/include/cros/ite/it8xxx2.dtsi | 13 | ||||
-rw-r--r-- | zephyr/include/cros/nuvoton/npcx.dtsi | 1 | ||||
-rw-r--r-- | zephyr/shim/src/keyboard_raw.c | 28 |
4 files changed, 22 insertions, 33 deletions
diff --git a/zephyr/boards/riscv/asurada/asurada.dts b/zephyr/boards/riscv/asurada/asurada.dts index 7fad8ed720..fee639a730 100644 --- a/zephyr/boards/riscv/asurada/asurada.dts +++ b/zephyr/boards/riscv/asurada/asurada.dts @@ -140,19 +140,6 @@ enum-name = "I2C_PORT_USB_MUX1"; }; }; - - soc { - /delete-node/ kscan@f01d00; - - cros_kb_raw: cros-kb-raw@f01d00 { - compatible = "ite,it8xxx2-cros-kb-raw"; - reg = <0x00f01d00 0x29>; - label = "CROS_KB_RAW_0"; - interrupt-parent = <&intc>; - interrupts = <13 IRQ_TYPE_LEVEL_HIGH>; - status = "disabled"; - }; - }; }; &uart1 { diff --git a/zephyr/include/cros/ite/it8xxx2.dtsi b/zephyr/include/cros/ite/it8xxx2.dtsi index 35676e03ce..d835d9d4f1 100644 --- a/zephyr/include/cros/ite/it8xxx2.dtsi +++ b/zephyr/include/cros/ite/it8xxx2.dtsi @@ -4,6 +4,7 @@ */ #include <cros/binman.dtsi> +#include <it8xxx2.dtsi> / { chosen { @@ -11,6 +12,7 @@ cros-ec,bbram = &bbram; cros-ec,espi = &espi0; cros-ec,flash = &fiu0; + cros-ec,raw-kb = &cros_kb_raw; cros-ec,watchdog = &twd0; }; @@ -75,6 +77,17 @@ reg = <0x80000000 0x100000>; label = "FLASH"; }; + + /delete-node/ kscan@f01d00; + + cros_kb_raw: cros-kb-raw@f01d00 { + compatible = "ite,it8xxx2-cros-kb-raw"; + reg = <0x00f01d00 0x29>; + label = "CROS_KB_RAW_0"; + interrupt-parent = <&intc>; + interrupts = <13 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + }; }; /* it8xxx2 has 1MB of flash. currently, we use 512KB from flash. */ diff --git a/zephyr/include/cros/nuvoton/npcx.dtsi b/zephyr/include/cros/nuvoton/npcx.dtsi index eecc533c74..0a658663a8 100644 --- a/zephyr/include/cros/nuvoton/npcx.dtsi +++ b/zephyr/include/cros/nuvoton/npcx.dtsi @@ -15,6 +15,7 @@ cros-ec,bbram = &bbram; cros-ec,espi = &espi0; cros-ec,flash = &fiu0; + cros-ec,raw-kb = &cros_kb_raw; cros-ec,watchdog = &twd0; }; diff --git a/zephyr/shim/src/keyboard_raw.c b/zephyr/shim/src/keyboard_raw.c index 8de585a78f..474e1af5da 100644 --- a/zephyr/shim/src/keyboard_raw.c +++ b/zephyr/shim/src/keyboard_raw.c @@ -15,19 +15,17 @@ LOG_MODULE_REGISTER(shim_cros_kb_raw, LOG_LEVEL_ERR); -#define CROS_KB_RAW_NODE DT_NODELABEL(cros_kb_raw) -static const struct device *cros_kb_raw_dev; +BUILD_ASSERT(DT_HAS_CHOSEN(cros_ec_raw_kb), + "a cros-ec,raw-kb device must be chosen"); +#define cros_kb_raw_dev DEVICE_DT_GET(DT_CHOSEN(cros_ec_raw_kb)) /** * Initialize the raw keyboard interface. */ void keyboard_raw_init(void) { - cros_kb_raw_dev = DEVICE_DT_GET(CROS_KB_RAW_NODE); - if (!device_is_ready(cros_kb_raw_dev)) { - LOG_ERR("Error: device %s is not ready", cros_kb_raw_dev->name); - return; - } + if (!device_is_ready(cros_kb_raw_dev)) + k_oops(); LOG_INF("%s", __func__); cros_kb_raw_init(cros_kb_raw_dev); @@ -46,10 +44,7 @@ void keyboard_raw_task_start(void) */ test_mockable void keyboard_raw_drive_column(int col) { - if (cros_kb_raw_dev) - cros_kb_raw_drive_column(cros_kb_raw_dev, col); - else - LOG_ERR("%s: no cros_kb_raw device!", __func__); + cros_kb_raw_drive_column(cros_kb_raw_dev, col); } /** @@ -58,11 +53,7 @@ test_mockable void keyboard_raw_drive_column(int col) */ test_mockable int keyboard_raw_read_rows(void) { - if (cros_kb_raw_dev) - return cros_kb_raw_read_rows(cros_kb_raw_dev); - - LOG_ERR("%s: no cros_kb_raw device!", __func__); - return -EIO; + return cros_kb_raw_read_rows(cros_kb_raw_dev); } /** @@ -70,8 +61,5 @@ test_mockable int keyboard_raw_read_rows(void) */ void keyboard_raw_enable_interrupt(int enable) { - if (cros_kb_raw_dev) - cros_kb_raw_enable_interrupt(cros_kb_raw_dev, enable); - else - LOG_ERR("%s: no cros_kb_raw device!", __func__); + cros_kb_raw_enable_interrupt(cros_kb_raw_dev, enable); } |