/* i8042_flush() flushes all data that may be in the keyboard and mouse buffers of the i8042 down the toilet.  */
static int i8042_flush(void)
/* i8042_flush() flushes all data that may be in the keyboard and mouse buffers of the i8042 down the toilet.  */
static int i8042_flush(void)
{
	unsigned long flags;
	unsigned char data, str;
	int i = 0;
	spin_lock_irqsave(&i8042_lock, flags);
	while (((str = i8042_read_status()) & I8042_STR_OBF) && (i < I8042_BUFFER_SIZE)) {
		udelay(50);
		data = i8042_read_data();
		i++;
		dbg("%02x <- i8042 (flush, %s)", data,
			str & I8042_STR_AUXDATA ? "aux" : "kbd");
	}
	spin_unlock_irqrestore(&i8042_lock, flags);
	return i;
}