mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 08:31:55 +00:00
platform/x86: thinkpad_acpi: Correct dual fan probe
There was an issue with the dual fan probe whereby the probe was failing as it assuming that second_fan support was not available. Corrected the logic so the probe works correctly. Cleaned up so quirks only used if 2nd fan not detected. Tested on X1 Carbon 10 (2 fans), X1 Carbon 9 (2 fans) and T490 (1 fan) Signed-off-by: Mark Pearson <markpearson@lenovo.com> Link: https://lore.kernel.org/r/20220502191200.63470-1-markpearson@lenovo.com Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
455cd867b8
commit
aa2fef6f40
@ -8880,24 +8880,27 @@ static int __init fan_init(struct ibm_init_struct *iibm)
|
||||
fan_status_access_mode = TPACPI_FAN_RD_TPEC;
|
||||
if (quirks & TPACPI_FAN_Q1)
|
||||
fan_quirk1_setup();
|
||||
if (quirks & TPACPI_FAN_2FAN) {
|
||||
tp_features.second_fan = 1;
|
||||
pr_info("secondary fan support enabled\n");
|
||||
}
|
||||
if (quirks & TPACPI_FAN_2CTL) {
|
||||
tp_features.second_fan = 1;
|
||||
tp_features.second_fan_ctl = 1;
|
||||
pr_info("secondary fan control enabled\n");
|
||||
}
|
||||
/* Try and probe the 2nd fan */
|
||||
tp_features.second_fan = 1; /* needed for get_speed to work */
|
||||
res = fan2_get_speed(&speed);
|
||||
if (res >= 0) {
|
||||
/* It responded - so let's assume it's there */
|
||||
tp_features.second_fan = 1;
|
||||
tp_features.second_fan_ctl = 1;
|
||||
pr_info("secondary fan control detected & enabled\n");
|
||||
} else {
|
||||
/* Fan not auto-detected */
|
||||
tp_features.second_fan = 0;
|
||||
if (quirks & TPACPI_FAN_2FAN) {
|
||||
tp_features.second_fan = 1;
|
||||
pr_info("secondary fan support enabled\n");
|
||||
}
|
||||
if (quirks & TPACPI_FAN_2CTL) {
|
||||
tp_features.second_fan = 1;
|
||||
tp_features.second_fan_ctl = 1;
|
||||
pr_info("secondary fan control enabled\n");
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
pr_err("ThinkPad ACPI EC access misbehaving, fan status and control unavailable\n");
|
||||
return -ENODEV;
|
||||
|
Loading…
Reference in New Issue
Block a user