Re: [PATCH] platform/x86: thinkpad_acpi: Correct dual fan probe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Seems to work great on my machine! The one thing it's missing is a Fixes: tag
for the commit that introduced the dual fan probing code originally. With that
fixed:

Reviewed-by: Lyude Paul <lyude@xxxxxxxxxx>
Tested-by: Lyude Paul <lyude@xxxxxxxxxx>

On Mon, 2022-05-02 at 15:12 -0400, Mark Pearson wrote:
> 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@xxxxxxxxxx>
> ---
>  drivers/platform/x86/thinkpad_acpi.c | 23 +++++++++++++----------
>  1 file changed, 13 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/platform/x86/thinkpad_acpi.c
> b/drivers/platform/x86/thinkpad_acpi.c
> index f385450af864..5eea6651a312 100644
> --- a/drivers/platform/x86/thinkpad_acpi.c
> +++ b/drivers/platform/x86/thinkpad_acpi.c
> @@ -8862,24 +8862,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;

-- 
Cheers,
 Lyude Paul (she/her)
 Software Engineer at Red Hat




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux