[PATCH v2] platform/x86: thinkpad_acpi: Fix fan speed reporting on ThinkPad L440

Daniel Salmun posted 1 patch 1 week, 3 days ago
drivers/platform/x86/lenovo/thinkpad_acpi.c | 1 +
1 file changed, 1 insertion(+)
[PATCH v2] platform/x86: thinkpad_acpi: Fix fan speed reporting on ThinkPad L440
Posted by Daniel Salmun 1 week, 3 days ago
The L440 (BIOS J4ET93WW) reports its fan as stopped: /proc/acpi/ibm/fan
shows "status: disabled" and "speed: 0", and hwmon fan1_input is 0 under
any load. EC registers 0x2F and 0x84/0x85 always read 0 on this model.

The EC uses the 0x93/0x95 layout handled by TPACPI_FAN_NS. 0x93 reads 4
(FAN_NS_CTRL_STATUS) and 0x95 goes from 255 at idle to about 111 at full
speed. The DSDT has no fan methods.

Add the J4 BIOS family to fan_quirk_table. The fan then reads about
1900 RPM at idle and 2900 RPM under load. The L540 shares the J4 BIOS
and the same EC firmware, so it is covered by the same entry.

Tested on a ThinkPad L440 20ASS20200 with BIOS J4ET93WW and EC J4HT30WW.

Link: https://github.com/lm-sensors/lm-sensors/issues/510
Signed-off-by: Daniel Salmun <salmundani@gmail.com>
---
Changes in v2:
- Note in the table comment and commit message that the L540 uses the
  same J4 BIOS family and is covered by this entry.

Manual fan control works on this EC (0x93 = 0x14, target written to
0x94) but is not part of this patch.

I have not checked FAN_RPM_CAL_CONST against a real tachometer. With it
the range is 1927-4428 RPM, which fits the 5 V blower in this machine.

I don't have an L540 to test, but it uses the same J4ET BIOS package
and J4HT EC firmware as the L440.

 drivers/platform/x86/lenovo/thinkpad_acpi.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/platform/x86/lenovo/thinkpad_acpi.c b/drivers/platform/x86/lenovo/thinkpad_acpi.c
index 1661f070c..c7c905e65 100644
--- a/drivers/platform/x86/lenovo/thinkpad_acpi.c
+++ b/drivers/platform/x86/lenovo/thinkpad_acpi.c
@@ -8846,6 +8846,7 @@ static const struct tpacpi_quirk fan_quirk_table[] __initconst = {
 	TPACPI_Q_LNV3('R', '1', 'D', TPACPI_FAN_NS),	/* 11e Gen5 GL-R */
 	TPACPI_Q_LNV3('R', '0', 'V', TPACPI_FAN_NS),	/* 11e Gen5 KL-Y */
 	TPACPI_Q_LNV('H', '3', TPACPI_FAN_NS),		/* Edge E330 */
+	TPACPI_Q_LNV('J', '4', TPACPI_FAN_NS),		/* L440 / L540 */
 	TPACPI_Q_LNV3('N', '1', 'O', TPACPI_FAN_NOFAN),	/* X1 Tablet (2nd gen) */
 	TPACPI_Q_LNV3('R', '0', 'Q', TPACPI_FAN_DECRPM),/* L480 */
 	TPACPI_Q_LNV('8', 'F', TPACPI_FAN_TPR),		/* ThinkPad x120e */

base-commit: cee9395acd8043be0644b25c34bfa86623f2b935
-- 
2.34.1
Re: [PATCH v2] platform/x86: thinkpad_acpi: Fix fan speed reporting on ThinkPad L440
Posted by Ilpo Järvinen 6 days, 13 hours ago
On Mon, 14 Sep 2026 23:11:54 -0300, Daniel Salmun wrote:

> The L440 (BIOS J4ET93WW) reports its fan as stopped: /proc/acpi/ibm/fan
> shows "status: disabled" and "speed: 0", and hwmon fan1_input is 0 under
> any load. EC registers 0x2F and 0x84/0x85 always read 0 on this model.
> 
> The EC uses the 0x93/0x95 layout handled by TPACPI_FAN_NS. 0x93 reads 4
> (FAN_NS_CTRL_STATUS) and 0x95 goes from 255 at idle to about 111 at full
> speed. The DSDT has no fan methods.
> 
> [...]

Thank you for your contribution, it has been applied to my local
review-ilpo-next branch. Note it will show up in the public
platform-drivers-x86/review-ilpo-next branch only once I've pushed my
local branch there, which might take a while.

FYI [if applicable to your patch], as per Linus' policy change, also
fixes are mostly routed through for-next unless the fix is for a
commit introduced in the most recent cycle or is clearly a regression
fix.

The list of commits applied:
[1/1] platform/x86: thinkpad_acpi: Fix fan speed reporting on ThinkPad L440
      commit: 5b16d186082465a5938bff29fe50df144e4efc99

--
 i.