summaryrefslogtreecommitdiff
path: root/drivers/platform/x86/fujitsu-laptop.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/platform/x86/fujitsu-laptop.c')
-rw-r--r--drivers/platform/x86/fujitsu-laptop.c55
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;
}