diff options
author | Dino Li <dino.li@ite.com.tw> | 2016-03-21 16:03:14 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-03-22 21:39:26 -0700 |
commit | ba6e37787a7b2dc143d9d3f400f0d4ecc78eb829 (patch) | |
tree | f4aa7aa455d3c655cb604eb016779bc63ee97a79 /chip/it83xx/keyboard_raw.c | |
parent | 47e2912f4bd67b69dc2961c146a9e6674092cda8 (diff) | |
download | chrome-ec-ba6e37787a7b2dc143d9d3f400f0d4ecc78eb829.tar.gz |
it83xx: keyboard: remove "CONFIG_IT83XX_KEYBOARD_KSI_WUC_INT" and fix ISR
1. Always use wake-up control interrupt for keyboard KSI. This can also
wake-up EC from deep doze / sleep mode.
2. In keyboard ISR, we just clear interrupt status to prevent keyboard
interrupt can't be re-enabled.
(for example, a KSI interrupt wakes up keyboard scan task,
but keyboard_raw_read_rows() got 0.)
Signed-off-by: Dino Li <dino.li@ite.com.tw>
BRANCH=none
BUG=none
TEST=keyboard function is normally.
Change-Id: If8c292189c6133b179a63dedcb7a18abbc091312
Reviewed-on: https://chromium-review.googlesource.com/333865
Commit-Ready: Dino Li <dino.li@ite.com.tw>
Tested-by: Dino Li <dino.li@ite.com.tw>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'chip/it83xx/keyboard_raw.c')
-rw-r--r-- | chip/it83xx/keyboard_raw.c | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/chip/it83xx/keyboard_raw.c b/chip/it83xx/keyboard_raw.c index 343574e51a..42f877ffcc 100644 --- a/chip/it83xx/keyboard_raw.c +++ b/chip/it83xx/keyboard_raw.c @@ -35,7 +35,6 @@ void keyboard_raw_init(void) /* KSO[15:8] pins low. */ IT83XX_KBS_KSOH1 = 0x00; -#ifdef CONFIG_IT83XX_KEYBOARD_KSI_WUC_INT /* KSI[0-7] falling-edge triggered is selected */ IT83XX_WUC_WUEMR3 = 0xFF; @@ -46,10 +45,6 @@ void keyboard_raw_init(void) /* Enable WUC for KSI[0-7] */ IT83XX_WUC_WUENR3 = 0xFF; -#else - task_clear_pending_irq(IT83XX_IRQ_KB_MATRIX); -#endif - } /* @@ -57,14 +52,9 @@ void keyboard_raw_init(void) */ void keyboard_raw_task_start(void) { -#ifdef CONFIG_IT83XX_KEYBOARD_KSI_WUC_INT IT83XX_WUC_WUESR3 = 0xFF; task_clear_pending_irq(IT83XX_IRQ_WKINTC); task_enable_irq(IT83XX_IRQ_WKINTC); -#else - task_clear_pending_irq(IT83XX_IRQ_KB_MATRIX); - task_enable_irq(IT83XX_IRQ_KB_MATRIX); -#endif } /* @@ -104,20 +94,11 @@ test_mockable int keyboard_raw_read_rows(void) void keyboard_raw_enable_interrupt(int enable) { if (enable) { -#ifdef CONFIG_IT83XX_KEYBOARD_KSI_WUC_INT IT83XX_WUC_WUESR3 = 0xFF; task_clear_pending_irq(IT83XX_IRQ_WKINTC); task_enable_irq(IT83XX_IRQ_WKINTC); -#else - task_clear_pending_irq(IT83XX_IRQ_KB_MATRIX); - task_enable_irq(IT83XX_IRQ_KB_MATRIX); -#endif } else { -#ifdef CONFIG_IT83XX_KEYBOARD_KSI_WUC_INT task_disable_irq(IT83XX_IRQ_WKINTC); -#else - task_disable_irq(IT83XX_IRQ_KB_MATRIX); -#endif } } @@ -126,11 +107,8 @@ void keyboard_raw_enable_interrupt(int enable) */ void keyboard_raw_interrupt(void) { -#ifdef CONFIG_IT83XX_KEYBOARD_KSI_WUC_INT - task_disable_irq(IT83XX_IRQ_WKINTC); -#else - task_disable_irq(IT83XX_IRQ_KB_MATRIX); -#endif + IT83XX_WUC_WUESR3 = 0xFF; + task_clear_pending_irq(IT83XX_IRQ_WKINTC); /* Wake the scan task */ task_wake(TASK_ID_KEYSCAN); |