We'll need per-chip handling for updating the sample interval. To prepare for it, separate the code implementing it into its own function. Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx> --- drivers/hwmon/lm75.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c index 6474b8f21981..644da2620a26 100644 --- a/drivers/hwmon/lm75.c +++ b/drivers/hwmon/lm75.c @@ -388,27 +388,32 @@ static int lm75_write_temp(struct device *dev, u32 attr, long temp) return regmap_write(data->regmap, reg, (u16)temp); } -static int lm75_write_chip(struct device *dev, u32 attr, long val) +static int lm75_update_interval(struct device *dev, long val) { struct lm75_data *data = dev_get_drvdata(dev); u8 index; s32 err; - switch (attr) { - case hwmon_chip_update_interval: - index = find_closest(val, data->params->sample_times, - (int)data->params->num_sample_times); + index = find_closest(val, data->params->sample_times, + (int)data->params->num_sample_times); - err = lm75_write_config(data, - lm75_sample_set_masks[index], - LM75_SAMPLE_CLEAR_MASK); - if (err) - return err; - data->sample_time = data->params->sample_times[index]; + err = lm75_write_config(data, lm75_sample_set_masks[index], + LM75_SAMPLE_CLEAR_MASK); + if (err) + return err; - if (data->params->resolutions) - data->resolution = data->params->resolutions[index]; - break; + data->sample_time = data->params->sample_times[index]; + if (data->params->resolutions) + data->resolution = data->params->resolutions[index]; + + return 0; +} + +static int lm75_write_chip(struct device *dev, u32 attr, long val) +{ + switch (attr) { + case hwmon_chip_update_interval: + return lm75_update_interval(dev, val); default: return -EINVAL; } -- 2.7.4