hwmon: (yogafan) Add support for Lenovo LOQ 15IAX9

Add the Lenovo LOQ 15IAX9 product family to the yogafan dmi_system_id
table. Unlike the Legion series, ACPI table extraction reveals this LOQ
utilizes an 8-bit EC architecture with a 100x multiplier, but maintains
a dual-fan setup via the \_SB.PC00.LPCB.EC0.FA1S and FA2S paths.

A new loq_15iax9_8bit_dual_cfg structure was added to properly map these
hardware registers and calculate RPMs correctly while avoiding path
conflicts with AMD-based LOQ variants.

Signed-off-by: Sarbajit Sarkar <sarbajitsarkar16108@gmail.com>
Link: https://lore.kernel.org/r/20260709183500.13761-1-sarbajitsarkar16108@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Sarbajit Sarkar 2026-07-10 00:05:00 +05:30 committed by Guenter Roeck
parent 3b7434feaa
commit 440da016ce

View File

@ -71,6 +71,12 @@ static const struct yogafan_config legion_16bit_dual_cfg = {
.paths = { "\\_SB.PCI0.LPC0.EC0.FANS", "\\_SB.PCI0.LPC0.EC0.FA2S" }
};
static const struct yogafan_config loq_15iax9_8bit_dual_cfg = {
.multiplier = 100,
.fan_count = 2,
.paths = { "\\_SB.PC00.LPCB.EC0.FA1S", "\\_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();
@ -194,6 +200,14 @@ static const struct dmi_system_id yogafan_quirks[] = {
},
.driver_data = (void *)&ideapad_8bit_fan0_cfg,
},
{
.ident = "Lenovo LOQ 15IAX9",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_FAMILY, "LOQ 15IAX9"),
},
.driver_data = (void *)&loq_15iax9_8bit_dual_cfg,
},
{ }
};
MODULE_DEVICE_TABLE(dmi, yogafan_quirks);