sermouse
if ((sermouse->type == SERIO_MS) && !data && !buf[2] && !((buf[0] & 0xf0) ^ buf[1]))
switch (sermouse->type) {
sermouse->type = SERIO_MP;
if (sermouse->type != SERIO_MZPP)
sermouse->count++;
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);
sermouse_process_msc(sermouse, data);
struct sermouse *sermouse = serio_get_drvdata(serio);
input_unregister_device(sermouse->dev);
kfree(sermouse);
struct sermouse *sermouse;
sermouse = kzalloc_obj(*sermouse);
if (!sermouse || !input_dev)
sermouse->dev = input_dev;
snprintf(sermouse->phys, sizeof(sermouse->phys), "%s/input0", serio->phys);
sermouse->type = serio->id.proto;
input_dev->name = sermouse_protocols[sermouse->type];
input_dev->phys = sermouse->phys;
input_dev->id.vendor = sermouse->type;
serio_set_drvdata(serio, sermouse);
err = input_register_device(sermouse->dev);
kfree(sermouse);
static void sermouse_process_msc(struct sermouse *sermouse, signed char data)
struct input_dev *dev = sermouse->dev;
signed char *buf = sermouse->buf;
switch (sermouse->count) {
if (++sermouse->count == 5)
sermouse->count = 0;
static void sermouse_process_ms(struct sermouse *sermouse, signed char data)
struct input_dev *dev = sermouse->dev;
signed char *buf = sermouse->buf;
sermouse->count = 0;
else if (sermouse->count == 0)
switch (sermouse->count) {