platform/x86: panasonic-laptop: Use acpi_video_get_backlight_type()
authorHans de Goede <hdegoede@redhat.com>
Fri, 24 Jun 2022 11:23:40 +0000 (13:23 +0200)
committerHans de Goede <hdegoede@redhat.com>
Tue, 28 Jun 2022 19:45:45 +0000 (21:45 +0200)
Use acpi_video_get_backlight_type() to determine if we should register
the panasonic specific backlight interface. To avoid registering this
on systems where the ACPI or GPU native backlight control methods
should be used instead.

Tested-by: Stefan Seyfried <seife+kernel@b1-systems.com>
Tested-by: Kenneth Chan <kenneth.t.chan@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20220624112340.10130-8-hdegoede@redhat.com
drivers/platform/x86/panasonic-laptop.c

index 615e39c..d9a095d 100644 (file)
@@ -998,19 +998,23 @@ static int acpi_pcc_hotkey_add(struct acpi_device *device)
                pr_err("Couldn't retrieve BIOS data\n");
                goto out_input;
        }
-       /* initialize backlight */
-       memset(&props, 0, sizeof(struct backlight_properties));
-       props.type = BACKLIGHT_PLATFORM;
-       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)) {
-               result = PTR_ERR(pcc->backlight);
-               goto out_input;
-       }
 
-       /* read the initial brightness setting from the hardware */
-       pcc->backlight->props.brightness = pcc->sinf[SINF_AC_CUR_BRIGHT];
+       if (acpi_video_get_backlight_type() == acpi_backlight_vendor) {
+               /* initialize backlight */
+               memset(&props, 0, sizeof(struct backlight_properties));
+               props.type = BACKLIGHT_PLATFORM;
+               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)) {
+                       result = PTR_ERR(pcc->backlight);
+                       goto out_input;
+               }
+
+               /* read the initial brightness setting from the hardware */
+               pcc->backlight->props.brightness = pcc->sinf[SINF_AC_CUR_BRIGHT];
+       }
 
        /* Reset initial sticky key mode since the hardware register state is not consistent */
        acpi_pcc_write_sset(pcc, SINF_STICKY_KEY, 0);