2022-12-21 18:08:33

by Thomas Weißschuh

[permalink] [raw]
Subject: [PATCH 0/3] platform/x86: asus-wmi: Fix issues on fanless device

This series fixes issues experienced on a fanless ASUS VivoBook E410MA.

To: Corentin Chary <[email protected]>
To: Hans de Goede <[email protected]>
To: Mark Gross <[email protected]>
To: "Luke D. Jones" <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Thomas Weißschuh <[email protected]>

---
Thomas Weißschuh (3):
platform/x86: asus-wmi: Add quirk wmi_ignore_fan
platform/x86: asus-wmi: Ignore fan on E410MA
platform/x86: asus-wmi: Don't load fan curves without fan

drivers/platform/x86/asus-nb-wmi.c | 13 +++++++++++++
drivers/platform/x86/asus-wmi.c | 7 ++++++-
drivers/platform/x86/asus-wmi.h | 1 +
3 files changed, 20 insertions(+), 1 deletion(-)
---
base-commit: b6bb9676f2165d518b35ba3bea5f1fcfc0d969bf
change-id: 20221221-asus-fan-9aeac7d59c6c

Best regards,
--
Thomas Weißschuh <[email protected]>


2022-12-21 18:10:59

by Thomas Weißschuh

[permalink] [raw]
Subject: [PATCH 3/3] platform/x86: asus-wmi: Don't load fan curves without fan

If we do not have a fan it does not make sense to load curves for it.
This removes the following warnings from the kernel log:

asus_wmi: fan_curve_get_factory_default (0x00110024) failed: -19
asus_wmi: fan_curve_get_factory_default (0x00110025) failed: -19

Fixes: a2bdf10ce96e ("platform/x86: asus-wmi: Increase FAN_CURVE_BUF_LEN to 32")
Signed-off-by: Thomas Weißschuh <[email protected]>
---
drivers/platform/x86/asus-wmi.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
index 4a289ca7e76c..104188d70988 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
@@ -2438,6 +2438,9 @@ static int fan_curve_check_present(struct asus_wmi *asus, bool *available,

*available = false;

+ if (asus->fan_type == FAN_TYPE_NONE)
+ return 0;
+
err = fan_curve_get_factory_default(asus, fan_dev);
if (err) {
return 0;

--
2.39.0

2022-12-21 18:11:17

by Thomas Weißschuh

[permalink] [raw]
Subject: [PATCH 1/3] platform/x86: asus-wmi: Add quirk wmi_ignore_fan

Some laptops have a fan device listed in their ACPI tables but do not
actually contain a fan.
Introduce a quirk that can be used to override the fan detection logic.

This was observed with a ASUS VivoBook E410MA running firmware
E410MAB.304.

Signed-off-by: Thomas Weißschuh <[email protected]>
---
drivers/platform/x86/asus-wmi.c | 4 +++-
drivers/platform/x86/asus-wmi.h | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
index 6f81b2844dcb..4a289ca7e76c 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
@@ -2243,7 +2243,9 @@ static int asus_wmi_fan_init(struct asus_wmi *asus)
asus->fan_type = FAN_TYPE_NONE;
asus->agfn_pwm = -1;

- if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_CPU_FAN_CTRL))
+ if (asus->driver->quirks->wmi_ignore_fan)
+ asus->fan_type = FAN_TYPE_NONE;
+ else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_CPU_FAN_CTRL))
asus->fan_type = FAN_TYPE_SPEC83;
else if (asus_wmi_has_agfn_fan(asus))
asus->fan_type = FAN_TYPE_AGFN;
diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h
index 65316998b898..a478ebfd34df 100644
--- a/drivers/platform/x86/asus-wmi.h
+++ b/drivers/platform/x86/asus-wmi.h
@@ -38,6 +38,7 @@ struct quirk_entry {
bool store_backlight_power;
bool wmi_backlight_set_devstate;
bool wmi_force_als_set;
+ bool wmi_ignore_fan;
enum asus_wmi_tablet_switch_mode tablet_switch_mode;
int wapf;
/*

--
2.39.0

2022-12-21 18:13:52

by Thomas Weißschuh

[permalink] [raw]
Subject: [PATCH 2/3] platform/x86: asus-wmi: Ignore fan on E410MA

The ASUS VivoBook has a fan device described in its ACPI tables but does
not actually contain any physical fan.
Use the quirk to inhibit fan handling.

Signed-off-by: Thomas Weißschuh <[email protected]>
---
drivers/platform/x86/asus-nb-wmi.c | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
index c685a705b73d..5b603c686c8a 100644
--- a/drivers/platform/x86/asus-nb-wmi.c
+++ b/drivers/platform/x86/asus-nb-wmi.c
@@ -121,6 +121,10 @@ static struct quirk_entry quirk_asus_tablet_mode = {
.tablet_switch_mode = asus_wmi_lid_flip_rog_devid,
};

+static struct quirk_entry quirk_asus_ignore_fan = {
+ .wmi_ignore_fan = true,
+};
+
static int dmi_matched(const struct dmi_system_id *dmi)
{
pr_info("Identified laptop model '%s'\n", dmi->ident);
@@ -473,6 +477,15 @@ static const struct dmi_system_id asus_quirks[] = {
},
.driver_data = &quirk_asus_tablet_mode,
},
+ {
+ .callback = dmi_matched,
+ .ident = "ASUS VivoBook E410MA",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+ DMI_MATCH(DMI_PRODUCT_NAME, "E410MA"),
+ },
+ .driver_data = &quirk_asus_ignore_fan,
+ },
{},
};


--
2.39.0

2023-01-12 19:46:50

by Hans de Goede

[permalink] [raw]
Subject: Re: [PATCH 0/3] platform/x86: asus-wmi: Fix issues on fanless device

Hi,

On 12/21/22 18:59, Thomas Weißschuh wrote:
> This series fixes issues experienced on a fanless ASUS VivoBook E410MA.
>
> To: Corentin Chary <[email protected]>
> To: Hans de Goede <[email protected]>
> To: Mark Gross <[email protected]>
> To: "Luke D. Jones" <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Signed-off-by: Thomas Weißschuh <[email protected]>

Thank you for your patch series, I've applied this series
to my fixes branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=fixes

Note it will show up in my fixes branch once I've pushed my
local branch there, which might take a while.

I will include this patch in my next fixes pull-req to Linus
for the current kernel development cycle.

Regards,

Hans





>
> ---
> Thomas Weißschuh (3):
> platform/x86: asus-wmi: Add quirk wmi_ignore_fan
> platform/x86: asus-wmi: Ignore fan on E410MA
> platform/x86: asus-wmi: Don't load fan curves without fan
>
> drivers/platform/x86/asus-nb-wmi.c | 13 +++++++++++++
> drivers/platform/x86/asus-wmi.c | 7 ++++++-
> drivers/platform/x86/asus-wmi.h | 1 +
> 3 files changed, 20 insertions(+), 1 deletion(-)
> ---
> base-commit: b6bb9676f2165d518b35ba3bea5f1fcfc0d969bf
> change-id: 20221221-asus-fan-9aeac7d59c6c
>
> Best regards,