diff options
author | Ruibin Chang <Ruibin.Chang@ite.com.tw> | 2021-05-17 15:50:43 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-05-18 09:06:40 +0000 |
commit | 6aabf0406bf3e848ee171d705963e8c3d18106ba (patch) | |
tree | c9f31a8a8e01d9889ba5e165aea5be6dcd8f4349 /zephyr/shim/src/keyboard_raw.c | |
parent | 4f3384749a9707d36115ab5b7ced11f793ce73c4 (diff) | |
download | chrome-ec-6aabf0406bf3e848ee171d705963e8c3d18106ba.tar.gz |
zephyr: move keyboard_raw most functions to shim/src
Move shim/chip/npcx/keyboard_raw.c most functions to
shim/src/keyboard_raw.c.
BUG=none
BRANCH=none
TEST=zmake -lDEBUG configure -B zephyr/build
-b zephyr/projects/volteer/volteer
Signed-off-by: Ruibin Chang <Ruibin.Chang@ite.com.tw>
Change-Id: Ic69752223517cabb9e1d1c7ff16c9eb4914186db
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2900122
Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'zephyr/shim/src/keyboard_raw.c')
-rw-r--r-- | zephyr/shim/src/keyboard_raw.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/zephyr/shim/src/keyboard_raw.c b/zephyr/shim/src/keyboard_raw.c new file mode 100644 index 0000000000..a8017cc0cf --- /dev/null +++ b/zephyr/shim/src/keyboard_raw.c @@ -0,0 +1,77 @@ +/* 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. + */ + +/* Functions needed by keyboard scanner module for Chrome EC */ + +#include <device.h> +#include <logging/log.h> +#include <soc.h> +#include <zephyr.h> + +#include "drivers/cros_kb_raw.h" +#include "keyboard_raw.h" + +LOG_MODULE_REGISTER(shim_cros_kb_raw, LOG_LEVEL_ERR); + +#define CROS_KB_RAW_DEV DT_LABEL(DT_NODELABEL(cros_kb_raw)) +static const struct device *cros_kb_raw_dev; + +/** + * Initialize the raw keyboard interface. + */ +void keyboard_raw_init(void) +{ + cros_kb_raw_dev = device_get_binding(CROS_KB_RAW_DEV); + if (!cros_kb_raw_dev) { + LOG_ERR("Fail to find %s", CROS_KB_RAW_DEV); + return; + } + + LOG_INF("%s", __func__); + cros_kb_raw_init(cros_kb_raw_dev); +} + +/** + * Finish initialization after task scheduling has started. + */ +void keyboard_raw_task_start(void) +{ + keyboard_raw_enable_interrupt(1); +} + +/** + * Drive the specified column low. + */ +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__); +} + +/** + * Read raw row state. + * Bits are 1 if signal is present, 0 if not present. + */ +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; +} + +/** + * Enable or disable keyboard interrupts. + */ +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__); +} |