/* sermouse_interrupt() handles incoming characters, either gathering them into packets or passing them to the command routine as command output.  */
static irqreturn_t sermouse_interrupt(struct serio *serio, unsigned char data, unsigned int flags)
/* sermouse_interrupt() handles incoming characters, either gathering them into packets or passing them to the command routine as command output.  */
static irqreturn_t sermouse_interrupt(struct serio *serio, unsigned char data, unsigned int flags)
{
	struct sermouse *sermouse = serio_get_drvdata(serio);
	if (time_after(jiffies, sermouse->last + HZ/10))
		sermouse->count = 0;
	sermouse->last = jiffies;
	if (sermouse->type > SERIO_SUN)
		sermouse_process_ms(sermouse, data);
	else
		sermouse_process_msc(sermouse, data);
	return IRQ_HANDLED;
}