staging:iio:meter:ade7758: Fix list and set of available sample frequencies.
authorMichael Hennerich <michael.hennerich@analog.com>
Wed, 18 May 2011 13:42:06 +0000 (14:42 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 19 May 2011 23:14:59 +0000 (16:14 -0700)
Fix list of available sample frequencies.
Fix ade7758_write_frequency().

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/iio/meter/ade7758_core.c

index 971b247..26ff31b 100644 (file)
@@ -533,7 +533,6 @@ static ssize_t ade7758_write_frequency(struct device *dev,
                size_t len)
 {
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
-       struct ade7758_state *st = iio_dev_get_devdata(indio_dev);
        unsigned long val;
        int ret;
        u8 reg, t;
@@ -544,14 +543,23 @@ static ssize_t ade7758_write_frequency(struct device *dev,
 
        mutex_lock(&indio_dev->mlock);
 
-       t = (26040 / val);
-       if (t > 0)
-               t >>= 1;
-
-       if (t > 1)
-               st->us->max_speed_hz = ADE7758_SPI_SLOW;
-       else
-               st->us->max_speed_hz = ADE7758_SPI_FAST;
+       switch (val) {
+       case 26040:
+               t = 0;
+               break;
+       case 13020:
+               t = 1;
+               break;
+       case 6510:
+               t = 2;
+               break;
+       case 3255:
+               t = 3;
+               break;
+       default:
+               ret = -EINVAL;
+               goto out;
+       }
 
        ret = ade7758_spi_read_reg_8(dev,
                        ADE7758_WAVMODE,
@@ -671,7 +679,7 @@ static IIO_DEV_ATTR_WAVEFORM_TYPE(S_IWUSR | S_IRUGO,
 
 static IIO_DEV_ATTR_RESET(ade7758_write_reset);
 
-static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("26000 13000 65000 33000");
+static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("26040 13020 6510 3255");
 
 static struct attribute *ade7758_attributes[] = {
        &iio_dev_attr_temp_raw.dev_attr.attr,