diff options
Diffstat (limited to 'drivers/staging/iio/accel/adis16240_core.c')
-rw-r--r-- | drivers/staging/iio/accel/adis16240_core.c | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/drivers/staging/iio/accel/adis16240_core.c b/drivers/staging/iio/accel/adis16240_core.c index aee8b69..b8be292 100644 --- a/drivers/staging/iio/accel/adis16240_core.c +++ b/drivers/staging/iio/accel/adis16240_core.c @@ -17,12 +17,11 @@ #include <linux/slab.h> #include <linux/sysfs.h> #include <linux/list.h> +#include <linux/module.h> #include "../iio.h" #include "../sysfs.h" -#include "../ring_generic.h" -#include "accel.h" -#include "../adc/adc.h" +#include "../buffer_generic.h" #include "adis16240.h" @@ -326,7 +325,7 @@ err_ret: return ret; } -static IIO_DEVICE_ATTR(accel_xyz_squared_peak_raw, S_IRUGO, +static IIO_DEVICE_ATTR(in_accel_xyz_squared_peak_raw, S_IRUGO, adis16240_read_12bit_signed, NULL, ADIS16240_XYZPEAK_OUT); @@ -393,7 +392,7 @@ static int adis16240_read_raw(struct iio_dev *indio_dev, case (1 << IIO_CHAN_INFO_SCALE_SEPARATE): case (1 << IIO_CHAN_INFO_SCALE_SHARED): switch (chan->type) { - case IIO_IN: + case IIO_VOLTAGE: *val = 0; if (chan->channel == 0) *val2 = 4880; @@ -470,11 +469,11 @@ static int adis16240_write_raw(struct iio_dev *indio_dev, } static struct iio_chan_spec adis16240_channels[] = { - IIO_CHAN(IIO_IN, 0, 1, 0, "supply", 0, 0, + IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, "supply", 0, 0, (1 << IIO_CHAN_INFO_SCALE_SEPARATE), in_supply, ADIS16240_SCAN_SUPPLY, IIO_ST('u', 10, 16, 0), 0), - IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0, + IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 1, 0, 0, in_aux, ADIS16240_SCAN_AUX_ADC, IIO_ST('u', 10, 16, 0), 0), @@ -501,7 +500,7 @@ static struct iio_chan_spec adis16240_channels[] = { }; static struct attribute *adis16240_attributes[] = { - &iio_dev_attr_accel_xyz_squared_peak_raw.dev_attr.attr, + &iio_dev_attr_in_accel_xyz_squared_peak_raw.dev_attr.attr, &iio_const_attr_sampling_frequency_available.dev_attr.attr, &iio_dev_attr_reset.dev_attr.attr, NULL @@ -520,7 +519,7 @@ static const struct iio_info adis16240_info = { static int __devinit adis16240_probe(struct spi_device *spi) { - int ret, regdone = 0; + int ret; struct adis16240_state *st; struct iio_dev *indio_dev; @@ -548,14 +547,9 @@ static int __devinit adis16240_probe(struct spi_device *spi) if (ret) goto error_free_dev; - ret = iio_device_register(indio_dev); - if (ret) - goto error_unreg_ring_funcs; - regdone = 1; - - ret = iio_ring_buffer_register_ex(indio_dev->ring, 0, - adis16240_channels, - ARRAY_SIZE(adis16240_channels)); + ret = iio_buffer_register(indio_dev, + adis16240_channels, + ARRAY_SIZE(adis16240_channels)); if (ret) { printk(KERN_ERR "failed to initialize the ring\n"); goto error_unreg_ring_funcs; @@ -571,19 +565,19 @@ static int __devinit adis16240_probe(struct spi_device *spi) ret = adis16240_initial_setup(indio_dev); if (ret) goto error_remove_trigger; + ret = iio_device_register(indio_dev); + if (ret) + goto error_remove_trigger; return 0; error_remove_trigger: adis16240_remove_trigger(indio_dev); error_uninitialize_ring: - iio_ring_buffer_unregister(indio_dev->ring); + iio_buffer_unregister(indio_dev); error_unreg_ring_funcs: adis16240_unconfigure_ring(indio_dev); error_free_dev: - if (regdone) - iio_device_unregister(indio_dev); - else - iio_free_device(indio_dev); + iio_free_device(indio_dev); error_ret: return ret; } @@ -595,10 +589,11 @@ static int adis16240_remove(struct spi_device *spi) flush_scheduled_work(); - adis16240_remove_trigger(indio_dev); - iio_ring_buffer_unregister(indio_dev->ring); iio_device_unregister(indio_dev); + adis16240_remove_trigger(indio_dev); + iio_buffer_unregister(indio_dev); adis16240_unconfigure_ring(indio_dev); + iio_free_device(indio_dev); return 0; } |