zhenhua
if (zhenhua->idx == ZHENHUA_MAX_LENGTH) {
zhenhua_process_packet(zhenhua);
zhenhua->idx = 0;
struct zhenhua *zhenhua = serio_get_drvdata(serio);
input_unregister_device(zhenhua->dev);
kfree(zhenhua);
struct zhenhua *zhenhua;
zhenhua = kzalloc_obj(*zhenhua);
if (!zhenhua || !input_dev)
zhenhua->dev = input_dev;
snprintf(zhenhua->phys, sizeof(zhenhua->phys), "%s/input0", serio->phys);
input_dev->phys = zhenhua->phys;
serio_set_drvdata(serio, zhenhua);
err = input_register_device(zhenhua->dev);
kfree(zhenhua);
static void zhenhua_process_packet(struct zhenhua *zhenhua)
struct input_dev *dev = zhenhua->dev;
unsigned char *data = zhenhua->data;
struct zhenhua *zhenhua = serio_get_drvdata(serio);
zhenhua->idx = 0; /* this byte starts a new packet */
else if (zhenhua->idx == 0)
if (zhenhua->idx < ZHENHUA_MAX_LENGTH)
zhenhua->data[zhenhua->idx++] = bitrev8(data);