platform/x86: dell-ddv: Fix temperature calculation
authorArmin Wolf <W_Armin@gmx.de>
Wed, 5 Mar 2025 05:30:07 +0000 (06:30 +0100)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Fri, 7 Mar 2025 10:14:15 +0000 (12:14 +0200)
On the Dell Inspiron 3505 the battery temperature is always
0.1 degrees larger than the temperature show inside the OEM
application.

Emulate this behaviour to avoid showing strange looking values
like 29.1 degrees.

Fixes: 0331b1b0ba653 ("platform/x86: dell-ddv: Fix temperature scaling")
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Link: https://lore.kernel.org/r/20250305053009.378609-2-W_Armin@gmx.de
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/dell/dell-wmi-ddv.c

index e75cd6e1efe6ac886b7c6b7c80768d31edc25d8e..ab5f7d3ab824972b0e9bd11f9c3424546754a8ee 100644 (file)
@@ -665,8 +665,10 @@ static ssize_t temp_show(struct device *dev, struct device_attribute *attr, char
        if (ret < 0)
                return ret;
 
-       /* Use 2731 instead of 2731.5 to avoid unnecessary rounding */
-       return sysfs_emit(buf, "%d\n", value - 2731);
+       /* Use 2732 instead of 2731.5 to avoid unnecessary rounding and to emulate
+        * the behaviour of the OEM application which seems to round down the result.
+        */
+       return sysfs_emit(buf, "%d\n", value - 2732);
 }
 
 static ssize_t eppid_show(struct device *dev, struct device_attribute *attr, char *buf)