From: Michael Hennerich <michael.hennerich@xxxxxxxxxx> Fix list of available sample frequencies. Fix ade7758_write_frequency(). Signed-off-by: Michael Hennerich <michael.hennerich@xxxxxxxxxx> Acked-by: Jonathan Cameron <jic23@xxxxxxxxx> --- drivers/staging/iio/meter/ade7758_core.c | 28 ++++++++++++++++++---------- 1 files changed, 18 insertions(+), 10 deletions(-) diff --git a/drivers/staging/iio/meter/ade7758_core.c b/drivers/staging/iio/meter/ade7758_core.c index 971b247..26ff31b 100644 --- a/drivers/staging/iio/meter/ade7758_core.c +++ b/drivers/staging/iio/meter/ade7758_core.c @@ -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, -- 1.7.3.4 -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html