Documentation/hwmon/yogafan.rst | 55 ++++++++++++++++-------------- 1 file changed, 31 insertions(+), 24 deletions(-)
There are several places in yogafan.rst where it appears that lines
are meant to be presented on their own but instead they are strung
together due to the lack of markups. Fix these issues by:
- using bullets where needed
- indenting continuation lines of bulleted items
- using a table where appropriate
- using a literal block where appropriate
Fixes: c67c248ca406 ("hwmon: (yogafan) Add support for Lenovo Yoga/Legion fan monitoring")
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
---
Cc: Sergio Melas <sergiomelas@gmail.com>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: linux-hwmon@vger.kernel.org
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Shuah Khan <skhan@linuxfoundation.org>
Cc: linux-doc@vger.kernel.org
Documentation/hwmon/yogafan.rst | 55 ++++++++++++++++--------------
1 file changed, 31 insertions(+), 24 deletions(-)
--- linux-next-20260406.orig/Documentation/hwmon/yogafan.rst
+++ linux-next-20260406/Documentation/hwmon/yogafan.rst
@@ -7,8 +7,8 @@ Kernel driver yogafan
Supported chips:
* Lenovo Yoga, Legion, IdeaPad, Slim, Flex, and LOQ Embedded Controllers
- Prefix: 'yogafan'
- Addresses: ACPI handle (See Database Below)
+ * Prefix: 'yogafan'
+ * Addresses: ACPI handle (See Database Below)
Author: Sergio Melas <sergiomelas@gmail.com>
@@ -31,19 +31,21 @@ deterministically via a DMI Product Fami
eliminating the need for runtime heuristics.
1. 8-bit EC Architecture (Multiplier: 100)
+
- **Families:** Yoga, IdeaPad, Slim, Flex.
- **Technical Detail:** These models allocate a single 8-bit register for
- tachometer data. Since 8-bit fields are limited to a value of 255, the
- BIOS stores fan speed in units of 100 RPM (e.g., 42 = 4200 RPM).
+ tachometer data. Since 8-bit fields are limited to a value of 255, the
+ BIOS stores fan speed in units of 100 RPM (e.g., 42 = 4200 RPM).
2. 16-bit EC Architecture (Multiplier: 1)
+
- **Families:** Legion, LOQ.
- **Technical Detail:** High-performance gaming models require greater
- precision for fans exceeding 6000 RPM. These use a 16-bit word (2 bytes)
- storing the raw RPM value directly.
+ precision for fans exceeding 6000 RPM. These use a 16-bit word (2 bytes)
+ storing the raw RPM value directly.
-Filter Details:
----------------
+Filter Details
+--------------
The RLLag filter is a passive discrete-time first-order lag model that ensures:
- **Smoothing:** Low-resolution step increments are smoothed into 1-RPM increments.
@@ -66,8 +68,11 @@ Usage
-----
The driver exposes standard hwmon sysfs attributes:
+
+=============== ============================
Attribute Description
fanX_input Filtered fan speed in RPM.
+=============== ============================
Note: If the hardware reports 0 RPM, the filter is bypassed and 0 is reported
@@ -78,22 +83,24 @@ immediately to ensure the user knows the
LENOVO FAN CONTROLLER: MASTER REFERENCE DATABASE (2026)
====================================================================================================
-MODEL (DMI PN) | FAMILY / SERIES | EC OFFSET | FULL ACPI OBJECT PATH | WIDTH | MULTiplier
-----------------------------------------------------------------------------------------------------
-82N7 | Yoga 14cACN | 0x06 | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
-80V2 / 81C3 | Yoga 710/720 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
-83E2 / 83DN | Yoga Pro 7/9 | 0xFE | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
-82A2 / 82A3 | Yoga Slim 7 | 0x06 | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
-81YM / 82FG | IdeaPad 5 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
-82JW / 82JU | Legion 5 (AMD) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS (Fan1) | 16-bit | 1
-82JW / 82JU | Legion 5 (AMD) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FA2S (Fan2) | 16-bit | 1
-82WQ | Legion 7i (Int) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS (Fan1) | 16-bit | 1
-82WQ | Legion 7i (Int) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FA2S (Fan2) | 16-bit | 1
-82XV / 83DV | LOQ 15/16 | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS /FA2S | 16-bit | 1
-83AK | ThinkBook G6 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
-81X1 | Flex 5 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
-*Legacy* | Pre-2020 Models | 0x06 | \_SB.PCI0.LPC.EC.FAN0 | 8-bit | 100
-----------------------------------------------------------------------------------------------------
+::
+
+ MODEL (DMI PN) | FAMILY / SERIES | EC OFFSET | FULL ACPI OBJECT PATH | WIDTH | MULTiplier
+ ----------------------------------------------------------------------------------------------------
+ 82N7 | Yoga 14cACN | 0x06 | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
+ 80V2 / 81C3 | Yoga 710/720 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
+ 83E2 / 83DN | Yoga Pro 7/9 | 0xFE | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
+ 82A2 / 82A3 | Yoga Slim 7 | 0x06 | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
+ 81YM / 82FG | IdeaPad 5 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
+ 82JW / 82JU | Legion 5 (AMD) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS (Fan1) | 16-bit | 1
+ 82JW / 82JU | Legion 5 (AMD) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FA2S (Fan2) | 16-bit | 1
+ 82WQ | Legion 7i (Int) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS (Fan1) | 16-bit | 1
+ 82WQ | Legion 7i (Int) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FA2S (Fan2) | 16-bit | 1
+ 82XV / 83DV | LOQ 15/16 | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS /FA2S | 16-bit | 1
+ 83AK | ThinkBook G6 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
+ 81X1 | Flex 5 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
+ *Legacy* | Pre-2020 Models | 0x06 | \_SB.PCI0.LPC.EC.FAN0 | 8-bit | 100
+ ----------------------------------------------------------------------------------------------------
METHODOLOGY & IDENTIFICATION:
On Mon, Apr 06, 2026 at 10:23:17PM -0700, Randy Dunlap wrote:
> There are several places in yogafan.rst where it appears that lines
> are meant to be presented on their own but instead they are strung
> together due to the lack of markups. Fix these issues by:
>
> - using bullets where needed
> - indenting continuation lines of bulleted items
> - using a table where appropriate
> - using a literal block where appropriate
>
> Fixes: c67c248ca406 ("hwmon: (yogafan) Add support for Lenovo Yoga/Legion fan monitoring")
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Applied.
Thanks,
Guenter
Hi Guenter,
My apologies for the confusion—I am still learning the standard
workflow. I understand now why applying Randy’s patch immediately is
the correct move.
When I mentioned the "next version," I was thinking about a major
expansion I am currently preparing (v1, second round). It expands
support to nearly all Lenovo and Xiaoxin models. Because the database
has grown so much, I’ve had to significantly change the table format
in the .rst file to keep it readable. So i was referring to this new
table (see below). Fully open to modify the format if you thin is not
ok.
As an automation engineer , this process is quite new to me, so I
appreciate your patience as I learn the proper terms and procedures. I
will ensure my next submission is rebased on your current tree with
Randy's improvements.
Best regards, Sergio
::
================================================
LENOVO FAN CONTROLLER Hardware Abstraction Layer
================================================
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| MODEL | FAMILY / SERIES | OFFSET | FULL ACPI OBJECT PATH
| WIDTH | NMAX | RMAX | MULT |
+=============+===================+=========+================================+========+=======+=======+======+
| 82N7 | Yoga 14cACN | 0x06 | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 0 | 5500 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 83E2 | Yoga Pro 9i | 0xFE/FF | _SB.PCI0.LPC0.EC0.FANS
(Fan1) | 16-bit | 0 | 8000 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 83E2 | Yoga Pro 9i | 0xFE/FF | _SB.PCI0.LPC0.EC0.FA2S
(Fan2) | 16-bit | 0 | 8000 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 83CV | Yoga Pro 9 (Aura) | 0xFE | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 0 | 6000 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 83DN | Yoga Pro 7 | 0xFE | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 0 | 6000 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 82A2 / 82A3 | Yoga Slim 7 | 0x06 | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 0 | 5500 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 83JC / 83DX | Xiaoxin Pro 14/16 | 0xFE | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 80 | 5000 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 83FD / 83DE | Xiaoxin Pro | 0xFE/FF |
_SB.PCI0.LPC0.EC0.FAN0/.FANS | 8-bit | 0 | 5000 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 81YM / 82FG | IdeaPad 5 | 0x06 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 0 | 4500 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 83AK | ThinkBook G7 | 0x06 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 0 | 5400 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 81X1 | Flex 5 | 0x06 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 0 | 4500 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| Legion 9 | Legion 9i / Extr | 0xFE/FF | _SB.PCI0.LPC0.EC0.FANS
(Fan1) | 16-bit | 0 | 8000 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| Legion 9 | Legion 9i / Extr | 0xFE/FF | _SB.PCI0.LPC0.EC0.FA2S
(Fan2) | 16-bit | 0 | 8000 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| Legion 9 | Legion 9i / Extr | 0xFE/FF | _SB.PCI0.LPC0.EC0.FA3S
(Fan3) | 16-bit | 0 | 8000 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 82WQ | Legion 7i (Int) | 0xFE/FF | _SB.PCI0.LPC0.EC0.FANS
(Fan1) | 16-bit | 0 | 8000 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 82WQ | Legion 7i (Int) | 0xFE/FF | _SB.PCI0.LPC0.EC0.FA2S
(Fan2) | 16-bit | 0 | 8000 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 82JW / 82JU | Legion 5 (AMD) | 0xFE/FF | _SB.PCI0.LPC0.EC0.FANS
(Fan1) | 16-bit | 0 | 6500 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 82JW / 82JU | Legion 5 (AMD) | 0xFE/FF | _SB.PCI0.LPC0.EC0.FA2S
(Fan2) | 16-bit | 0 | 6500 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| GeekPro | GeekPro G5000/6k | 0xFE/FF | _SB.PCI0.LPC0.EC0.FANS
(Fan1) | 16-bit | 0 | 6500 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 82XV / 83DV | LOQ 15/16 | 0xFE/FF | _SB.PCI0.LPC0.EC0.FANS
(Fan1) | 16-bit | 0 | 6500 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 82XV / 83DV | LOQ 15/16 | 0xFE/FF | _SB.PCI0.LPC0.EC0.FA2S
(Fan2) | 16-bit | 0 | 6500 | 1 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 80V2 / 81C3 | Yoga 710/720 | 0x06 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 59 | 4500 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 80S7 | Yoga 510 | 0x06 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 41 | 4500 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 80JH | Yoga 3 14 | 0x06 |
_SB.PCI0.LPC0.EC0.FAN0/.FANS | 8-bit | 80 | 5000 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 20344 | Yoga 2 13 | 0xAB | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 8 | 4200 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 2191 / 20191| Yoga 13 | 0xF2/F3 | _SB.PCI0.LPC0.EC0.FAN1/2
| 8-bit | 0 | 5000 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| Legacy | Yoga 11s | 0x56 |
_SB.PCI0.LPC0.EC0.FAN0/.FANS | 8-bit | 80 | 4500 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 20GJ / 20GK | ThinkPad 13 | 0x85 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 7 | 5500 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 1143 | ThinkPad E520 | 0x95 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 0 | 4200 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 3698 | ThinkPad Helix | 0x2F | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 7 | 4500 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 20M7 / 20M8 | ThinkPad L380 | 0x95 | _SB.PCI0.LPC0.EC0.FAN1
| 8-bit | 0 | 4600 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 20NR / 20NS | ThinkPad L390 | 0x95 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 0 | 5500 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 2464 / 2468 | ThinkPad L530 | 0x95 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 0 | 4400 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 2356 | ThinkPad T430s | 0x2F | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 7 | 5000 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 20AQ / 20AR | ThinkPad T440s | 0x4E | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 7 | 5200 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 20BE / 20BF | ThinkPad T540p | 0x2F | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 7 | 5500 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 3051 | ThinkPad x121e | 0x2F | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 7 | 4500 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 4290 | ThinkPad x220i | 0x2F | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 7 | 5000 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 2324 / 2325 | ThinkPad x230 | 0x2F | _SB.PCI0.LPC0.EC0.FANS
| 8-bit | 7 | 5000 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 81AX | V330-15IKB | 0x95 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 0 | 5100 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| Legacy | IdeaPad Y580 | 0x06 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 35 | 4800 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| Legacy | IdeaPad V580 | 0x95 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 0 | 5000 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 80SR / 80SX | IdeaPad 500S-13 | 0x06 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 44 | 5500 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 80S1 | IdeaPad 500S-14 | 0x95 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 116 | 5000 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 80TK | IdeaPad 510S | 0x06 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 41 | 5100 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 80S9 | IdeaPad 710S | 0x95/98 | _SB.PCI0.LPC0.EC0.FAN1/2
| 8-bit | 0 | 5200 | 100 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 80KU | U31-70 | 0x06 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 44 | 5500 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| 80S1 | U41-70 | 0x95 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 116 | 5000 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| Legacy | U160 | 0x95 | _SB.PCI0.LPC0.EC0.FAN0
| 8-bit | 64 | 4500 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
| Legacy | U330p/U430p | 0x92 | _SB.PCI0.LPC0.EC0.FAN0
| 16-bit | 768 | 5000 | 0 |
+-------------+-------------------+---------+--------------------------------+--------+-------+-------+------+
Note for the raw_RPM we have 2 cases:
* Discrete Level Estimation
**Nmax > 0 then raw_RPM = (Rmax * IN) / Nmax**
* Continuous Unit Mapping
**Nmax = 0 then raw_RPM = IN * Multiplier**
Thank you, Randy.
I will incorporate these markup improvements into the next version of
the patch set.
On Tue, Apr 7, 2026 at 7:23 AM Randy Dunlap <rdunlap@infradead.org> wrote:
>
> There are several places in yogafan.rst where it appears that lines
> are meant to be presented on their own but instead they are strung
> together due to the lack of markups. Fix these issues by:
>
> - using bullets where needed
> - indenting continuation lines of bulleted items
> - using a table where appropriate
> - using a literal block where appropriate
>
> Fixes: c67c248ca406 ("hwmon: (yogafan) Add support for Lenovo Yoga/Legion fan monitoring")
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> ---
> Cc: Sergio Melas <sergiomelas@gmail.com>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: linux-hwmon@vger.kernel.org
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: Shuah Khan <skhan@linuxfoundation.org>
> Cc: linux-doc@vger.kernel.org
>
> Documentation/hwmon/yogafan.rst | 55 ++++++++++++++++--------------
> 1 file changed, 31 insertions(+), 24 deletions(-)
>
> --- linux-next-20260406.orig/Documentation/hwmon/yogafan.rst
> +++ linux-next-20260406/Documentation/hwmon/yogafan.rst
> @@ -7,8 +7,8 @@ Kernel driver yogafan
> Supported chips:
>
> * Lenovo Yoga, Legion, IdeaPad, Slim, Flex, and LOQ Embedded Controllers
> - Prefix: 'yogafan'
> - Addresses: ACPI handle (See Database Below)
> + * Prefix: 'yogafan'
> + * Addresses: ACPI handle (See Database Below)
>
> Author: Sergio Melas <sergiomelas@gmail.com>
>
> @@ -31,19 +31,21 @@ deterministically via a DMI Product Fami
> eliminating the need for runtime heuristics.
>
> 1. 8-bit EC Architecture (Multiplier: 100)
> +
> - **Families:** Yoga, IdeaPad, Slim, Flex.
> - **Technical Detail:** These models allocate a single 8-bit register for
> - tachometer data. Since 8-bit fields are limited to a value of 255, the
> - BIOS stores fan speed in units of 100 RPM (e.g., 42 = 4200 RPM).
> + tachometer data. Since 8-bit fields are limited to a value of 255, the
> + BIOS stores fan speed in units of 100 RPM (e.g., 42 = 4200 RPM).
>
> 2. 16-bit EC Architecture (Multiplier: 1)
> +
> - **Families:** Legion, LOQ.
> - **Technical Detail:** High-performance gaming models require greater
> - precision for fans exceeding 6000 RPM. These use a 16-bit word (2 bytes)
> - storing the raw RPM value directly.
> + precision for fans exceeding 6000 RPM. These use a 16-bit word (2 bytes)
> + storing the raw RPM value directly.
>
> -Filter Details:
> ----------------
> +Filter Details
> +--------------
>
> The RLLag filter is a passive discrete-time first-order lag model that ensures:
> - **Smoothing:** Low-resolution step increments are smoothed into 1-RPM increments.
> @@ -66,8 +68,11 @@ Usage
> -----
>
> The driver exposes standard hwmon sysfs attributes:
> +
> +=============== ============================
> Attribute Description
> fanX_input Filtered fan speed in RPM.
> +=============== ============================
>
>
> Note: If the hardware reports 0 RPM, the filter is bypassed and 0 is reported
> @@ -78,22 +83,24 @@ immediately to ensure the user knows the
> LENOVO FAN CONTROLLER: MASTER REFERENCE DATABASE (2026)
> ====================================================================================================
>
> -MODEL (DMI PN) | FAMILY / SERIES | EC OFFSET | FULL ACPI OBJECT PATH | WIDTH | MULTiplier
> -----------------------------------------------------------------------------------------------------
> -82N7 | Yoga 14cACN | 0x06 | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
> -80V2 / 81C3 | Yoga 710/720 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
> -83E2 / 83DN | Yoga Pro 7/9 | 0xFE | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
> -82A2 / 82A3 | Yoga Slim 7 | 0x06 | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
> -81YM / 82FG | IdeaPad 5 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
> -82JW / 82JU | Legion 5 (AMD) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS (Fan1) | 16-bit | 1
> -82JW / 82JU | Legion 5 (AMD) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FA2S (Fan2) | 16-bit | 1
> -82WQ | Legion 7i (Int) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS (Fan1) | 16-bit | 1
> -82WQ | Legion 7i (Int) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FA2S (Fan2) | 16-bit | 1
> -82XV / 83DV | LOQ 15/16 | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS /FA2S | 16-bit | 1
> -83AK | ThinkBook G6 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
> -81X1 | Flex 5 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
> -*Legacy* | Pre-2020 Models | 0x06 | \_SB.PCI0.LPC.EC.FAN0 | 8-bit | 100
> -----------------------------------------------------------------------------------------------------
> +::
> +
> + MODEL (DMI PN) | FAMILY / SERIES | EC OFFSET | FULL ACPI OBJECT PATH | WIDTH | MULTiplier
> + ----------------------------------------------------------------------------------------------------
> + 82N7 | Yoga 14cACN | 0x06 | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
> + 80V2 / 81C3 | Yoga 710/720 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
> + 83E2 / 83DN | Yoga Pro 7/9 | 0xFE | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
> + 82A2 / 82A3 | Yoga Slim 7 | 0x06 | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
> + 81YM / 82FG | IdeaPad 5 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
> + 82JW / 82JU | Legion 5 (AMD) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS (Fan1) | 16-bit | 1
> + 82JW / 82JU | Legion 5 (AMD) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FA2S (Fan2) | 16-bit | 1
> + 82WQ | Legion 7i (Int) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS (Fan1) | 16-bit | 1
> + 82WQ | Legion 7i (Int) | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FA2S (Fan2) | 16-bit | 1
> + 82XV / 83DV | LOQ 15/16 | 0xFE/0xFF | \_SB.PCI0.LPC0.EC0.FANS /FA2S | 16-bit | 1
> + 83AK | ThinkBook G6 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
> + 81X1 | Flex 5 | 0x06 | \_SB.PCI0.LPC0.EC0.FAN0 | 8-bit | 100
> + *Legacy* | Pre-2020 Models | 0x06 | \_SB.PCI0.LPC.EC.FAN0 | 8-bit | 100
> + ----------------------------------------------------------------------------------------------------
>
> METHODOLOGY & IDENTIFICATION:
>
On 4/7/26 04:04, Sergio Melas wrote: > Thank you, Randy. > I will incorporate these markup improvements into the next version of > the patch set. > Why would that make sense ? I'll just apply the patch. Guenter
© 2016 - 2026 Red Hat, Inc.