diff options
author | Simon Glass <sjg@chromium.org> | 2020-11-06 11:04:06 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-01-15 03:55:24 +0000 |
commit | c3d4badd49ab9c6239c67ea67f566ee810796793 (patch) | |
tree | c2433a4b4b2f962652b8f26f075d1c8db2a408cc /zephyr/include/soc/nuvoton_npcx/reg_def_cros.h | |
parent | f3f18351567b7ac37724b5668285eaad4359b226 (diff) | |
download | chrome-ec-c3d4badd49ab9c6239c67ea67f566ee810796793.tar.gz |
drivers: add NPCX7 cros_kb_raw driver
NPCX keyboard scanning module is supported by up to 18 open-drain
output signals and 8 input signals. Switch-based keyboard matrices are
supported by Schmitt trigger inputs that have internal pull-up
resistors. For power efficiency, the inputs include interrupt and
wake-up capability so that pressing/releasing keys can be identified
without scanning the keyboard matrix in either Active, Sleep or Deep
Sleep power state.
The CL also includes:
— Add npcx cros_kb_raw device tree declarations.
— cros_kb_raw api implementations
- Enable Volteer keyboard scan task
BRANCH=none
BUG=b:167405015, b:172676906
TEST=build pass by zmake configure -B ./build projects/experimental/volteer.
TEST=check all the keys on volteer platform by "ksstate".
Change-Id: I1cbdaa0e81cbb4447daede82774711f4d50f613d
Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Wealian Liao <whliao@nuvoton.corp-partner.google.com>
Signed-off-by: Mulin Chao <MLChao@nuvoton.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/zephyr-chrome/+/2523940
Commit-Queue: Jack Rosenthal <jrosenth@chromium.org>
Reviewed-by: Yuval Peress <peress@chromium.org>
Reviewed-by: Jett Rink <jettrink@chromium.org>
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2630148
Tested-by: Jack Rosenthal <jrosenth@chromium.org>
Diffstat (limited to 'zephyr/include/soc/nuvoton_npcx/reg_def_cros.h')
-rw-r--r-- | zephyr/include/soc/nuvoton_npcx/reg_def_cros.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/zephyr/include/soc/nuvoton_npcx/reg_def_cros.h b/zephyr/include/soc/nuvoton_npcx/reg_def_cros.h new file mode 100644 index 0000000000..022c58fc24 --- /dev/null +++ b/zephyr/include/soc/nuvoton_npcx/reg_def_cros.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2020 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* + * @file + * @brief Nuvoton NPCX register structure definitions used by the Chrome OS EC. + */ + +#ifndef _NUVOTON_NPCX_REG_DEF_CROS_H +#define _NUVOTON_NPCX_REG_DEF_CROS_H + +/* + * KBS (Keyboard Scan) device registers + */ +struct kbs_reg { + volatile uint8_t reserved1[4]; + /* 0x004: Keyboard Scan In */ + volatile uint8_t KBSIN; + /* 0x005: Keyboard Scan In Pull-Up Enable */ + volatile uint8_t KBSINPU; + /* 0x006: Keyboard Scan Out 0 */ + volatile uint16_t KBSOUT0; + /* 0x008: Keyboard Scan Out 1 */ + volatile uint16_t KBSOUT1; + /* 0x00A: Keyboard Scan Buffer Index */ + volatile uint8_t KBS_BUF_INDX; + /* 0x00B: Keyboard Scan Buffer Data */ + volatile uint8_t KBS_BUF_DATA; + /* 0x00C: Keyboard Scan Event */ + volatile uint8_t KBSEVT; + /* 0x00D: Keyboard Scan Control */ + volatile uint8_t KBSCTL; + /* 0x00E: Keyboard Scan Configuration Index */ + volatile uint8_t KBS_CFG_INDX; + /* 0x00F: Keyboard Scan Configuration Data */ + volatile uint8_t KBS_CFG_DATA; +}; + +/* KBS register fields */ +#define NPCX_KBSBUFINDX 0 +#define NPCX_KBSEVT_KBSDONE 0 +#define NPCX_KBSEVT_KBSERR 1 +#define NPCX_KBSCTL_START 0 +#define NPCX_KBSCTL_KBSMODE 1 +#define NPCX_KBSCTL_KBSIEN 2 +#define NPCX_KBSCTL_KBSINC 3 +#define NPCX_KBSCTL_KBHDRV_FIELD FIELD(6, 2) +#define NPCX_KBSCFGINDX 0 +/* Index of 'Automatic Scan' configuration register */ +#define KBS_CFG_INDX_DLY1 0 /* Keyboard Scan Delay T1 Byte */ +#define KBS_CFG_INDX_DLY2 1 /* Keyboard Scan Delay T2 Byte */ +#define KBS_CFG_INDX_RTYTO 2 /* Keyboard Scan Retry Timeout */ +#define KBS_CFG_INDX_CNUM 3 /* Keyboard Scan Columns Number */ +#define KBS_CFG_INDX_CDIV 4 /* Keyboard Scan Clock Divisor */ + +#endif /* _NUVOTON_NPCX_REG_DEF_CROS_H */ |