aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/blacklist.c
diff options
context:
space:
mode:
authorChen Yu <yu.c.chen@intel.com>2016-05-03 16:48:39 +0800
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-05-05 00:13:52 +0200
commite10cfdc33a0f23dc8449be7267f0a642e96a2a24 (patch)
tree8eb360b24f377a9c3ec5428b3fb8a1467e419621 /drivers/acpi/blacklist.c
parentACPI / osi: Add acpi_osi=!! to allow reverting acpi_osi=! (diff)
downloadlinux-dev-e10cfdc33a0f23dc8449be7267f0a642e96a2a24.tar.xz
linux-dev-e10cfdc33a0f23dc8449be7267f0a642e96a2a24.zip
ACPI / osi: Fix default _OSI(Darwin) support
The following commit always reports positive value when Apple hardware queries _OSI("Darwin"): Commit: 7bc5a2bad0b8d9d1ac9f7b8b33150e4ddf197334 Subject: ACPI: Support _OSI("Darwin") correctly However since this implementation places the judgement in runtime, it breaks acpi_osi=!Darwin and cannot return unsupported for _OSI("WinXXX") invoked before invoking _OSI("Darwin"). This patch fixes the issues by reverting the wrong support and implementing the default behavior of _OSI("Darwin")/_OSI("WinXXX") on Apple hardware via DMI matching. Fixes: 7bc5a2bad0b8 (ACPI: Support _OSI("Darwin") correctly) Link: https://bugzilla.kernel.org/show_bug.cgi?id=92111 Reported-and-tested-by: Lukas Wunner <lukas@wunner.de> Signed-off-by: Chen Yu <yu.c.chen@intel.com> Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/blacklist.c')
-rw-r--r--drivers/acpi/blacklist.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
index 96809cd99ace..45390a953fb2 100644
--- a/drivers/acpi/blacklist.c
+++ b/drivers/acpi/blacklist.c
@@ -133,6 +133,11 @@ int __init acpi_blacklisted(void)
return blacklisted;
}
#ifdef CONFIG_DMI
+static int __init dmi_enable_osi_darwin(const struct dmi_system_id *d)
+{
+ acpi_dmi_osi_darwin(1, d); /* enable */
+ return 0;
+}
static int __init dmi_enable_osi_linux(const struct dmi_system_id *d)
{
acpi_dmi_osi_linux(1, d); /* enable */
@@ -331,6 +336,24 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
},
},
+ /*
+ * Enable _OSI("Darwin") for all apple platforms.
+ */
+ {
+ .callback = dmi_enable_osi_darwin,
+ .ident = "Apple hardware",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."),
+ },
+ },
+ {
+ .callback = dmi_enable_osi_darwin,
+ .ident = "Apple hardware",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Apple Computer, Inc."),
+ },
+ },
+
#ifdef CONFIG_ACPI_REV_OVERRIDE_POSSIBLE
/*
* DELL XPS 13 (2015) switches sound between HDA and I2S