summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenji Chen <kenji.chen@intel.com>2014-10-26 21:58:40 +0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-01-08 22:34:43 +0000
commit6c6b8b336777d82f243aed06bcc53d34a0632cde (patch)
tree56a76d584f7bca6562e2f5cb7d631f308a0d3c67
parent89d5e7c01843cdf51f471ffb724004c47e10b60e (diff)
downloadchrome-ec-6c6b8b336777d82f243aed06bcc53d34a0632cde.tar.gz
EC:KBC: Wait until LPC host senses the IRQ and gets the character.
BRANCH=master BUG=chrome-os-partner:29139 TEST=Buiid an EC FW image and run on Rambi to test if key loss is improved and any side effect somes with this change. Need more test units to confirm this. Signed-off-by: Kenji Chen <kenji.chen@intel.com> Change-Id: I2399e33d2ca3defe8cd9b1f94ab0af1db7f84635 Reviewed-on: https://chromium-review.googlesource.com/225557 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Mohammed Habibulla <moch@chromium.org> (cherry picked from commit 8a1f1b045a2bffc0c3bf3941709acf4ba99d32e7) Reviewed-on: https://chromium-review.googlesource.com/239340 Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r--chip/lm4/lpc.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/chip/lm4/lpc.c b/chip/lm4/lpc.c
index 99f212af19..536b31fca3 100644
--- a/chip/lm4/lpc.c
+++ b/chip/lm4/lpc.c
@@ -92,11 +92,16 @@ static void keyboard_irq_assert(void)
* following falling edge, regardless of the line state before this
* function call.
*/
+ uint64_t tstop = get_time().val + MSEC;
gpio_set_level(CONFIG_KEYBOARD_IRQ_GPIO, 1);
udelay(4);
/* Generate a falling edge */
gpio_set_level(CONFIG_KEYBOARD_IRQ_GPIO, 0);
- udelay(4);
+ /* Wait for host senses the interrupt and gets the char. */
+ do {
+ if (get_time().val > tstop)
+ break;
+ } while (lpc_keyboard_has_char());
/* Set signal high, now that we've generated the edge */
gpio_set_level(CONFIG_KEYBOARD_IRQ_GPIO, 1);
}