static int s2w_input_connect(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id) { struct input_handle *handle; int error; if (input_dev_filter(dev)) return -ENODEV; handle = kzalloc(sizeof(struct input_handle), GFP_KERNEL); if (!handle) return -ENOMEM; handle->dev = dev; handle->handler = handler; handle->name = "s2w"; error = input_register_handle(handle); if (error) goto err2; error = input_open_device(handle); if (error) goto err1; return 0; err1: input_unregister_handle(handle); err2: kfree(handle); return error; }
static int sleepy_plug_input_connect(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id) { struct input_handle *handle; int error; if (input_dev_filter(dev->name)) return -ENODEV; handle = kzalloc(sizeof(struct input_handle), GFP_KERNEL); if (!handle) return -ENOMEM; handle->dev = dev; handle->handler = handler; handle->name = "intelliplug"; error = input_register_handle(handle); if (error) goto err2; error = input_open_device(handle); if (error) goto err1; pr_info("%s found and connected!\n", dev->name); return 0; err1: input_unregister_handle(handle); err2: kfree(handle); return error; }