|
@@ -600,6 +600,7 @@ static int acpi_pcc_hotkey_resume(struct acpi_device *device)
|
|
|
|
|
|
static int acpi_pcc_hotkey_add(struct acpi_device *device)
|
|
|
{
|
|
|
+ struct backlight_properties props;
|
|
|
struct pcc_acpi *pcc;
|
|
|
int num_sifr, result;
|
|
|
|
|
@@ -637,24 +638,23 @@ static int acpi_pcc_hotkey_add(struct acpi_device *device)
|
|
|
if (result) {
|
|
|
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
|
|
|
"Error installing keyinput handler\n"));
|
|
|
- goto out_sinf;
|
|
|
+ goto out_hotkey;
|
|
|
}
|
|
|
|
|
|
- /* initialize backlight */
|
|
|
- pcc->backlight = backlight_device_register("panasonic", NULL, pcc,
|
|
|
- &pcc_backlight_ops);
|
|
|
- if (IS_ERR(pcc->backlight))
|
|
|
- goto out_input;
|
|
|
-
|
|
|
if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) {
|
|
|
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
|
|
|
"Couldn't retrieve BIOS data\n"));
|
|
|
- goto out_backlight;
|
|
|
+ goto out_input;
|
|
|
}
|
|
|
+ /* initialize backlight */
|
|
|
+ memset(&props, 0, sizeof(struct backlight_properties));
|
|
|
+ props.max_brightness = pcc->sinf[SINF_AC_MAX_BRIGHT];
|
|
|
+ pcc->backlight = backlight_device_register("panasonic", NULL, pcc,
|
|
|
+ &pcc_backlight_ops, &props);
|
|
|
+ if (IS_ERR(pcc->backlight))
|
|
|
+ goto out_sinf;
|
|
|
|
|
|
/* read the initial brightness setting from the hardware */
|
|
|
- pcc->backlight->props.max_brightness =
|
|
|
- pcc->sinf[SINF_AC_MAX_BRIGHT];
|
|
|
pcc->backlight->props.brightness = pcc->sinf[SINF_AC_CUR_BRIGHT];
|
|
|
|
|
|
/* read the initial sticky key mode from the hardware */
|
|
@@ -669,12 +669,12 @@ static int acpi_pcc_hotkey_add(struct acpi_device *device)
|
|
|
|
|
|
out_backlight:
|
|
|
backlight_device_unregister(pcc->backlight);
|
|
|
+out_sinf:
|
|
|
+ kfree(pcc->sinf);
|
|
|
out_input:
|
|
|
input_unregister_device(pcc->input_dev);
|
|
|
/* no need to input_free_device() since core input API refcount and
|
|
|
* free()s the device */
|
|
|
-out_sinf:
|
|
|
- kfree(pcc->sinf);
|
|
|
out_hotkey:
|
|
|
kfree(pcc);
|
|
|
|