OSDN Git Service

platform/x86: thinkpad_acpi: Fix reporting a non present second fan on some models
authorJelle van der Waa <jvanderwaa@redhat.com>
Wed, 19 Oct 2022 19:47:51 +0000 (21:47 +0200)
committerHans de Goede <hdegoede@redhat.com>
Mon, 24 Oct 2022 09:24:08 +0000 (11:24 +0200)
thinkpad_acpi was reporting 2 fans on a ThinkPad T14s gen 1, even though
the laptop has only 1 fan.

The second, not present fan always reads 65535 (-1 in 16 bit signed),
ignore fans which report 65535 to avoid reporting the non present fan.

Signed-off-by: Jelle van der Waa <jvanderwaa@redhat.com>
Link: https://lore.kernel.org/r/20221019194751.5392-1-jvanderwaa@redhat.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/thinkpad_acpi.c

index 6a823b8..20e5c04 100644 (file)
@@ -263,6 +263,8 @@ enum tpacpi_hkey_event_t {
 #define TPACPI_DBG_BRGHT       0x0020
 #define TPACPI_DBG_MIXER       0x0040
 
+#define FAN_NOT_PRESENT                65535
+
 #define strlencmp(a, b) (strncmp((a), (b), strlen(b)))
 
 
@@ -8876,7 +8878,7 @@ static int __init fan_init(struct ibm_init_struct *iibm)
                        /* 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) {
+                       if (res >= 0 && speed != FAN_NOT_PRESENT) {
                                /* It responded - so let's assume it's there */
                                tp_features.second_fan = 1;
                                tp_features.second_fan_ctl = 1;