|
@@ -302,14 +302,18 @@ static inline u16 volt2reg(int channel, long volt, u8 bypass_attn)
|
|
|
return clamp_val(reg, 0, 1023) & (0xff << 2);
|
|
|
}
|
|
|
|
|
|
-static u16 adt7475_read_word(struct i2c_client *client, int reg)
|
|
|
+static int adt7475_read_word(struct i2c_client *client, int reg)
|
|
|
{
|
|
|
- u16 val;
|
|
|
+ int val1, val2;
|
|
|
|
|
|
- val = i2c_smbus_read_byte_data(client, reg);
|
|
|
- val |= (i2c_smbus_read_byte_data(client, reg + 1) << 8);
|
|
|
+ val1 = i2c_smbus_read_byte_data(client, reg);
|
|
|
+ if (val1 < 0)
|
|
|
+ return val1;
|
|
|
+ val2 = i2c_smbus_read_byte_data(client, reg + 1);
|
|
|
+ if (val2 < 0)
|
|
|
+ return val2;
|
|
|
|
|
|
- return val;
|
|
|
+ return val1 | (val2 << 8);
|
|
|
}
|
|
|
|
|
|
static void adt7475_write_word(struct i2c_client *client, int reg, u16 val)
|