/* Event callback from the input module. Events that change the state of the hardware are processed here. If action can not be performed in interrupt context it is offloaded to atkbd_event_work.  */
static int atkbd_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
/* Event callback from the input module. Events that change the state of the hardware are processed here. If action can not be performed in interrupt context it is offloaded to atkbd_event_work.  */
static int atkbd_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
{
	struct atkbd *atkbd = input_get_drvdata(dev);
	if (!atkbd->write)
		return -1;
	switch (type) {
		case EV_LED:
			atkbd_schedule_event_work(atkbd, ATKBD_LED_EVENT_BIT);
			return 0;
		case EV_REP:
			if (!atkbd->softrepeat)
				atkbd_schedule_event_work(atkbd, ATKBD_REP_EVENT_BIT);
			return 0;
	}
	return -1;
}