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