summaryrefslogtreecommitdiff
path: root/zephyr/include/soc
diff options
context:
space:
mode:
authorJun Lin <CHLin56@nuvoton.com>2021-03-26 17:29:16 +0800
committerCommit Bot <commit-bot@chromium.org>2021-03-31 15:22:58 +0000
commit6f75875da06461dd65f13e2741e16034d27b0289 (patch)
treeb01d31e859c9c04ee828b08e8d98262c9952351b /zephyr/include/soc
parentcf62c88b539f0ebc8935a8cf9c375002e7a9e33f (diff)
downloadchrome-ec-6f75875da06461dd65f13e2741e16034d27b0289.tar.gz
zephyr: npcx: support SHI driver
Add the support for SHI (Serial Host Interface) driver. This is used to transfer host commands between EC and ARM-based AP. BUG=b:182600858 BRANCH=none TEST=Test host command "version" and "Hello" on npcx7_evb and the host emulator. Signed-off-by: Jun Lin <CHLin56@nuvoton.com> Change-Id: I5f290fe910600162764f5728f094dd0f42d508ef Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2786887 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Commit-Queue: Jack Rosenthal <jrosenth@chromium.org> Tested-by: Jack Rosenthal <jrosenth@chromium.org>
Diffstat (limited to 'zephyr/include/soc')
-rw-r--r--zephyr/include/soc/nuvoton_npcx/reg_def_cros.h83
1 files changed, 83 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
index 7b577bed32..8702502a13 100644
--- a/zephyr/include/soc/nuvoton_npcx/reg_def_cros.h
+++ b/zephyr/include/soc/nuvoton_npcx/reg_def_cros.h
@@ -165,4 +165,87 @@ struct mtc_reg {
#define NPCX_WTC_PTO 30
#define NPCX_WTC_WIE 31
+/* SHI (Serial Host Interface) registers */
+struct shi_reg {
+ volatile uint8_t reserved1;
+ /* 0x001: SHI Configuration 1 */
+ volatile uint8_t SHICFG1;
+ /* 0x002: SHI Configuration 2 */
+ volatile uint8_t SHICFG2;
+ volatile uint8_t reserved2[2];
+ /* 0x005: Event Enable */
+ volatile uint8_t EVENABLE;
+ /* 0x006: Event Status */
+ volatile uint8_t EVSTAT;
+ /* 0x007: SHI Capabilities */
+ volatile uint8_t CAPABILITY;
+ /* 0x008: Status */
+ volatile uint8_t STATUS;
+ volatile uint8_t reserved3;
+ /* 0x00A: Input Buffer Status */
+ volatile uint8_t IBUFSTAT;
+ /* 0x00B: Output Buffer Status */
+ volatile uint8_t OBUFSTAT;
+ /* 0x00C: SHI Configuration 3 */
+ volatile uint8_t SHICFG3;
+ /* 0x00D: SHI Configuration 4 */
+ volatile uint8_t SHICFG4;
+ /* 0x00E: SHI Configuration 5 */
+ volatile uint8_t SHICFG5;
+ /* 0x00F: Event Status 2 */
+ volatile uint8_t EVSTAT2;
+ /* 0x010: Event Enable 2 */
+ volatile uint8_t EVENABLE2;
+ volatile uint8_t reserved4[15];
+ /* 0x20~0x9F: Output Buffer */
+ volatile uint8_t OBUF[128];
+ /* 0xA0~0x11F: Input Buffer */
+ volatile uint8_t IBUF[128];
+};
+
+/* SHI register fields */
+#define NPCX_SHICFG1_EN 0
+#define NPCX_SHICFG1_MODE 1
+#define NPCX_SHICFG1_WEN 2
+#define NPCX_SHICFG1_AUTIBF 3
+#define NPCX_SHICFG1_AUTOBE 4
+#define NPCX_SHICFG1_DAS 5
+#define NPCX_SHICFG1_CPOL 6
+#define NPCX_SHICFG1_IWRAP 7
+#define NPCX_SHICFG2_SIMUL 0
+#define NPCX_SHICFG2_BUSY 1
+#define NPCX_SHICFG2_ONESHOT 2
+#define NPCX_SHICFG2_SLWU 3
+#define NPCX_SHICFG2_REEN 4
+#define NPCX_SHICFG2_RESTART 5
+#define NPCX_SHICFG2_REEVEN 6
+#define NPCX_EVENABLE_OBEEN 0
+#define NPCX_EVENABLE_OBHEEN 1
+#define NPCX_EVENABLE_IBFEN 2
+#define NPCX_EVENABLE_IBHFEN 3
+#define NPCX_EVENABLE_EOREN 4
+#define NPCX_EVENABLE_EOWEN 5
+#define NPCX_EVENABLE_STSREN 6
+#define NPCX_EVENABLE_IBOREN 7
+#define NPCX_EVSTAT_OBE 0
+#define NPCX_EVSTAT_OBHE 1
+#define NPCX_EVSTAT_IBF 2
+#define NPCX_EVSTAT_IBHF 3
+#define NPCX_EVSTAT_EOR 4
+#define NPCX_EVSTAT_EOW 5
+#define NPCX_EVSTAT_STSR 6
+#define NPCX_EVSTAT_IBOR 7
+#define NPCX_STATUS_OBES 6
+#define NPCX_STATUS_IBFS 7
+#define NPCX_SHICFG3_OBUFLVLDIS 7
+#define NPCX_SHICFG4_IBUFLVLDIS 7
+#define NPCX_SHICFG5_IBUFLVL2 FIELD(0, 6)
+#define NPCX_SHICFG5_IBUFLVL2DIS 7
+#define NPCX_EVSTAT2_IBHF2 0
+#define NPCX_EVSTAT2_CSNRE 1
+#define NPCX_EVSTAT2_CSNFE 2
+#define NPCX_EVENABLE2_IBHF2EN 0
+#define NPCX_EVENABLE2_CSNREEN 1
+#define NPCX_EVENABLE2_CSNFEEN 2
+
#endif /* _NUVOTON_NPCX_REG_DEF_CROS_H */