diff options
Diffstat (limited to 'drivers/platform')
-rw-r--r-- | drivers/platform/x86/fujitsu-laptop.c | 55 |
1 files changed, 11 insertions, 44 deletions
diff --git a/drivers/platform/x86/fujitsu-laptop.c b/drivers/platform/x86/fujitsu-laptop.c index 22909063e9c4..c3e8df425e23 100644 --- a/drivers/platform/x86/fujitsu-laptop.c +++ b/drivers/platform/x86/fujitsu-laptop.c @@ -153,10 +153,6 @@ struct fujitsu_laptop { spinlock_t fifo_lock; int flags_supported; int flags_state; - int logolamp_registered; - int kblamps_registered; - int radio_led_registered; - int eco_led_registered; }; static struct fujitsu_laptop *fujitsu_laptop; @@ -726,31 +722,24 @@ static struct led_classdev eco_led = { .brightness_get = eco_led_get }; -static int acpi_fujitsu_laptop_leds_register(void) +static int acpi_fujitsu_laptop_leds_register(struct acpi_device *device) { int result = 0; if (call_fext_func(FUNC_LEDS, 0x0, 0x0, 0x0) & LOGOLAMP_POWERON) { - result = led_classdev_register(&fujitsu_laptop->pf_device->dev, - &logolamp_led); - if (result == 0) { - fujitsu_laptop->logolamp_registered = 1; - } else { + result = devm_led_classdev_register(&device->dev, + &logolamp_led); + if (result) pr_err("Could not register LED handler for logo lamp, error %i\n", result); - } } if ((call_fext_func(FUNC_LEDS, 0x0, 0x0, 0x0) & KEYBOARD_LAMPS) && (call_fext_func(FUNC_BUTTONS, 0x0, 0x0, 0x0) == 0x0)) { - result = led_classdev_register(&fujitsu_laptop->pf_device->dev, - &kblamps_led); - if (result == 0) { - fujitsu_laptop->kblamps_registered = 1; - } else { + result = devm_led_classdev_register(&device->dev, &kblamps_led); + if (result) pr_err("Could not register LED handler for keyboard lamps, error %i\n", result); - } } /* @@ -760,14 +749,10 @@ static int acpi_fujitsu_laptop_leds_register(void) * that an RF LED is present. */ if (call_fext_func(FUNC_BUTTONS, 0x0, 0x0, 0x0) & BIT(24)) { - result = led_classdev_register(&fujitsu_laptop->pf_device->dev, - &radio_led); - if (result == 0) { - fujitsu_laptop->radio_led_registered = 1; - } else { + result = devm_led_classdev_register(&device->dev, &radio_led); + if (result) pr_err("Could not register LED handler for radio LED, error %i\n", result); - } } /* Support for eco led is not always signaled in bit corresponding @@ -777,14 +762,10 @@ static int acpi_fujitsu_laptop_leds_register(void) */ if ((call_fext_func(FUNC_LEDS, 0x0, 0x0, 0x0) & BIT(14)) && (call_fext_func(FUNC_LEDS, 0x2, ECO_LED, 0x0) != UNSUPPORTED_CMD)) { - result = led_classdev_register(&fujitsu_laptop->pf_device->dev, - &eco_led); - if (result == 0) { - fujitsu_laptop->eco_led_registered = 1; - } else { + result = devm_led_classdev_register(&device->dev, &eco_led); + if (result) pr_err("Could not register LED handler for eco LED, error %i\n", result); - } } return result; @@ -872,7 +853,7 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device) if (error) goto err_free_fifo; - error = acpi_fujitsu_laptop_leds_register(); + error = acpi_fujitsu_laptop_leds_register(device); if (error) goto err_remove_platform_device; @@ -890,24 +871,10 @@ static int acpi_fujitsu_laptop_remove(struct acpi_device *device) { struct fujitsu_laptop *fujitsu_laptop = acpi_driver_data(device); - if (fujitsu_laptop->logolamp_registered) - led_classdev_unregister(&logolamp_led); - - if (fujitsu_laptop->kblamps_registered) - led_classdev_unregister(&kblamps_led); - - if (fujitsu_laptop->radio_led_registered) - led_classdev_unregister(&radio_led); - - if (fujitsu_laptop->eco_led_registered) - led_classdev_unregister(&eco_led); - fujitsu_laptop_platform_remove(); kfifo_free(&fujitsu_laptop->fifo); - fujitsu_laptop->acpi_handle = NULL; - return 0; } |