* [PATCH] hwmon: yogafan: add Lenovo Yoga Pro 9 16IMH9
@ 2026-08-12 0:32 rahlquist
2026-08-12 0:40 ` sashiko-bot
2026-08-12 1:56 ` Guenter Roeck
0 siblings, 2 replies; 5+ messages in thread
From: rahlquist @ 2026-08-12 0:32 UTC (permalink / raw)
To: linux-hwmon; +Cc: sergiomelas, rahlquist
The Lenovo Yoga Pro 9 16IMH9 (83DN) exposes its fan tachometers at different ACPI paths from the generic Yoga configuration. Add a model-specific two-fan configuration for the PC00.LPCB.EC0 namespace and document the corrected mapping.
Tested on a Lenovo Yoga Pro 9 16IMH9 (83DN) with BIOS NKCN35WW: the patched module registers fan1_input and fan2_input, both reporting 1800 RPM at idle.
Signed-off-by: rahlquist <rahlquist@gmail.com>
---
Documentation/hwmon/yogafan.rst | 3 ++-
drivers/hwmon/yogafan.c | 17 +++++++++++++++++
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/Documentation/hwmon/yogafan.rst b/Documentation/hwmon/yogafan.rst
index 6876194..cd7206b 100644
--- a/Documentation/hwmon/yogafan.rst
+++ b/Documentation/hwmon/yogafan.rst
@@ -89,7 +89,8 @@ immediately to ensure the user knows the fan has stopped.
----------------------------------------------------------------------------------------------------
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
+ 83E2 | Yoga Pro 7 | 0xFE | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
+ 83DN | Yoga Pro 9 16IMH9 | 0x06/0xFE | \_SB.PC00.LPCB.EC0.FANS/FA2S | 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
diff --git a/drivers/hwmon/yogafan.c b/drivers/hwmon/yogafan.c
index 605cc92..71b5f81 100644
--- a/drivers/hwmon/yogafan.c
+++ b/drivers/hwmon/yogafan.c
@@ -71,6 +71,15 @@ static const struct yogafan_config legion_16bit_dual_cfg = {
.paths = { "\\_SB.PCI0.LPC0.EC0.FANS", "\\_SB.PCI0.LPC0.EC0.FA2S" }
};
+/* Lenovo Yoga Pro 9 16IMH9 (83DN) uses the PC00 namespace and has two
+ * 8-bit fan tachometer fields. */
+static const struct yogafan_config yoga_pro_83dn_cfg = {
+ .multiplier = 100,
+ .fan_count = 2,
+ .paths = { "\\_SB.PC00.LPCB.EC0.FANS",
+ "\\_SB.PC00.LPCB.EC0.FA2S" }
+};
+
static void apply_rllag_filter(struct yoga_fan_data *data, int idx, long raw_rpm)
{
ktime_t now = ktime_get_boottime();
@@ -170,6 +179,14 @@ static const struct hwmon_chip_info yoga_fan_chip_info = {
};
static const struct dmi_system_id yogafan_quirks[] = {
+ {
+ .ident = "Lenovo Yoga Pro 9 16IMH9 (83DN)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "83DN"),
+ },
+ .driver_data = (void *)&yoga_pro_83dn_cfg,
+ },
{
.ident = "Lenovo Yoga",
.matches = {
--
2.55.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] hwmon: yogafan: add Lenovo Yoga Pro 9 16IMH9
2026-08-12 0:32 [PATCH] hwmon: yogafan: add Lenovo Yoga Pro 9 16IMH9 rahlquist
@ 2026-08-12 0:40 ` sashiko-bot
2026-08-12 1:56 ` Guenter Roeck
1 sibling, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-08-12 0:40 UTC (permalink / raw)
To: rahlquist; +Cc: linux-hwmon
> The Lenovo Yoga Pro 9 16IMH9 (83DN) exposes its fan tachometers at different ACPI paths from the generic Yoga configuration. Add a model-specific two-fan configuration for the PC00.LPCB.EC0 namespace and document the corrected mapping.
>
> Tested on a Lenovo Yoga Pro 9 16IMH9 (83DN) with BIOS NKCN35WW: the patched module registers fan1_input and fan2_input, both reporting 1800 RPM at idle.
>
> Signed-off-by: rahlquist <rahlquist@gmail.com>
Sashiko has reviewed this patch and found no issues. It looks great!
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260812003234.93924-1-rahlquist@gmail.com?part=1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] hwmon: yogafan: add Lenovo Yoga Pro 9 16IMH9
2026-08-12 0:32 [PATCH] hwmon: yogafan: add Lenovo Yoga Pro 9 16IMH9 rahlquist
2026-08-12 0:40 ` sashiko-bot
@ 2026-08-12 1:56 ` Guenter Roeck
2026-08-12 2:31 ` [PATCH v2] " rahlquist
1 sibling, 1 reply; 5+ messages in thread
From: Guenter Roeck @ 2026-08-12 1:56 UTC (permalink / raw)
To: rahlquist, linux-hwmon; +Cc: sergiomelas
On 8/11/26 17:32, rahlquist wrote:
> The Lenovo Yoga Pro 9 16IMH9 (83DN) exposes its fan tachometers at different ACPI paths from the generic Yoga configuration. Add a model-specific two-fan configuration for the PC00.LPCB.EC0 namespace and document the corrected mapping.
>
> Tested on a Lenovo Yoga Pro 9 16IMH9 (83DN) with BIOS NKCN35WW: the patched module registers fan1_input and fan2_input, both reporting 1800 RPM at idle.
>
> Signed-off-by: rahlquist <rahlquist@gmail.com>
checkpatch says:
WARNING: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#95:
The Lenovo Yoga Pro 9 16IMH9 (83DN) exposes its fan tachometers at different ACPI paths from the generic Yoga configuration. Add a model-specific two-fan configuration for the PC00.LPCB.EC0 namespace and document the corrected mapping.
WARNING: Block comments use a trailing */ on a separate line
#128: FILE: drivers/hwmon/yogafan.c:75:
+ * 8-bit fan tachometer fields. */
Guenter
> ---
> Documentation/hwmon/yogafan.rst | 3 ++-
> drivers/hwmon/yogafan.c | 17 +++++++++++++++++
> 2 files changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/hwmon/yogafan.rst b/Documentation/hwmon/yogafan.rst
> index 6876194..cd7206b 100644
> --- a/Documentation/hwmon/yogafan.rst
> +++ b/Documentation/hwmon/yogafan.rst
> @@ -89,7 +89,8 @@ immediately to ensure the user knows the fan has stopped.
> ----------------------------------------------------------------------------------------------------
> 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
> + 83E2 | Yoga Pro 7 | 0xFE | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
> + 83DN | Yoga Pro 9 16IMH9 | 0x06/0xFE | \_SB.PC00.LPCB.EC0.FANS/FA2S | 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
> diff --git a/drivers/hwmon/yogafan.c b/drivers/hwmon/yogafan.c
> index 605cc92..71b5f81 100644
> --- a/drivers/hwmon/yogafan.c
> +++ b/drivers/hwmon/yogafan.c
> @@ -71,6 +71,15 @@ static const struct yogafan_config legion_16bit_dual_cfg = {
> .paths = { "\\_SB.PCI0.LPC0.EC0.FANS", "\\_SB.PCI0.LPC0.EC0.FA2S" }
> };
>
> +/* Lenovo Yoga Pro 9 16IMH9 (83DN) uses the PC00 namespace and has two
> + * 8-bit fan tachometer fields. */
> +static const struct yogafan_config yoga_pro_83dn_cfg = {
> + .multiplier = 100,
> + .fan_count = 2,
> + .paths = { "\\_SB.PC00.LPCB.EC0.FANS",
> + "\\_SB.PC00.LPCB.EC0.FA2S" }
> +};
> +
> static void apply_rllag_filter(struct yoga_fan_data *data, int idx, long raw_rpm)
> {
> ktime_t now = ktime_get_boottime();
> @@ -170,6 +179,14 @@ static const struct hwmon_chip_info yoga_fan_chip_info = {
> };
>
> static const struct dmi_system_id yogafan_quirks[] = {
> + {
> + .ident = "Lenovo Yoga Pro 9 16IMH9 (83DN)",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
> + DMI_MATCH(DMI_PRODUCT_NAME, "83DN"),
> + },
> + .driver_data = (void *)&yoga_pro_83dn_cfg,
> + },
> {
> .ident = "Lenovo Yoga",
> .matches = {
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH v2] hwmon: yogafan: add Lenovo Yoga Pro 9 16IMH9
2026-08-12 1:56 ` Guenter Roeck
@ 2026-08-12 2:31 ` rahlquist
2026-08-12 2:37 ` sashiko-bot
0 siblings, 1 reply; 5+ messages in thread
From: rahlquist @ 2026-08-12 2:31 UTC (permalink / raw)
To: linux-hwmon; +Cc: sergiomelas, linux, rahlquist
The Lenovo Yoga Pro 9 16IMH9 (83DN) exposes its fan tachometers at
ACPI paths different from the generic Yoga configuration. Add a
model-specific two-fan configuration for the PC00.LPCB.EC0 namespace
and document the corrected mapping.
Tested on a Lenovo Yoga Pro 9 16IMH9 (83DN) with BIOS NKCN35WW: the
patched module registers fan1_input and fan2_input, both reporting 1800
RPM at idle.
---
Changes from v1:
- Wrap the new comment in kernel block-comment style.
- Wrap the commit message to 75 columns.
Signed-off-by: rahlquist <rahlquist@gmail.com>
---
Documentation/hwmon/yogafan.rst | 3 ++-
drivers/hwmon/yogafan.c | 19 +++++++++++++++++++
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/Documentation/hwmon/yogafan.rst b/Documentation/hwmon/yogafan.rst
index 6876194..cd7206b 100644
--- a/Documentation/hwmon/yogafan.rst
+++ b/Documentation/hwmon/yogafan.rst
@@ -89,7 +89,8 @@ immediately to ensure the user knows the fan has stopped.
----------------------------------------------------------------------------------------------------
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
+ 83E2 | Yoga Pro 7 | 0xFE | \_SB.PCI0.LPC0.EC0.FANS | 8-bit | 100
+ 83DN | Yoga Pro 9 16IMH9 | 0x06/0xFE | \_SB.PC00.LPCB.EC0.FANS/FA2S | 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
diff --git a/drivers/hwmon/yogafan.c b/drivers/hwmon/yogafan.c
index 605cc92..6cfbad3 100644
--- a/drivers/hwmon/yogafan.c
+++ b/drivers/hwmon/yogafan.c
@@ -71,6 +71,17 @@ static const struct yogafan_config legion_16bit_dual_cfg = {
.paths = { "\\_SB.PCI0.LPC0.EC0.FANS", "\\_SB.PCI0.LPC0.EC0.FA2S" }
};
+/*
+ * Lenovo Yoga Pro 9 16IMH9 (83DN) uses the PC00 namespace and has two
+ * 8-bit fan tachometer fields.
+ */
+static const struct yogafan_config yoga_pro_83dn_cfg = {
+ .multiplier = 100,
+ .fan_count = 2,
+ .paths = { "\\_SB.PC00.LPCB.EC0.FANS",
+ "\\_SB.PC00.LPCB.EC0.FA2S" }
+};
+
static void apply_rllag_filter(struct yoga_fan_data *data, int idx, long raw_rpm)
{
ktime_t now = ktime_get_boottime();
@@ -170,6 +181,14 @@ static const struct hwmon_chip_info yoga_fan_chip_info = {
};
static const struct dmi_system_id yogafan_quirks[] = {
+ {
+ .ident = "Lenovo Yoga Pro 9 16IMH9 (83DN)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "83DN"),
+ },
+ .driver_data = (void *)&yoga_pro_83dn_cfg,
+ },
{
.ident = "Lenovo Yoga",
.matches = {
--
2.55.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-08-12 2:37 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-12 0:32 [PATCH] hwmon: yogafan: add Lenovo Yoga Pro 9 16IMH9 rahlquist
2026-08-12 0:40 ` sashiko-bot
2026-08-12 1:56 ` Guenter Roeck
2026-08-12 2:31 ` [PATCH v2] " rahlquist
2026-08-12 2:37 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox