summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDino Li <dino.li@ite.com.tw>2015-08-04 16:59:56 +0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-04 22:27:01 +0000
commit9495f669d5db920a210e8610cc0f4254d7f78ce3 (patch)
tree5b3bc0bb71a24022cff39fc3e7f67b2fcfc6071c
parent6132b4fbc0590f8ea3f36649a77d36d28b92a95c (diff)
downloadchrome-ec-9495f669d5db920a210e8610cc0f4254d7f78ce3.tar.gz
it8380dev: fix keyboard no break code
Wake up task to send the remaining scan codes after OBE(host read data) or IBF(host send command/data). Signed-off-by: Dino Li <dino.li@ite.com.tw> BRANCH=none BUG=none TEST=EC complete sending scan codes. Change-Id: Ie71140bbdfe5fcaccd5d16fd35b426004c218ba8 Reviewed-on: https://chromium-review.googlesource.com/290088 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Dino Li <dino.li@ite.com.tw> Tested-by: Dino Li <dino.li@ite.com.tw>
-rw-r--r--chip/it83xx/lpc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/chip/it83xx/lpc.c b/chip/it83xx/lpc.c
index 95fcb23aee..c0aae46de0 100644
--- a/chip/it83xx/lpc.c
+++ b/chip/it83xx/lpc.c
@@ -280,8 +280,10 @@ void lpc_keyboard_put_char(uint8_t chr, int send_irq)
udelay(16);
+ task_clear_pending_irq(IT83XX_IRQ_KBC_OUT);
/* The data output to the KBC Data Output Register. */
IT83XX_KBC_KBHIKDOR = chr;
+ task_enable_irq(IT83XX_IRQ_KBC_OUT);
}
void lpc_keyboard_clear_buffer(void)
@@ -379,6 +381,10 @@ void lpc_kbc_ibf_interrupt(void)
}
task_clear_pending_irq(IT83XX_IRQ_KBC_IN);
+
+#ifdef HAS_TASK_KEYPROTO
+ task_wake(TASK_ID_KEYPROTO);
+#endif
}
void lpc_kbc_obe_interrupt(void)
@@ -392,6 +398,10 @@ void lpc_kbc_obe_interrupt(void)
IT83XX_KBC_KBHICR |= 0x01;
}
+
+#ifdef HAS_TASK_KEYPROTO
+ task_wake(TASK_ID_KEYPROTO);
+#endif
}
void pm1_ibf_interrupt(void)