skbd
serio_set_drvdata(serio, skbd);
err = input_register_device(skbd->dev);
kfree(skbd);
struct skbd *skbd = serio_get_drvdata(serio);
input_unregister_device(skbd->dev);
kfree(skbd);
struct skbd *skbd = serio_get_drvdata(serio);
struct input_dev *dev = skbd->dev;
if (skbd->keycode[data & SKBD_KEY_MASK]) {
input_report_key(dev, skbd->keycode[data & SKBD_KEY_MASK],
struct skbd *skbd;
skbd = kzalloc_obj(*skbd);
if (!skbd || !input_dev)
skbd->serio = serio;
skbd->dev = input_dev;
snprintf(skbd->phys, sizeof(skbd->phys), "%s/input0", serio->phys);
memcpy(skbd->keycode, skbd_keycode, sizeof(skbd->keycode));
input_dev->phys = skbd->phys;
input_dev->keycode = skbd->keycode;