Commit 9e49f6c1 authored by Mike Frysinger's avatar Mike Frysinger Committed by Dmitry Torokhov

Input: bf54x-keys - fix system hang when pressing a key

We need to use the nosync version of disable_irq so that we don't hang in
the IRQ handler as we don't ACK the interrupt until later.  This used to
work regardless, but at some point, the IRQ behavior changed.  Not sure
when exactly.
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent eb8bff85
...@@ -162,7 +162,7 @@ static irqreturn_t bfin_kpad_isr(int irq, void *dev_id) ...@@ -162,7 +162,7 @@ static irqreturn_t bfin_kpad_isr(int irq, void *dev_id)
input_sync(input); input_sync(input);
if (bfin_kpad_get_keypressed(bf54x_kpad)) { if (bfin_kpad_get_keypressed(bf54x_kpad)) {
disable_irq(bf54x_kpad->irq); disable_irq_nosync(bf54x_kpad->irq);
bf54x_kpad->lastkey = key; bf54x_kpad->lastkey = key;
mod_timer(&bf54x_kpad->timer, mod_timer(&bf54x_kpad->timer,
jiffies + bf54x_kpad->keyup_test_jiffies); jiffies + bf54x_kpad->keyup_test_jiffies);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment