Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19f3c3e3 authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

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: default avatarDmitry Torokhov <dtor@mail.ru>
parent 65a2d225
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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;