platform/x86: acer-wmi: Only supports AMW0_GUID1 on acer family
The AMW0_GUID1 wmi is not only found on Acer family but also other machines like Lenovo, Fujitsu and Medion. In the past, acer-wmi handled those non-Acer machines by quirks list. But actually acer-wmi driver was loaded on any machine that had AMW0_GUID1. This behavior is strange because those machines should be supported by appropriate wmi drivers. e.g. fujitsu-laptop, ideapad-laptop. This patch adds the logic to check the machine that has AMW0_GUID1 should be in Acer/Packard Bell/Gateway white list. But, it still keeps the quirk list of those supported non-acer machines for backward compatibility. Tested-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: Lee, Chun-Yi <jlee@suse.com> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
This commit is contained in:
Родитель
304887041d
Коммит
5241b1938a
|
@ -355,6 +355,32 @@ static const struct dmi_system_id acer_blacklist[] __initconst = {
|
|||
{}
|
||||
};
|
||||
|
||||
static const struct dmi_system_id amw0_whitelist[] __initconst = {
|
||||
{
|
||||
.ident = "Acer",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.ident = "Gateway",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Gateway"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.ident = "Packard Bell",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Packard Bell"),
|
||||
},
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
/*
|
||||
* This quirk table is only for Acer/Gateway/Packard Bell family
|
||||
* that those machines are supported by acer-wmi driver.
|
||||
*/
|
||||
static const struct dmi_system_id acer_quirks[] __initconst = {
|
||||
{
|
||||
.callback = dmi_matched,
|
||||
|
@ -464,6 +490,17 @@ static const struct dmi_system_id acer_quirks[] __initconst = {
|
|||
},
|
||||
.driver_data = &quirk_acer_travelmate_2490,
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
/*
|
||||
* This quirk list is for those non-acer machines that have AMW0_GUID1
|
||||
* but supported by acer-wmi in past days. Keeping this quirk list here
|
||||
* is only for backward compatible. Please do not add new machine to
|
||||
* here anymore. Those non-acer machines should be supported by
|
||||
* appropriate wmi drivers.
|
||||
*/
|
||||
static const struct dmi_system_id non_acer_quirks[] __initconst = {
|
||||
{
|
||||
.callback = dmi_matched,
|
||||
.ident = "Fujitsu Siemens Amilo Li 1718",
|
||||
|
@ -598,6 +635,7 @@ static void __init find_quirks(void)
|
|||
{
|
||||
if (!force_series) {
|
||||
dmi_check_system(acer_quirks);
|
||||
dmi_check_system(non_acer_quirks);
|
||||
} else if (force_series == 2490) {
|
||||
quirks = &quirk_acer_travelmate_2490;
|
||||
}
|
||||
|
@ -2107,6 +2145,24 @@ static int __init acer_wmi_init(void)
|
|||
|
||||
find_quirks();
|
||||
|
||||
/*
|
||||
* The AMW0_GUID1 wmi is not only found on Acer family but also other
|
||||
* machines like Lenovo, Fujitsu and Medion. In the past days,
|
||||
* acer-wmi driver handled those non-Acer machines by quirks list.
|
||||
* But actually acer-wmi driver was loaded on any machines that have
|
||||
* AMW0_GUID1. This behavior is strange because those machines should
|
||||
* be supported by appropriate wmi drivers. e.g. fujitsu-laptop,
|
||||
* ideapad-laptop. So, here checks the machine that has AMW0_GUID1
|
||||
* should be in Acer/Gateway/Packard Bell white list, or it's already
|
||||
* in the past quirk list.
|
||||
*/
|
||||
if (wmi_has_guid(AMW0_GUID1) &&
|
||||
!dmi_check_system(amw0_whitelist) &&
|
||||
quirks == &quirk_unknown) {
|
||||
pr_err("Unsupported machine has AMW0_GUID1, unable to load\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/*
|
||||
* Detect which ACPI-WMI interface we're using.
|
||||
*/
|
||||
|
|
Загрузка…
Ссылка в новой задаче