xtkbd
serio_set_drvdata(serio, xtkbd);
err = input_register_device(xtkbd->dev);
kfree(xtkbd);
struct xtkbd *xtkbd = serio_get_drvdata(serio);
input_unregister_device(xtkbd->dev);
kfree(xtkbd);
struct xtkbd *xtkbd = serio_get_drvdata(serio);
if (xtkbd->keycode[data & XTKBD_KEY]) {
input_report_key(xtkbd->dev, xtkbd->keycode[data & XTKBD_KEY], !(data & XTKBD_RELEASE));
input_sync(xtkbd->dev);
struct xtkbd *xtkbd;
xtkbd = kmalloc_obj(*xtkbd);
if (!xtkbd || !input_dev)
xtkbd->serio = serio;
xtkbd->dev = input_dev;
snprintf(xtkbd->phys, sizeof(xtkbd->phys), "%s/input0", serio->phys);
memcpy(xtkbd->keycode, xtkbd_keycode, sizeof(xtkbd->keycode));
input_dev->phys = xtkbd->phys;
input_dev->keycode = xtkbd->keycode;
set_bit(xtkbd->keycode[i], input_dev->keybit);