summaryrefslogtreecommitdiff
path: root/chip/npcx/gpio.c
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 /chip/npcx/gpio.c
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>
Diffstat (limited to 'chip/npcx/gpio.c')
-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