@@ -207,6 +207,7 @@ struct hotkey_function_type_aa {
#define ACER_CAP_BRIGHTNESS (1<<3)
#define ACER_CAP_THREEG (1<<4)
#define ACER_CAP_ACCEL (1<<5)
+#define ACER_CAP_KEEP_VIDEO_KEY (1<<6)
#define ACER_CAP_ANY (0xFFFFFFFF)
/*
@@ -539,6 +540,15 @@ static int video_set_backlight_video_vendor(const struct dmi_system_id *d)
return 0;
}
+static int video_set_backlight_video_vendor_keep_acpi_video(
+ const struct dmi_system_id *d)
+{
+ video_set_backlight_video_vendor(d);
+ interface->capability |= ACER_CAP_KEEP_VIDEO_KEY;
+ pr_info("Keeping acpi video driver active to emit backlight brightness change key events\n");
+ return 0;
+}
+
static const struct dmi_system_id video_vendor_dmi_table[] = {
{
.callback = video_set_backlight_video_vendor,
@@ -572,6 +582,14 @@ static const struct dmi_system_id video_vendor_dmi_table[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5750"),
},
},
+ {
+ .callback = video_set_backlight_video_vendor_keep_acpi_video,
+ .ident = "Acer Aspire 5750G",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "Acer"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5750G"),
+ },
+ },
{}
};
@@ -2228,6 +2246,8 @@ static int __init acer_wmi_init(void)
if (acpi_video_backlight_support()) {
interface->capability &= ~ACER_CAP_BRIGHTNESS;
pr_info("Brightness must be controlled by acpi video driver\n");
+ } else if (interface->capability & ACER_CAP_KEEP_VIDEO_KEY) {
+ acpi_video_backlight_unregister();
} else {
pr_info("Disabling ACPI video driver\n");
acpi_video_unregister();