Commit f34cd9ca authored by Corentin Chary's avatar Corentin Chary Committed by Matthew Garrett

samsung-laptop: don't handle backlight if handled by acpi/video

samsung-laptop is not at all related to ACPI, but since this interface
is not documented at all, and the driver has to use it at load to
understand how it works on the laptop, I think it's a good idea to
disable it if a better solution is available.
Signed-off-by: default avatarCorentin Chary <corentincj@iksaif.net>
Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
parent 5dea7a20
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/dmi.h> #include <linux/dmi.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/rfkill.h> #include <linux/rfkill.h>
#include <linux/acpi.h>
/* /*
* This driver is needed because a number of Samsung laptops do not hook * This driver is needed because a number of Samsung laptops do not hook
...@@ -230,6 +231,7 @@ struct samsung_laptop { ...@@ -230,6 +231,7 @@ struct samsung_laptop {
struct backlight_device *backlight_device; struct backlight_device *backlight_device;
struct rfkill *rfk; struct rfkill *rfk;
bool handle_backlight;
bool has_stepping_quirk; bool has_stepping_quirk;
}; };
...@@ -616,6 +618,9 @@ static int __init samsung_backlight_init(struct samsung_laptop *samsung) ...@@ -616,6 +618,9 @@ static int __init samsung_backlight_init(struct samsung_laptop *samsung)
struct backlight_device *bd; struct backlight_device *bd;
struct backlight_properties props; struct backlight_properties props;
if (!samsung->handle_backlight)
return 0;
memset(&props, 0, sizeof(struct backlight_properties)); memset(&props, 0, sizeof(struct backlight_properties));
props.type = BACKLIGHT_PLATFORM; props.type = BACKLIGHT_PLATFORM;
props.max_brightness = samsung->config->max_brightness - props.max_brightness = samsung->config->max_brightness -
...@@ -698,7 +703,8 @@ static void __init samsung_sabi_selftest(struct samsung_laptop *samsung, ...@@ -698,7 +703,8 @@ static void __init samsung_sabi_selftest(struct samsung_laptop *samsung,
printk(KERN_DEBUG "ifaceP = 0x%08x\n", ifaceP); printk(KERN_DEBUG "ifaceP = 0x%08x\n", ifaceP);
printk(KERN_DEBUG "sabi_iface = %p\n", samsung->sabi_iface); printk(KERN_DEBUG "sabi_iface = %p\n", samsung->sabi_iface);
test_backlight(samsung); if (samsung->handle_backlight)
test_backlight(samsung);
test_wireless(samsung); test_wireless(samsung);
sabi_get_command(samsung, config->commands.get_brightness, &sretval); sabi_get_command(samsung, config->commands.get_brightness, &sretval);
...@@ -771,7 +777,8 @@ static int __init samsung_sabi_init(struct samsung_laptop *samsung) ...@@ -771,7 +777,8 @@ static int __init samsung_sabi_init(struct samsung_laptop *samsung)
} }
/* Check for stepping quirk */ /* Check for stepping quirk */
check_for_stepping_quirk(samsung); if (samsung->handle_backlight)
check_for_stepping_quirk(samsung);
exit: exit:
if (ret) if (ret)
...@@ -1059,6 +1066,15 @@ static int __init samsung_init(void) ...@@ -1059,6 +1066,15 @@ static int __init samsung_init(void)
return -ENOMEM; return -ENOMEM;
mutex_init(&samsung->sabi_mutex); mutex_init(&samsung->sabi_mutex);
samsung->handle_backlight = true;
#ifdef CONFIG_ACPI
/* Don't handle backlight here if the acpi video already handle it */
if (acpi_video_backlight_support()) {
pr_info("Backlight controlled by ACPI video driver\n");
samsung->handle_backlight = false;
}
#endif
ret = samsung_platform_init(samsung); ret = samsung_platform_init(samsung);
if (ret) if (ret)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment