acpi_video_set_dmi_backlight_type() is troublesome because it may end up
getting called after other backlight drivers have already called
acpi_video_get_backlight_type() resulting in the other drivers
already being registered even though they should not.

Move all the acpi_backlight=[vendor|native] quirks from samsung-laptop to
drivers/acpi/video_detect.c .

Note the X360 -> acpi_backlight=native quirk is not moved because that
already was present in drivers/acpi/video_detect.c .

Acked-by: Rafael J. Wysocki <rafael.j.wyso...@intel.com>
Signed-off-by: Hans de Goede <hdego...@redhat.com>
---
 drivers/acpi/video_detect.c           | 54 +++++++++++++++++
 drivers/platform/x86/samsung-laptop.c | 87 ---------------------------
 2 files changed, 54 insertions(+), 87 deletions(-)

diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c
index a09089e7fada..3861d4121172 100644
--- a/drivers/acpi/video_detect.c
+++ b/drivers/acpi/video_detect.c
@@ -222,6 +222,33 @@ static const struct dmi_system_id video_detect_dmi_table[] 
= {
                DMI_MATCH(DMI_PRODUCT_NAME, "GB-BXBT-2807"),
                },
        },
+       {
+        .callback = video_detect_force_vendor,
+        /* Samsung N150/N210/N220 */
+        .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
+               DMI_MATCH(DMI_PRODUCT_NAME, "N150/N210/N220"),
+               DMI_MATCH(DMI_BOARD_NAME, "N150/N210/N220"),
+               },
+       },
+       {
+        .callback = video_detect_force_vendor,
+        /* Samsung NF110/NF210/NF310 */
+        .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
+               DMI_MATCH(DMI_PRODUCT_NAME, "NF110/NF210/NF310"),
+               DMI_MATCH(DMI_BOARD_NAME, "NF110/NF210/NF310"),
+               },
+       },
+       {
+        .callback = video_detect_force_vendor,
+        /* Samsung NC210 */
+        .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
+               DMI_MATCH(DMI_PRODUCT_NAME, "NC210/NC110"),
+               DMI_MATCH(DMI_BOARD_NAME, "NC210/NC110"),
+               },
+       },
        {
        .callback = video_detect_force_vendor,
        /* Sony VPCEH3U1E */
@@ -572,6 +599,33 @@ static const struct dmi_system_id video_detect_dmi_table[] 
= {
                DMI_MATCH(DMI_PRODUCT_NAME, "UX303UB"),
                },
        },
+       {
+        .callback = video_detect_force_native,
+        /* Samsung N150P */
+        .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
+               DMI_MATCH(DMI_PRODUCT_NAME, "N150P"),
+               DMI_MATCH(DMI_BOARD_NAME, "N150P"),
+               },
+       },
+       {
+        .callback = video_detect_force_native,
+        /* Samsung N145P/N250P/N260P */
+        .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
+               DMI_MATCH(DMI_PRODUCT_NAME, "N145P/N250P/N260P"),
+               DMI_MATCH(DMI_BOARD_NAME, "N145P/N250P/N260P"),
+               },
+       },
+       {
+        .callback = video_detect_force_native,
+        /* Samsung N250P */
+        .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
+               DMI_MATCH(DMI_PRODUCT_NAME, "N250P"),
+               DMI_MATCH(DMI_BOARD_NAME, "N250P"),
+               },
+       },
        /*
         * Clevo NL5xRU and NL5xNU/TUXEDO Aura 15 Gen1 and Gen2 have both a
         * working native and video interface. However the default detection
diff --git a/drivers/platform/x86/samsung-laptop.c 
b/drivers/platform/x86/samsung-laptop.c
index c187dcdf82f0..cc30cf08f32d 100644
--- a/drivers/platform/x86/samsung-laptop.c
+++ b/drivers/platform/x86/samsung-laptop.c
@@ -356,23 +356,13 @@ struct samsung_laptop {
 };
 
 struct samsung_quirks {
-       bool broken_acpi_video;
        bool four_kbd_backlight_levels;
        bool enable_kbd_backlight;
-       bool use_native_backlight;
        bool lid_handling;
 };
 
 static struct samsung_quirks samsung_unknown = {};
 
-static struct samsung_quirks samsung_broken_acpi_video = {
-       .broken_acpi_video = true,
-};
-
-static struct samsung_quirks samsung_use_native_backlight = {
-       .use_native_backlight = true,
-};
-
 static struct samsung_quirks samsung_np740u3e = {
        .four_kbd_backlight_levels = true,
        .enable_kbd_backlight = true,
@@ -1540,76 +1530,6 @@ static const struct dmi_system_id samsung_dmi_table[] 
__initconst = {
                },
        },
        /* Specific DMI ids for laptop with quirks */
-       {
-        .callback = samsung_dmi_matched,
-        .ident = "N150P",
-        .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-               DMI_MATCH(DMI_PRODUCT_NAME, "N150P"),
-               DMI_MATCH(DMI_BOARD_NAME, "N150P"),
-               },
-        .driver_data = &samsung_use_native_backlight,
-       },
-       {
-        .callback = samsung_dmi_matched,
-        .ident = "N145P/N250P/N260P",
-        .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-               DMI_MATCH(DMI_PRODUCT_NAME, "N145P/N250P/N260P"),
-               DMI_MATCH(DMI_BOARD_NAME, "N145P/N250P/N260P"),
-               },
-        .driver_data = &samsung_use_native_backlight,
-       },
-       {
-        .callback = samsung_dmi_matched,
-        .ident = "N150/N210/N220",
-        .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-               DMI_MATCH(DMI_PRODUCT_NAME, "N150/N210/N220"),
-               DMI_MATCH(DMI_BOARD_NAME, "N150/N210/N220"),
-               },
-        .driver_data = &samsung_broken_acpi_video,
-       },
-       {
-        .callback = samsung_dmi_matched,
-        .ident = "NF110/NF210/NF310",
-        .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-               DMI_MATCH(DMI_PRODUCT_NAME, "NF110/NF210/NF310"),
-               DMI_MATCH(DMI_BOARD_NAME, "NF110/NF210/NF310"),
-               },
-        .driver_data = &samsung_broken_acpi_video,
-       },
-       {
-        .callback = samsung_dmi_matched,
-        .ident = "X360",
-        .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-               DMI_MATCH(DMI_PRODUCT_NAME, "X360"),
-               DMI_MATCH(DMI_BOARD_NAME, "X360"),
-               },
-        .driver_data = &samsung_broken_acpi_video,
-       },
-       {
-        .callback = samsung_dmi_matched,
-        .ident = "N250P",
-        .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-               DMI_MATCH(DMI_PRODUCT_NAME, "N250P"),
-               DMI_MATCH(DMI_BOARD_NAME, "N250P"),
-               },
-        .driver_data = &samsung_use_native_backlight,
-       },
-       {
-        .callback = samsung_dmi_matched,
-        .ident = "NC210",
-        .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
-               DMI_MATCH(DMI_PRODUCT_NAME, "NC210/NC110"),
-               DMI_MATCH(DMI_BOARD_NAME, "NC210/NC110"),
-               },
-        .driver_data = &samsung_broken_acpi_video,
-       },
        {
         .callback = samsung_dmi_matched,
         .ident = "730U3E/740U3E",
@@ -1654,15 +1574,8 @@ static int __init samsung_init(void)
        samsung->handle_backlight = true;
        samsung->quirks = quirks;
 
-#ifdef CONFIG_ACPI
-       if (samsung->quirks->broken_acpi_video)
-               acpi_video_set_dmi_backlight_type(acpi_backlight_vendor);
-       if (samsung->quirks->use_native_backlight)
-               acpi_video_set_dmi_backlight_type(acpi_backlight_native);
-
        if (acpi_video_get_backlight_type() != acpi_backlight_vendor)
                samsung->handle_backlight = false;
-#endif
 
        ret = samsung_platform_init(samsung);
        if (ret)
-- 
2.37.2

Reply via email to