summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Marheine <pmarheine@chromium.org>2021-12-01 10:58:56 +1100
committerCommit Bot <commit-bot@chromium.org>2021-12-08 03:51:23 +0000
commit849ac6ee864eedc0eef6ce0b900f9645597c0086 (patch)
tree081ee253b5dc033706b0103e45e13bdc2deadb43
parentba2512fce12a15282a8120e1ddbf566383c251e6 (diff)
downloadchrome-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.dts13
-rw-r--r--zephyr/include/cros/ite/it8xxx2.dtsi13
-rw-r--r--zephyr/include/cros/nuvoton/npcx.dtsi1
-rw-r--r--zephyr/shim/src/keyboard_raw.c28
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);
}