Re: [PATCH v3 2/2] hwmon: Support set_trips() of thermal device ops
From: Dmitry Osipenko <digetx@gmail.com>
Date: 2021-06-21 20:45:42
Also in:
linux-hwmon, linux-pm, lkml
21.06.2021 23:30, Guenter Roeck пишет:
On Mon, Jun 21, 2021 at 09:40:58PM +0300, Dmitry Osipenko wrote:quoted
Support set_trips() callback of thermal device ops. This allows HWMON device to operatively notify thermal core about temperature changes, which is very handy to have in a case where HWMON sensor is used by CPU thermal zone that performs passive cooling and emergency shutdown on overheat. Thermal core will be able to react faster to temperature changes.I think that warrants an explanation why it doesn't matter if the code doesn't really set any trip points.
I'll extend the commit message.
quoted
Signed-off-by: Dmitry Osipenko <digetx@gmail.com> --- drivers/hwmon/hwmon.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)diff --git a/drivers/hwmon/hwmon.c b/drivers/hwmon/hwmon.c index fd47ab4e6892..e74dc81e650d 100644 --- a/drivers/hwmon/hwmon.c +++ b/drivers/hwmon/hwmon.c@@ -153,8 +153,40 @@ static int hwmon_thermal_get_temp(void *data, int *temp) return 0; } +static int hwmon_thermal_set_trips(void *data, int low, int high) +{ + struct hwmon_thermal_data *tdata = data; + struct hwmon_device *hwdev = to_hwmon_device(tdata->dev); + const struct hwmon_chip_info *chip = hwdev->chip; + const struct hwmon_channel_info **info = chip->info; + unsigned int i; + + if (!chip->ops->write) + return 0; + + for (i = 1; info[i] && info[i]->type != hwmon_temp; i++) + continue;Why start with index 1 ? While index 0 is commonly used for chip data, that is not mandatory.
This is borrowed from hwmon_thermal_register_sensors().
quoted
+ + if (info[i] && info[i]->config[tdata->index] & HWMON_T_MIN) { + int err = chip->ops->write(tdata->dev, hwmon_temp, + hwmon_temp_min, tdata->index, low);checkpatch will complain here because it expects an empty line after a declaration. Since err is used in multiple conditionals, I would suggest to declare it once in the function header.
Okay, although checkpatch is happy. ./scripts/checkpatch.pl --strict v3* --------------------------------------------------------------- v3-0001-hwmon-lm90-Prevent-integer-underflows-of-temperat.patch --------------------------------------------------------------- total: 0 errors, 0 warnings, 0 checks, 27 lines checked v3-0001-hwmon-lm90-Prevent-integer-underflows-of-temperat.patch has no obvious style problems and is ready for submission. ----------------------------------------------------------- v3-0002-hwmon-Support-set_trips-of-thermal-device-ops.patch ----------------------------------------------------------- total: 0 errors, 0 warnings, 0 checks, 40 lines checked
quoted
+ if (err < 0 && err != -EOPNOTSUPP)"< 0" is unnecessary.quoted
+ return err; + } + + if (info[i] && info[i]->config[tdata->index] & HWMON_T_MAX) { + int err = chip->ops->write(tdata->dev, hwmon_temp, + hwmon_temp_max, tdata->index, high); + if (err < 0 && err != -EOPNOTSUPP)"< 0" is unnecessary.
I'll remove it in v4.