ACPI / video: Add quirks for the Dell Vostro V131
The Dell Vostro V131 has an especially broken acpi-video implementation. The backlight control bits work, but when the brightness is changed via the acpi-video interface the backlight flickers annoyingly before settling at the new brightness, switching to using the native interface fixes the flickering so add a quirk for this (the vendor interface has the same problem). Brightness keypresses reported through the acpi-video-bus are also broken, they get reported one event delayed, so if you press the brightness-up hotkey on the keyboard nothing happens, then if you press brightness-down, the previous brightness-up event gets reported. Since the keypresses are also reported via wmi (if active) and via atkbd (when wmi is not active) add a quirk to simply filter out the delayed (broken) events. Reported-and-tested-by: Michał Kępień <kernel@kempniu.pl> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
committed by
Rafael J. Wysocki
parent
05bc59a079
commit
4b4b3b20e8
@@ -419,6 +419,13 @@ static int video_enable_only_lcd(const struct dmi_system_id *d)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int video_set_report_key_events(const struct dmi_system_id *id)
|
||||||
|
{
|
||||||
|
if (report_key_events == -1)
|
||||||
|
report_key_events = (uintptr_t)id->driver_data;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static struct dmi_system_id video_dmi_table[] = {
|
static struct dmi_system_id video_dmi_table[] = {
|
||||||
/*
|
/*
|
||||||
* Broken _BQC workaround http://bugzilla.kernel.org/show_bug.cgi?id=13121
|
* Broken _BQC workaround http://bugzilla.kernel.org/show_bug.cgi?id=13121
|
||||||
@@ -507,6 +514,24 @@ static struct dmi_system_id video_dmi_table[] = {
|
|||||||
DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile M9410"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile M9410"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
/*
|
||||||
|
* Some machines report wrong key events on the acpi-bus, suppress
|
||||||
|
* key event reporting on these. Note this is only intended to work
|
||||||
|
* around events which are plain wrong. In some cases we get double
|
||||||
|
* events, in this case acpi-video is considered the canonical source
|
||||||
|
* and the events from the other source should be filtered. E.g.
|
||||||
|
* by calling acpi_video_handles_brightness_key_presses() from the
|
||||||
|
* vendor acpi/wmi driver or by using /lib/udev/hwdb.d/60-keyboard.hwdb
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
.callback = video_set_report_key_events,
|
||||||
|
.driver_data = (void *)((uintptr_t)REPORT_OUTPUT_KEY_EVENTS),
|
||||||
|
.ident = "Dell Vostro V131",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V131"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -279,6 +279,14 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
|
|||||||
DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro12,1"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro12,1"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.callback = video_detect_force_native,
|
||||||
|
.ident = "Dell Vostro V131",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V131"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user