/* i8042_filter() filters out unwanted bytes from the input data stream. It is called from i8042_interrupt and thus is running with interrupts off and i8042_lock held.  */
static bool i8042_filter(unsigned char data, unsigned char str, struct serio *serio)
/* i8042_filter() filters out unwanted bytes from the input data stream. It is called from i8042_interrupt and thus is running with interrupts off and i8042_lock held.  */
static bool i8042_filter(unsigned char data, unsigned char str, struct serio *serio)
{
	if (unlikely(i8042_suppress_kbd_ack)) {
		if ((~str & I8042_STR_AUXDATA) &&
		    (data == 0xfa || data == 0xfe)) {
			i8042_suppress_kbd_ack--;
			dbg("Extra keyboard ACK - filtered out\n");
			return true;
		}
	}
	if (i8042_platform_filter && i8042_platform_filter(data, str, serio)) {
		dbg("Filtered out by platfrom filter\n");
		return true;
	}
	return false;
}