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

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

Use a managed input device for hotkey 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 11182dbc
...@@ -759,41 +759,29 @@ static void acpi_fujitsu_bl_notify(struct acpi_device *device, u32 event) ...@@ -759,41 +759,29 @@ static void acpi_fujitsu_bl_notify(struct acpi_device *device, u32 event)
static int acpi_fujitsu_laptop_input_setup(struct acpi_device *device) static int acpi_fujitsu_laptop_input_setup(struct acpi_device *device)
{ {
struct fujitsu_laptop *fujitsu_laptop = acpi_driver_data(device); struct fujitsu_laptop *fujitsu_laptop = acpi_driver_data(device);
struct input_dev *input;
int error;
fujitsu_laptop->input = input = input_allocate_device(); fujitsu_laptop->input = devm_input_allocate_device(&device->dev);
if (!input) if (!fujitsu_laptop->input)
return -ENOMEM; return -ENOMEM;
snprintf(fujitsu_laptop->phys, sizeof(fujitsu_laptop->phys), snprintf(fujitsu_laptop->phys, sizeof(fujitsu_laptop->phys),
"%s/video/input0", acpi_device_hid(device)); "%s/video/input0", acpi_device_hid(device));
input->name = acpi_device_name(device); fujitsu_laptop->input->name = acpi_device_name(device);
input->phys = fujitsu_laptop->phys; fujitsu_laptop->input->phys = fujitsu_laptop->phys;
input->id.bustype = BUS_HOST; fujitsu_laptop->input->id.bustype = BUS_HOST;
input->id.product = 0x06; fujitsu_laptop->input->id.product = 0x06;
input->dev.parent = &device->dev;
set_bit(EV_KEY, fujitsu_laptop->input->evbit);
set_bit(EV_KEY, input->evbit); set_bit(fujitsu_bl->keycode1, fujitsu_laptop->input->keybit);
set_bit(fujitsu_bl->keycode1, input->keybit); set_bit(fujitsu_bl->keycode2, fujitsu_laptop->input->keybit);
set_bit(fujitsu_bl->keycode2, input->keybit); set_bit(fujitsu_bl->keycode3, fujitsu_laptop->input->keybit);
set_bit(fujitsu_bl->keycode3, input->keybit); set_bit(fujitsu_bl->keycode4, fujitsu_laptop->input->keybit);
set_bit(fujitsu_bl->keycode4, input->keybit); set_bit(fujitsu_bl->keycode5, fujitsu_laptop->input->keybit);
set_bit(fujitsu_bl->keycode5, input->keybit); set_bit(KEY_TOUCHPAD_TOGGLE, fujitsu_laptop->input->keybit);
set_bit(KEY_TOUCHPAD_TOGGLE, input->keybit); set_bit(KEY_UNKNOWN, fujitsu_laptop->input->keybit);
set_bit(KEY_UNKNOWN, input->keybit);
return input_register_device(fujitsu_laptop->input);
error = input_register_device(input);
if (error)
goto err_free_input_dev;
return 0;
err_free_input_dev:
input_free_device(input);
return error;
} }
static int fujitsu_laptop_platform_add(void) static int fujitsu_laptop_platform_add(void)
...@@ -862,7 +850,7 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device) ...@@ -862,7 +850,7 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device)
error = acpi_bus_update_power(fujitsu_laptop->acpi_handle, &state); error = acpi_bus_update_power(fujitsu_laptop->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; goto err_free_fifo;
} }
pr_info("ACPI: %s [%s] (%s)\n", pr_info("ACPI: %s [%s] (%s)\n",
...@@ -911,7 +899,7 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device) ...@@ -911,7 +899,7 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device)
error = fujitsu_laptop_platform_add(); error = fujitsu_laptop_platform_add();
if (error) if (error)
goto err_unregister_input_dev; goto err_free_fifo;
#if IS_ENABLED(CONFIG_LEDS_CLASS) #if IS_ENABLED(CONFIG_LEDS_CLASS)
if (call_fext_func(FUNC_LEDS, 0x0, 0x0, 0x0) & LOGOLAMP_POWERON) { if (call_fext_func(FUNC_LEDS, 0x0, 0x0, 0x0) & LOGOLAMP_POWERON) {
...@@ -974,8 +962,6 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device) ...@@ -974,8 +962,6 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device)
return result; return result;
err_unregister_input_dev:
input_unregister_device(fujitsu_laptop->input);
err_free_fifo: err_free_fifo:
kfifo_free(&fujitsu_laptop->fifo); kfifo_free(&fujitsu_laptop->fifo);
err_stop: err_stop:
...@@ -985,7 +971,6 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device) ...@@ -985,7 +971,6 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device)
static int acpi_fujitsu_laptop_remove(struct acpi_device *device) static int acpi_fujitsu_laptop_remove(struct acpi_device *device)
{ {
struct fujitsu_laptop *fujitsu_laptop = acpi_driver_data(device); struct fujitsu_laptop *fujitsu_laptop = acpi_driver_data(device);
struct input_dev *input = fujitsu_laptop->input;
#if IS_ENABLED(CONFIG_LEDS_CLASS) #if IS_ENABLED(CONFIG_LEDS_CLASS)
if (fujitsu_laptop->logolamp_registered) if (fujitsu_laptop->logolamp_registered)
...@@ -1003,8 +988,6 @@ static int acpi_fujitsu_laptop_remove(struct acpi_device *device) ...@@ -1003,8 +988,6 @@ static int acpi_fujitsu_laptop_remove(struct acpi_device *device)
fujitsu_laptop_platform_remove(); fujitsu_laptop_platform_remove();
input_unregister_device(input);
kfifo_free(&fujitsu_laptop->fifo); kfifo_free(&fujitsu_laptop->fifo);
fujitsu_laptop->acpi_handle = NULL; fujitsu_laptop->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