[lm-sensors] [patch 2.6.26-rc1] lm75: sensor reading bugfix
Jean Delvare
khali at linux-fr.org
Sun May 4 14:27:58 CEST 2008
On Sat, 3 May 2008 19:19:16 -0700, David Brownell wrote:
> LM75 sensor reading bugfix: never save error status as valid
> sensor output. This could be improved, but at least this
> prevents certain rude failure modes.
I agree this needs fixing, especially with the error value cleanup
patches you've sent for the i2c stack lately. While -1 swabs to itself,
other error values may look like real temperatures once swabbed.
>
> Signed-off-by: David Brownell <dbrownell at users.sourceforge.net>
> ---
> Goes on top of the previously submitted lm75 cleanup patch:
>
> http://marc.info/?l=lm-sensors&m=120880547009929&w=2
>
> drivers/hwmon/lm75.c | 20 +++++++++++++++-----
> 1 file changed, 15 insertions(+), 5 deletions(-)
>
> --- g26.orig/drivers/hwmon/lm75.c 2008-05-03 18:44:59.000000000 -0700
> +++ g26/drivers/hwmon/lm75.c 2008-05-03 19:03:08.000000000 -0700
> @@ -259,10 +259,13 @@ static struct i2c_driver lm75_driver = {
> the SMBus standard. */
> static int lm75_read_value(struct i2c_client *client, u8 reg)
> {
> + int value;
> +
> if (reg == LM75_REG_CONF)
> return i2c_smbus_read_byte_data(client, reg);
> - else
> - return swab16(i2c_smbus_read_word_data(client, reg));
> +
> + value = i2c_smbus_read_word_data(client, reg);
> + return (value < 0) ? value : swab16(value);
> }
>
> static int lm75_write_value(struct i2c_client *client, u8 reg, u16 value)
> @@ -295,9 +298,16 @@ static struct lm75_data *lm75_update_dev
> int i;
> dev_dbg(&client->dev, "Starting lm75 update\n");
>
> - for (i = 0; i < ARRAY_SIZE(data->temp); i++)
> - data->temp[i] = lm75_read_value(client,
> - LM75_REG_TEMP[i]);
> + for (i = 0; i < ARRAY_SIZE(data->temp); i++) {
> + int status;
> +
> + status = lm75_read_value(client, LM75_REG_TEMP[i]);
> + if (status < 0)
> + dev_dbg(&client->dev, "reg %d, err %d\n",
> + LM75_REG_TEMP[i], status);
> + else
> + data->temp[i] = status;
> + }
> data->last_updated = jiffies;
> data->valid = 1;
> }
Looks good, tested OK (i.e. no regression in the working case.)
Acked-by: Jean Delvare <khali at linux-fr.org>
--
Jean Delvare
More information about the lm-sensors
mailing list