mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 10:14:57 +00:00
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>
This commit is contained in:
@@ -14,7 +14,6 @@
|
||||
#define CONFIG_FANS 1
|
||||
#define CONFIG_I2C
|
||||
#define CONFIG_I2C_MASTER
|
||||
#define CONFIG_IT83XX_KEYBOARD_KSI_WUC_INT
|
||||
#define CONFIG_IT83XX_LPC_ACCESS_INT
|
||||
#define CONFIG_IT83XX_SMCLK2_ON_GPC7
|
||||
#define CONFIG_KEYBOARD_BOARD_CONFIG
|
||||
|
||||
@@ -466,7 +466,7 @@ static void __gpio_irq(void)
|
||||
/* Determine interrupt number. */
|
||||
int irq = intc_get_ec_int();
|
||||
|
||||
#if defined(HAS_TASK_KEYSCAN) && defined(CONFIG_IT83XX_KEYBOARD_KSI_WUC_INT)
|
||||
#ifdef HAS_TASK_KEYSCAN
|
||||
if (irq == IT83XX_IRQ_WKINTC) {
|
||||
keyboard_raw_interrupt();
|
||||
return;
|
||||
|
||||
@@ -23,11 +23,6 @@ void intc_cpu_int_group_5(void)
|
||||
case IT83XX_IRQ_KBC_IN:
|
||||
lpc_kbc_ibf_interrupt();
|
||||
break;
|
||||
#endif
|
||||
#if defined(HAS_TASK_KEYSCAN) && !defined(CONFIG_IT83XX_KEYBOARD_KSI_WUC_INT)
|
||||
case IT83XX_IRQ_KB_MATRIX:
|
||||
keyboard_raw_interrupt();
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -1173,9 +1173,6 @@
|
||||
*/
|
||||
#undef CONFIG_IT83XX_ILM_BLOCK_SIZE
|
||||
|
||||
/* Enable Wake-up control interrupt from KSI */
|
||||
#undef CONFIG_IT83XX_KEYBOARD_KSI_WUC_INT
|
||||
|
||||
/* LPC cycle can wake-up EC from doze / deep doze mode if define it. */
|
||||
#undef CONFIG_IT83XX_LPC_ACCESS_INT
|
||||
|
||||
|
||||
Reference in New Issue
Block a user