Commit f8a399dc authored by Michał Kępień's avatar Michał Kępień Committed by Darren Hart (VMware)

platform/x86: fujitsu-laptop: switch to a managed backlight input device

Use a managed input device for brightness events in order to simplify
two error paths and one cleanup function while also reducing the number
of local variables required.  Remove double assignment to make
checkpatch happy.
Signed-off-by: default avatarMichał Kępień <kernel@kempniu.pl>
Reviewed-by: default avatarJonathan Woithe <jwoithe@just42.net>
Signed-off-by: default avatarDarren Hart (VMware) <dvhart@infradead.org>
parent 7d134e43
...@@ -593,36 +593,24 @@ static const struct dmi_system_id fujitsu_dmi_table[] __initconst = { ...@@ -593,36 +593,24 @@ static const struct dmi_system_id fujitsu_dmi_table[] __initconst = {
static int acpi_fujitsu_bl_input_setup(struct acpi_device *device) static int acpi_fujitsu_bl_input_setup(struct acpi_device *device)
{ {
struct fujitsu_bl *fujitsu_bl = acpi_driver_data(device); struct fujitsu_bl *fujitsu_bl = acpi_driver_data(device);
struct input_dev *input;
int error;
fujitsu_bl->input = input = input_allocate_device(); fujitsu_bl->input = devm_input_allocate_device(&device->dev);
if (!input) if (!fujitsu_bl->input)
return -ENOMEM; return -ENOMEM;
snprintf(fujitsu_bl->phys, sizeof(fujitsu_bl->phys), snprintf(fujitsu_bl->phys, sizeof(fujitsu_bl->phys),
"%s/video/input0", acpi_device_hid(device)); "%s/video/input0", acpi_device_hid(device));
input->name = acpi_device_name(device); fujitsu_bl->input->name = acpi_device_name(device);
input->phys = fujitsu_bl->phys; fujitsu_bl->input->phys = fujitsu_bl->phys;
input->id.bustype = BUS_HOST; fujitsu_bl->input->id.bustype = BUS_HOST;
input->id.product = 0x06; fujitsu_bl->input->id.product = 0x06;
input->dev.parent = &device->dev; fujitsu_bl->input->evbit[0] = BIT(EV_KEY);
input->evbit[0] = BIT(EV_KEY); set_bit(KEY_BRIGHTNESSUP, fujitsu_bl->input->keybit);
set_bit(KEY_BRIGHTNESSUP, input->keybit); set_bit(KEY_BRIGHTNESSDOWN, fujitsu_bl->input->keybit);
set_bit(KEY_BRIGHTNESSDOWN, input->keybit); set_bit(KEY_UNKNOWN, fujitsu_bl->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; return input_register_device(fujitsu_bl->input);
} }
static int fujitsu_backlight_register(void) static int fujitsu_backlight_register(void)
...@@ -659,12 +647,12 @@ static int acpi_fujitsu_bl_add(struct acpi_device *device) ...@@ -659,12 +647,12 @@ static int acpi_fujitsu_bl_add(struct acpi_device *device)
error = acpi_fujitsu_bl_input_setup(device); error = acpi_fujitsu_bl_input_setup(device);
if (error) if (error)
goto err_stop; return error;
error = acpi_bus_update_power(fujitsu_bl->acpi_handle, &state); error = acpi_bus_update_power(fujitsu_bl->acpi_handle, &state);
if (error) { if (error) {
pr_err("Error reading power state\n"); pr_err("Error reading power state\n");
goto err_unregister_input_dev; return error;
} }
pr_info("ACPI: %s [%s] (%s)\n", pr_info("ACPI: %s [%s] (%s)\n",
...@@ -704,24 +692,17 @@ static int acpi_fujitsu_bl_add(struct acpi_device *device) ...@@ -704,24 +692,17 @@ static int acpi_fujitsu_bl_add(struct acpi_device *device)
if (acpi_video_get_backlight_type() == acpi_backlight_vendor) { if (acpi_video_get_backlight_type() == acpi_backlight_vendor) {
error = fujitsu_backlight_register(); error = fujitsu_backlight_register();
if (error) if (error)
goto err_unregister_input_dev; return error;
} }
return 0; return 0;
err_unregister_input_dev:
input_unregister_device(fujitsu_bl->input);
err_stop:
return error;
} }
static int acpi_fujitsu_bl_remove(struct acpi_device *device) static int acpi_fujitsu_bl_remove(struct acpi_device *device)
{ {
struct fujitsu_bl *fujitsu_bl = acpi_driver_data(device); struct fujitsu_bl *fujitsu_bl = acpi_driver_data(device);
struct input_dev *input = fujitsu_bl->input;
backlight_device_unregister(fujitsu_bl->bl_device); backlight_device_unregister(fujitsu_bl->bl_device);
input_unregister_device(input);
fujitsu_bl->acpi_handle = NULL; fujitsu_bl->acpi_handle = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment