Modified: trunk/drivers/staging/iio/adc/adt75.c (8494 => 8495)
--- trunk/drivers/staging/iio/adc/adt75.c 2010-03-18 08:24:05 UTC (rev 8494)
+++ trunk/drivers/staging/iio/adc/adt75.c 2010-03-18 08:33:52 UTC (rev 8495)
@@ -128,20 +128,22 @@
struct iio_dev *dev_info = dev_get_drvdata(dev);
struct adt75_chip_info *chip = dev_info->dev_data;
int ret;
+ u8 config;
ret = adt75_i2c_read(chip, ADT75_CONFIG, &chip->config);
if (ret)
return -EIO;
- if (strcmp(buf, "full"))
- chip->config &= ~ADT75_PD;
- else
- chip->config |= ADT75_PD;
+ config = chip->config & ~ADT75_PD;
+ if (!strcmp(buf, "full"))
+ config |= ADT75_PD;
- ret = adt75_i2c_write(chip, ADT75_CONFIG, chip->config);
+ ret = adt75_i2c_write(chip, ADT75_CONFIG, config);
if (ret)
return -EIO;
+ chip->config = config;
+
return ret;
}
@@ -178,6 +180,7 @@
struct adt75_chip_info *chip = dev_info->dev_data;
unsigned long data = ""
int ret;
+ u8 config;
ret = strict_strtoul(buf, 10, &data);
if (ret)
@@ -188,15 +191,16 @@
if (ret)
return -EIO;
+ config = chip->config & ~ADT75_ONESHOT;
if (data)
- chip->config |= ADT75_ONESHOT;
- else
- chip->config &= ~ADT75_ONESHOT;
+ config |= ADT75_ONESHOT;
- ret = adt75_i2c_write(chip, ADT75_CONFIG, chip->config);
+ ret = adt75_i2c_write(chip, ADT75_CONFIG, config);
if (ret)
return -EIO;
+ chip->config = config;
+
return ret;
}
@@ -330,21 +334,23 @@
struct iio_dev *dev_info = dev_get_drvdata(dev);
struct adt75_chip_info *chip = dev_info->dev_data;
int ret;
+ u8 config;
/* retrive ALART status */
ret = adt75_i2c_read(chip, ADT75_CONFIG, &chip->config);
if (ret)
return -EIO;
- if (strcmp(buf, "comparator") == 0)
- chip->config &= ~ADT75_OS_INT;
- else
- chip->config |= ADT75_OS_INT;
+ config = chip->config & ~ADT75_OS_INT;
+ if (strcmp(buf, "comparator") != 0)
+ config |= ADT75_OS_INT;
- ret = adt75_i2c_write(chip, ADT75_CONFIG, chip->config);
+ ret = adt75_i2c_write(chip, ADT75_CONFIG, config);
if (ret)
return -EIO;
+ chip->config = config;
+
return ret;
}
@@ -380,6 +386,7 @@
struct adt75_chip_info *chip = dev_info->dev_data;
unsigned long data = ""
int ret;
+ u8 config;
ret = strict_strtoul(buf, 10, &data);
if (ret)
@@ -390,15 +397,16 @@
if (ret)
return -EIO;
+ config = chip->config & ~ADT75_SMBUS_ALART;
if (data)
- chip->config |= ADT75_SMBUS_ALART;
- else
- chip->config &= ~ADT75_SMBUS_ALART;
+ config |= ADT75_SMBUS_ALART;
- ret = adt75_i2c_write(chip, ADT75_CONFIG, chip->config);
+ ret = adt75_i2c_write(chip, ADT75_CONFIG, config);
if (ret)
return -EIO;
+ chip->config = config;
+
return ret;
}
@@ -428,6 +436,7 @@
struct adt75_chip_info *chip = dev_info->dev_data;
unsigned long data;
int ret;
+ u8 config;
ret = strict_strtoul(buf, 10, &data);
if (ret || data > 3)
@@ -438,12 +447,14 @@
if (ret)
return -EIO;
- chip->config &= ~ADT75_FAULT_QUEUE_MASK;
- chip->config |= (data << ADT75_FAULT_QUEUE_OFFSET);
- ret = adt75_i2c_write(chip, ADT75_CONFIG, chip->config);
+ config = chip->config & ~ADT75_FAULT_QUEUE_MASK;
+ config |= (data << ADT75_FAULT_QUEUE_OFFSET);
+ ret = adt75_i2c_write(chip, ADT75_CONFIG, config);
if (ret)
return -EIO;
+ chip->config = config;
+
return ret;
}
static inline ssize_t adt75_show_t_bound(struct device *dev,