aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorFelipe Contreras <felipe.contreras@gmail.com>2013-07-29 15:20:58 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-08-04 10:17:09 -0400
commitcb7a386c6c25e85c2710cdb1a498a73794cda660 (patch)
treeb1deab1b317137977246032486ee1031dd1048e6 /drivers/acpi
parentd8648caf55051c7c7609cc3538174930cef205ac (diff)
ACPI: blacklist win8 OSI for ASUS Zenbook Prime UX31A
Since v3.7 the ACPI backlight driver doesn't work at all on this machine, because presumably the backlight AML code in the ACPI tables contains a code path that triggers when the OS identifies itself as compatible with Windows 8 (which the kernel started to do in 3.7). That code path is never used by Windows and on this particular machine it turns out to be unusable at all. Work around this problem by blacklisting the win8 OSI, so we are back to v3.6 behavior (that is, we don't tell the BIOS that we are compatible with Windows 8). Since v3.7, users have been forced to work around the initial regression by modifying the boot arguments [1]. [1] https://wiki.archlinux.org/index.php/ASUS_Zenbook_Prime_UX31A [rjw: Changelog] Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/blacklist.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
index cb9629638def..a40412776804 100644
--- a/drivers/acpi/blacklist.c
+++ b/drivers/acpi/blacklist.c
@@ -192,6 +192,12 @@ static int __init dmi_disable_osi_win7(const struct dmi_system_id *d)
192 acpi_osi_setup("!Windows 2009"); 192 acpi_osi_setup("!Windows 2009");
193 return 0; 193 return 0;
194} 194}
195static int __init dmi_disable_osi_win8(const struct dmi_system_id *d)
196{
197 printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident);
198 acpi_osi_setup("!Windows 2012");
199 return 0;
200}
195 201
196static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { 202static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
197 { 203 {
@@ -267,6 +273,14 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
267 DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P305D"), 273 DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P305D"),
268 }, 274 },
269 }, 275 },
276 {
277 .callback = dmi_disable_osi_win8,
278 .ident = "ASUS Zenbook Prime UX31A",
279 .matches = {
280 DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
281 DMI_MATCH(DMI_PRODUCT_NAME, "UX31A"),
282 },
283 },
270 284
271 /* 285 /*
272 * BIOS invocation of _OSI(Linux) is almost always a BIOS bug. 286 * BIOS invocation of _OSI(Linux) is almost always a BIOS bug.