aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/sony_acpi.c
diff options
context:
space:
mode:
authorMattia Dongili <malattia@linux.it>2007-01-13 17:04:41 -0500
committerLen Brown <len.brown@intel.com>2007-02-13 03:06:44 -0500
commit7df03b82ed081777d2393ff8a5fb9d4a3a560f26 (patch)
tree908c83698ec370bef246396fcc9e0acc30fc2a21 /drivers/acpi/sony_acpi.c
parent57ede701af3bc0c153070133e7831332ffa1d761 (diff)
sony_acpi: Fix sony_acpi backlight registration and unregistration
Initialize the current brightness if the driver registration was successful and unregister the driver in the error exit path. Signed-off-by: Mattia Dongili <malattia@linux.it> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/sony_acpi.c')
-rw-r--r--drivers/acpi/sony_acpi.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/acpi/sony_acpi.c b/drivers/acpi/sony_acpi.c
index c65f5893e0e2..c01d98db2fc1 100644
--- a/drivers/acpi/sony_acpi.c
+++ b/drivers/acpi/sony_acpi.c
@@ -354,9 +354,14 @@ static int sony_acpi_add(struct acpi_device *device)
354 if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, "GBRT", &handle))) { 354 if (ACPI_SUCCESS(acpi_get_handle(sony_acpi_handle, "GBRT", &handle))) {
355 sony_backlight_device = backlight_device_register("sony", NULL, 355 sony_backlight_device = backlight_device_register("sony", NULL,
356 NULL, &sony_backlight_properties); 356 NULL, &sony_backlight_properties);
357
357 if (IS_ERR(sony_backlight_device)) { 358 if (IS_ERR(sony_backlight_device)) {
358 printk(LOG_PFX "unable to register backlight device\n"); 359 printk(LOG_PFX "unable to register backlight device\n");
360 sony_backlight_device = NULL;
359 } 361 }
362 else
363 sony_backlight_properties.brightness =
364 sony_backlight_get_brightness(sony_backlight_device);
360 } 365 }
361 366
362 for (item = sony_acpi_values; item->name; ++item) { 367 for (item = sony_acpi_values; item->name; ++item) {
@@ -400,6 +405,9 @@ static int sony_acpi_add(struct acpi_device *device)
400 return 0; 405 return 0;
401 406
402outproc: 407outproc:
408 if (sony_backlight_device)
409 backlight_device_unregister(sony_backlight_device);
410
403 for (item = sony_acpi_values; item->name; ++item) 411 for (item = sony_acpi_values; item->name; ++item)
404 if (item->proc) 412 if (item->proc)
405 remove_proc_entry(item->name, acpi_device_dir(device)); 413 remove_proc_entry(item->name, acpi_device_dir(device));