mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
Input: i8042 - really suppress ACK/NAK during panic blink
On some boxes panic blink procedure manages to send both bytes to keyboard contoller before getting first ACK so we need to make i8042_suppress_kbd_ack a counter instead of boolean. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
65a2d2258e
commit
19f3c3e373
@ -371,7 +371,7 @@ static irqreturn_t i8042_interrupt(int irq, void *dev_id)
|
||||
if (unlikely(i8042_suppress_kbd_ack))
|
||||
if (port_no == I8042_KBD_PORT_NO &&
|
||||
(data == 0xfa || data == 0xfe)) {
|
||||
i8042_suppress_kbd_ack = 0;
|
||||
i8042_suppress_kbd_ack--;
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -838,13 +838,14 @@ static long i8042_panic_blink(long count)
|
||||
led ^= 0x01 | 0x04;
|
||||
while (i8042_read_status() & I8042_STR_IBF)
|
||||
DELAY;
|
||||
i8042_suppress_kbd_ack = 1;
|
||||
dbg("%02x -> i8042 (panic blink)", 0xed);
|
||||
i8042_suppress_kbd_ack = 2;
|
||||
i8042_write_data(0xed); /* set leds */
|
||||
DELAY;
|
||||
while (i8042_read_status() & I8042_STR_IBF)
|
||||
DELAY;
|
||||
DELAY;
|
||||
i8042_suppress_kbd_ack = 1;
|
||||
dbg("%02x -> i8042 (panic blink)", led);
|
||||
i8042_write_data(led);
|
||||
DELAY;
|
||||
last_blink = count;
|
||||
|
Loading…
Reference in New Issue
Block a user