platform/x86: fujitsu-laptop: sync backlight power status in acpi_fujitsu_laptop_add()
authorMichał Kępień <kernel@kempniu.pl>
Fri, 10 Mar 2017 10:50:34 +0000 (11:50 +0100)
committerDarren Hart <dvhart@infradead.org>
Wed, 15 Mar 2017 05:57:17 +0000 (22:57 -0700)
Registering an ACPI driver does not mean the device it handles has to
exist.  As the code which syncs backlight power status uses
call_fext_func(), it needs the FUJ02E3 ACPI device to be present, so
ensure that code is only run once the FUJ02E3 device is detected.

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>
drivers/platform/x86/fujitsu-laptop.c

index 897438f..d96f739 100644 (file)
@@ -947,6 +947,14 @@ static int acpi_fujitsu_laptop_add(struct acpi_device *device)
        /* Suspect this is a keymap of the application panel, print it */
        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 (call_fext_func(FUNC_BACKLIGHT, 0x2, 0x4, 0x0) == 3)
+                       fujitsu_bl->bl_device->props.power = FB_BLANK_POWERDOWN;
+               else
+                       fujitsu_bl->bl_device->props.power = FB_BLANK_UNBLANK;
+       }
+
 #if IS_ENABLED(CONFIG_LEDS_CLASS)
        if (call_fext_func(FUNC_LEDS, 0x0, 0x0, 0x0) & LOGOLAMP_POWERON) {
                result = led_classdev_register(&fujitsu_bl->pf_device->dev,
@@ -1264,14 +1272,6 @@ static int __init fujitsu_init(void)
        if (ret)
                goto fail_laptop1;
 
-       /* Sync backlight power status (needs FUJ02E3 device, hence deferred) */
-       if (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
-                       fujitsu_bl->bl_device->props.power = FB_BLANK_UNBLANK;
-       }
-
        pr_info("driver " FUJITSU_DRIVER_VERSION " successfully loaded\n");
 
        return 0;