platform/x86: fujitsu-laptop: only register backlight device if FUJ02B1 is present

As the backlight device registered by fujitsu-laptop relies on the
FUJ02B1 ACPI device being present, only register the backlight device
once that ACPI device is detected.

Suggested-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Signed-off-by: Michał Kępień <kernel@kempniu.pl>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-and-tested-by: Jonathan Woithe <jwoithe@just42.net>
This commit is contained in:
Michał Kępień 2017-03-10 11:50:35 +01:00 committed by Darren Hart
parent 1877e267b3
commit aea3137c2c
1 changed files with 10 additions and 14 deletions

View File

@ -781,6 +781,12 @@ static int acpi_fujitsu_bl_add(struct acpi_device *device)
fujitsu_bl->max_brightness = FUJITSU_LCD_N_LEVELS;
get_lcd_level();
if (acpi_video_get_backlight_type() == acpi_backlight_vendor) {
error = fujitsu_backlight_register();
if (error)
goto err_unregister_input_dev;
}
return 0;
err_unregister_input_dev:
@ -797,6 +803,7 @@ static int acpi_fujitsu_bl_remove(struct acpi_device *device)
struct fujitsu_bl *fujitsu_bl = acpi_driver_data(device);
struct input_dev *input = fujitsu_bl->input;
backlight_device_unregister(fujitsu_bl->bl_device);
input_unregister_device(input);
fujitsu_bl->acpi_handle = NULL;
@ -948,7 +955,8 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device)
pr_info("BTNI: [0x%x]\n", call_fext_func(FUNC_BUTTONS, 0x0, 0x0, 0x0));
/* Sync backlight power status */
if (acpi_video_get_backlight_type() == acpi_backlight_vendor) {
if (fujitsu_bl->bl_device &&
acpi_video_get_backlight_type() == acpi_backlight_vendor) {
if (call_fext_func(FUNC_BACKLIGHT, 0x2, 0x4, 0x0) == 3)
fujitsu_bl->bl_device->props.power = FB_BLANK_POWERDOWN;
else
@ -1248,17 +1256,9 @@ static int __init fujitsu_init(void)
if (ret)
goto fail_platform_device2;
/* Register backlight stuff */
if (acpi_video_get_backlight_type() == acpi_backlight_vendor) {
ret = fujitsu_backlight_register();
if (ret)
goto fail_sysfs_group;
}
ret = platform_driver_register(&fujitsu_pf_driver);
if (ret)
goto fail_backlight;
goto fail_sysfs_group;
/* Register laptop driver */
@ -1280,8 +1280,6 @@ static int __init fujitsu_init(void)
kfree(fujitsu_laptop);
fail_laptop:
platform_driver_unregister(&fujitsu_pf_driver);
fail_backlight:
backlight_device_unregister(fujitsu_bl->bl_device);
fail_sysfs_group:
sysfs_remove_group(&fujitsu_bl->pf_device->dev.kobj,
&fujitsu_pf_attribute_group);
@ -1305,8 +1303,6 @@ static void __exit fujitsu_cleanup(void)
platform_driver_unregister(&fujitsu_pf_driver);
backlight_device_unregister(fujitsu_bl->bl_device);
sysfs_remove_group(&fujitsu_bl->pf_device->dev.kobj,
&fujitsu_pf_attribute_group);