summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMulin Chao <mlchao@nuvoton.com>2017-01-19 17:30:35 +0800
committerchrome-bot <chrome-bot@chromium.org>2017-01-19 21:27:50 -0800
commit0620490add051aa03b327a9c7dfea606195b7631 (patch)
tree71719a13c0f22e8eb1e482cd82d91a7cfabfdf9e
parent3baf37633e4e80f356d92ee5da0ddc0a0b463849 (diff)
downloadchrome-ec-0620490add051aa03b327a9c7dfea606195b7631.tar.gz
npcx: gpio: Add GPIO_INT support for KSI pins
On tablet platform, ec isn't in charge of keyboard and KSI pins are free to use. This CL adds MIWU group and GPIO's ISR for KSI pins if there is no keyboard scan task. BRANCH=none BUG=none TEST=test all KSI pins for GPIO_INT on npcx_evb. Change-Id: I76c8e48c067b6cb84e483eb94b104eb1998987be Signed-off-by: Mulin Chao <mlchao@nuvoton.com> Reviewed-on: https://chromium-review.googlesource.com/430554 Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r--chip/npcx/gpio.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/chip/npcx/gpio.c b/chip/npcx/gpio.c
index f0beddbfc0..1a05074c44 100644
--- a/chip/npcx/gpio.c
+++ b/chip/npcx/gpio.c
@@ -148,6 +148,7 @@ const struct gpio_wui_item gpio_wui_table[2][8] = {
NPCX_GPIO(1, 7), },
NPCX_IRQ_WKINTB_1 },
/* Group C */
+#ifdef HAS_TASK_KEYSCAN
{ { NPCX_GPIO_NONE,
NPCX_GPIO_NONE,
NPCX_GPIO_NONE,
@@ -157,6 +158,17 @@ const struct gpio_wui_item gpio_wui_table[2][8] = {
NPCX_GPIO_NONE,
NPCX_GPIO_NONE, },
NPCX_IRQ_COUNT },
+#else
+ { { NPCX_GPIO(3, 1),
+ NPCX_GPIO(3, 0),
+ NPCX_GPIO(2, 7),
+ NPCX_GPIO(2, 6),
+ NPCX_GPIO(2, 5),
+ NPCX_GPIO(2, 4),
+ NPCX_GPIO(2, 3),
+ NPCX_GPIO(2, 2), },
+ NPCX_IRQ_KSI_WKINTC_1 },
+#endif
/* Group D */
{ { NPCX_GPIO(2, 0),
NPCX_GPIO(2, 1),
@@ -828,6 +840,10 @@ GPIO_IRQ_FUNC(__gpio_wk0b_interrupt , NPCX_IRQ_TWD_WKINTB_0);
GPIO_IRQ_FUNC(__gpio_wk0c_interrupt , NPCX_IRQ_WKINTC_0);
GPIO_IRQ_FUNC(__gpio_wk1a_interrupt , NPCX_IRQ_WKINTA_1);
GPIO_IRQ_FUNC(__gpio_wk1b_interrupt , NPCX_IRQ_WKINTB_1);
+#ifndef HAS_TASK_KEYSCAN
+/* Delcare GPIO irq functions for KSI pins if there's no keyboard scan task, */
+GPIO_IRQ_FUNC(__gpio_wk1c_interrupt , NPCX_IRQ_KSI_WKINTC_1);
+#endif
GPIO_IRQ_FUNC(__gpio_wk1d_interrupt , NPCX_IRQ_WKINTD_1);
GPIO_IRQ_FUNC(__gpio_wk1e_interrupt , NPCX_IRQ_WKINTE_1);
GPIO_IRQ_FUNC(__gpio_wk1f_interrupt , NPCX_IRQ_WKINTF_1);
@@ -840,6 +856,9 @@ DECLARE_IRQ(NPCX_IRQ_WKINTC_0, __gpio_wk0c_interrupt, 2);
DECLARE_IRQ(NPCX_IRQ_WKINTEFGH_0, __gpio_wk0efgh_interrupt, 2);
DECLARE_IRQ(NPCX_IRQ_WKINTA_1, __gpio_wk1a_interrupt, 2);
DECLARE_IRQ(NPCX_IRQ_WKINTB_1, __gpio_wk1b_interrupt, 2);
+#ifndef HAS_TASK_KEYSCAN
+DECLARE_IRQ(NPCX_IRQ_KSI_WKINTC_1, __gpio_wk1c_interrupt, 2);
+#endif
DECLARE_IRQ(NPCX_IRQ_WKINTD_1, __gpio_wk1d_interrupt, 2);
DECLARE_IRQ(NPCX_IRQ_WKINTE_1, __gpio_wk1e_interrupt, 2);
#ifdef CONFIG_HOSTCMD_SPS