warrior
struct warrior *warrior = serio_get_drvdata(serio);
input_unregister_device(warrior->dev);
kfree(warrior);
struct warrior *warrior;
warrior = kzalloc_obj(*warrior);
if (!warrior || !input_dev)
warrior->dev = input_dev;
snprintf(warrior->phys, sizeof(warrior->phys), "%s/input0", serio->phys);
input_dev->phys = warrior->phys;
serio_set_drvdata(serio, warrior);
err = input_register_device(warrior->dev);
kfree(warrior);
static void warrior_process_packet(struct warrior *warrior)
struct input_dev *dev = warrior->dev;
unsigned char *data = warrior->data;
if (!warrior->idx) return;
struct warrior *warrior = serio_get_drvdata(serio);
if (warrior->idx) warrior_process_packet(warrior);
warrior->idx = 0;
warrior->len = warrior_lengths[(data >> 4) & 7];
if (warrior->idx < warrior->len)
warrior->data[warrior->idx++] = data;
if (warrior->idx == warrior->len) {
if (warrior->idx) warrior_process_packet(warrior);
warrior->idx = 0;
warrior->len = 0;