#include <linux/dmi.h>
#include <linux/platform_device.h>
#include <linux/rfkill.h>
+#include <linux/acpi.h>
/*
* This driver is needed because a number of Samsung laptops do not hook
struct backlight_device *backlight_device;
struct rfkill *rfk;
+ bool handle_backlight;
bool has_stepping_quirk;
};
struct backlight_device *bd;
struct backlight_properties props;
+ if (!samsung->handle_backlight)
+ return 0;
+
memset(&props, 0, sizeof(struct backlight_properties));
props.type = BACKLIGHT_PLATFORM;
props.max_brightness = samsung->config->max_brightness -
printk(KERN_DEBUG "ifaceP = 0x%08x\n", ifaceP);
printk(KERN_DEBUG "sabi_iface = %p\n", samsung->sabi_iface);
- test_backlight(samsung);
+ if (samsung->handle_backlight)
+ test_backlight(samsung);
test_wireless(samsung);
sabi_get_command(samsung, config->commands.get_brightness, &sretval);
}
/* Check for stepping quirk */
- check_for_stepping_quirk(samsung);
+ if (samsung->handle_backlight)
+ check_for_stepping_quirk(samsung);
exit:
if (ret)
return -ENOMEM;
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);
if (ret)