summaryrefslogtreecommitdiffstats
path: root/drivers/platform/x86/fujitsu-laptop.c
diff options
context:
space:
mode:
authorMichał Kępień2017-03-20 10:32:18 +0100
committerDarren Hart (VMware)2017-04-13 19:14:24 +0200
commitf8a399dcfae913e773cbef6a940755953cdd70a3 (patch)
tree9573fa0b3bfdd219e929b2f0c1673d406db7a457 /drivers/platform/x86/fujitsu-laptop.c
parentplatform/x86: fujitsu-laptop: refactor backlight input device setup (diff)
downloadkernel-qcow2-linux-f8a399dcfae913e773cbef6a940755953cdd70a3.tar.gz
kernel-qcow2-linux-f8a399dcfae913e773cbef6a940755953cdd70a3.tar.xz
kernel-qcow2-linux-f8a399dcfae913e773cbef6a940755953cdd70a3.zip
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: Michał Kępień <kernel@kempniu.pl> Reviewed-by: Jonathan Woithe <jwoithe@just42.net> Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
Diffstat (limited to 'drivers/platform/x86/fujitsu-laptop.c')
-rw-r--r--drivers/platform/x86/fujitsu-laptop.c47
1 files changed, 14 insertions, 33 deletions
diff --git a/drivers/platform/x86/fujitsu-laptop.c b/drivers/platform/x86/fujitsu-laptop.c
index 2b0dcf989e2a..68e338c6a876 100644
--- a/drivers/platform/x86/fujitsu-laptop.c
+++ b/drivers/platform/x86/fujitsu-laptop.c
@@ -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)
{
struct fujitsu_bl *fujitsu_bl = acpi_driver_data(device);
- struct input_dev *input;
- int error;
- fujitsu_bl->input = input = input_allocate_device();
- if (!input)
+ fujitsu_bl->input = devm_input_allocate_device(&device->dev);
+ if (!fujitsu_bl->input)
return -ENOMEM;
snprintf(fujitsu_bl->phys, sizeof(fujitsu_bl->phys),
"%s/video/input0", acpi_device_hid(device));
- input->name = acpi_device_name(device);
- input->phys = fujitsu_bl->phys;
- input->id.bustype = BUS_HOST;
- input->id.product = 0x06;
- input->dev.parent = &device->dev;
- input->evbit[0] = BIT(EV_KEY);
- set_bit(KEY_BRIGHTNESSUP, input->keybit);
- set_bit(KEY_BRIGHTNESSDOWN, 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);
+ fujitsu_bl->input->name = acpi_device_name(device);
+ fujitsu_bl->input->phys = fujitsu_bl->phys;
+ fujitsu_bl->input->id.bustype = BUS_HOST;
+ fujitsu_bl->input->id.product = 0x06;
+ fujitsu_bl->input->evbit[0] = BIT(EV_KEY);
+ set_bit(KEY_BRIGHTNESSUP, fujitsu_bl->input->keybit);
+ set_bit(KEY_BRIGHTNESSDOWN, fujitsu_bl->input->keybit);
+ set_bit(KEY_UNKNOWN, fujitsu_bl->input->keybit);
- return error;
+ return input_register_device(fujitsu_bl->input);
}
static int fujitsu_backlight_register(void)
@@ -659,12 +647,12 @@ static int acpi_fujitsu_bl_add(struct acpi_device *device)
error = acpi_fujitsu_bl_input_setup(device);
if (error)
- goto err_stop;
+ return error;
error = acpi_bus_update_power(fujitsu_bl->acpi_handle, &state);
if (error) {
pr_err("Error reading power state\n");
- goto err_unregister_input_dev;
+ return error;
}
pr_info("ACPI: %s [%s] (%s)\n",
@@ -704,24 +692,17 @@ static int acpi_fujitsu_bl_add(struct acpi_device *device)
if (acpi_video_get_backlight_type() == acpi_backlight_vendor) {
error = fujitsu_backlight_register();
if (error)
- goto err_unregister_input_dev;
+ return error;
}
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)
{
struct fujitsu_bl *fujitsu_bl = acpi_driver_data(device);
- struct input_dev *input = fujitsu_bl->input;
backlight_device_unregister(fujitsu_bl->bl_device);
- input_unregister_device(input);
fujitsu_bl->acpi_handle = NULL;