]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
hwmon: (max31790) Fix fan speed reporting for fan7..12
authorGuenter Roeck <linux@roeck-us.net>
Wed, 26 May 2021 15:40:16 +0000 (08:40 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Jul 2021 14:15:48 +0000 (16:15 +0200)
[ Upstream commit cbbf244f0515af3472084f22b6213121b4a63835 ]

Fans 7..12 do not have their own set of configuration registers.
So far the code ignored that and read beyond the end of the configuration
register range to get the tachometer period. This resulted in more or less
random fan speed values for those fans.

The datasheet is quite vague when it comes to defining the tachometer
period for fans 7..12. Experiments confirm that the period is the same
for both fans associated with a given set of configuration registers.

Fixes: 54187ff9d766 ("hwmon: (max31790) Convert to use new hwmon registration API")
Fixes: 195a4b4298a7 ("hwmon: Driver for Maxim MAX31790")
Cc: Jan Kundrát <jan.kundrat@cesnet.cz>
Reviewed-by: Jan Kundrát <jan.kundrat@cesnet.cz>
Cc: Václav Kubernát <kubernat@cesnet.cz>
Reviewed-by: Jan Kundrát <jan.kundrat@cesnet.cz>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20210526154022.3223012-2-linux@roeck-us.net
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/hwmon/max31790.c

index 281491cca5103ad4b82e2f2a52be6f2408262bdb..66cf772de7d29d390e4c9a8c6e91ed28c73198ca 100644 (file)
@@ -179,7 +179,7 @@ static int max31790_read_fan(struct device *dev, u32 attr, int channel,
 
        switch (attr) {
        case hwmon_fan_input:
-               sr = get_tach_period(data->fan_dynamics[channel]);
+               sr = get_tach_period(data->fan_dynamics[channel % NR_CHANNEL]);
                rpm = RPM_FROM_REG(data->tach[channel], sr);
                *val = rpm;
                return 0;