static int acpi_fujitsu_laptop_input_setup(struct acpi_device *device)
{
struct fujitsu_laptop *fujitsu_laptop = acpi_driver_data(device);
- struct input_dev *input;
- int error;
- fujitsu_laptop->input = input = input_allocate_device();
- if (!input)
+ fujitsu_laptop->input = devm_input_allocate_device(&device->dev);
+ if (!fujitsu_laptop->input)
return -ENOMEM;
snprintf(fujitsu_laptop->phys, sizeof(fujitsu_laptop->phys),
"%s/video/input0", acpi_device_hid(device));
- input->name = acpi_device_name(device);
- input->phys = fujitsu_laptop->phys;
- input->id.bustype = BUS_HOST;
- input->id.product = 0x06;
- input->dev.parent = &device->dev;
-
- set_bit(EV_KEY, input->evbit);
- set_bit(fujitsu_bl->keycode1, input->keybit);
- set_bit(fujitsu_bl->keycode2, input->keybit);
- set_bit(fujitsu_bl->keycode3, input->keybit);
- set_bit(fujitsu_bl->keycode4, input->keybit);
- set_bit(fujitsu_bl->keycode5, input->keybit);
- set_bit(KEY_TOUCHPAD_TOGGLE, input->keybit);
- set_bit(KEY_UNKNOWN, input->keybit);
-
- error = input_register_device(input);
- if (error)
- goto err_free_input_dev;
-
- return 0;
-
-err_free_input_dev:
- input_free_device(input);
-
- return error;
+ fujitsu_laptop->input->name = acpi_device_name(device);
+ fujitsu_laptop->input->phys = fujitsu_laptop->phys;
+ fujitsu_laptop->input->id.bustype = BUS_HOST;
+ fujitsu_laptop->input->id.product = 0x06;
+
+ set_bit(EV_KEY, fujitsu_laptop->input->evbit);
+ set_bit(fujitsu_bl->keycode1, fujitsu_laptop->input->keybit);
+ set_bit(fujitsu_bl->keycode2, fujitsu_laptop->input->keybit);
+ set_bit(fujitsu_bl->keycode3, fujitsu_laptop->input->keybit);
+ set_bit(fujitsu_bl->keycode4, fujitsu_laptop->input->keybit);
+ set_bit(fujitsu_bl->keycode5, fujitsu_laptop->input->keybit);
+ set_bit(KEY_TOUCHPAD_TOGGLE, fujitsu_laptop->input->keybit);
+ set_bit(KEY_UNKNOWN, fujitsu_laptop->input->keybit);
+
+ return input_register_device(fujitsu_laptop->input);
}
static int fujitsu_laptop_platform_add(void)
error = acpi_bus_update_power(fujitsu_laptop->acpi_handle, &state);
if (error) {
pr_err("Error reading power state\n");
- goto err_unregister_input_dev;
+ goto err_free_fifo;
}
pr_info("ACPI: %s [%s] (%s)\n",
error = fujitsu_laptop_platform_add();
if (error)
- goto err_unregister_input_dev;
+ goto err_free_fifo;
#if IS_ENABLED(CONFIG_LEDS_CLASS)
if (call_fext_func(FUNC_LEDS, 0x0, 0x0, 0x0) & LOGOLAMP_POWERON) {
return result;
-err_unregister_input_dev:
- input_unregister_device(fujitsu_laptop->input);
err_free_fifo:
kfifo_free(&fujitsu_laptop->fifo);
err_stop:
static int acpi_fujitsu_laptop_remove(struct acpi_device *device)
{
struct fujitsu_laptop *fujitsu_laptop = acpi_driver_data(device);
- struct input_dev *input = fujitsu_laptop->input;
#if IS_ENABLED(CONFIG_LEDS_CLASS)
if (fujitsu_laptop->logolamp_registered)
fujitsu_laptop_platform_remove();
- input_unregister_device(input);
-
kfifo_free(&fujitsu_laptop->fifo);
fujitsu_laptop->acpi_handle = NULL;