diff options
Diffstat (limited to 'chip/lm4/lpc.c')
-rw-r--r-- | chip/lm4/lpc.c | 7 |
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); } |