#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 "../adc/adc.h"
-#include "gyro.h"
#include "adis16260.h"
mutex_lock(&indio_dev->mlock);
addr = adis16260_addresses[chan->address][0];
ret = adis16260_spi_read_reg_16(indio_dev, addr, &val16);
- if (ret)
+ if (ret) {
+ mutex_unlock(&indio_dev->mlock);
return ret;
+ }
if (val16 & ADIS16260_ERROR_ACTIVE) {
ret = adis16260_check_status(indio_dev);
- if (ret)
+ if (ret) {
+ mutex_unlock(&indio_dev->mlock);
return ret;
+ }
}
val16 = val16 & ((1 << chan->scan_type.realbits) - 1);
if (chan->scan_type.sign == 's')
if (ret)
goto error_unreg_ring_funcs;
regdone = 1;
- ret = iio_ring_buffer_register_ex(indio_dev->ring, 0,
- indio_dev->channels,
- ARRAY_SIZE(adis16260_channels_x));
+ ret = iio_ring_buffer_register(indio_dev,
+ indio_dev->channels,
+ ARRAY_SIZE(adis16260_channels_x));
if (ret) {
printk(KERN_ERR "failed to initialize the ring\n");
goto error_unreg_ring_funcs;
}
-
+ if (indio_dev->ring) {
+ /* Set default scan mode */
+ iio_scan_mask_set(indio_dev->ring, ADIS16260_SCAN_SUPPLY);
+ iio_scan_mask_set(indio_dev->ring, ADIS16260_SCAN_GYRO);
+ iio_scan_mask_set(indio_dev->ring, ADIS16260_SCAN_AUX_ADC);
+ iio_scan_mask_set(indio_dev->ring, ADIS16260_SCAN_TEMP);
+ iio_scan_mask_set(indio_dev->ring, ADIS16260_SCAN_ANGL);
+ }
if (spi->irq) {
ret = adis16260_probe_trigger(indio_dev);
if (ret)
error_remove_trigger:
adis16260_remove_trigger(indio_dev);
error_uninitialize_ring:
- iio_ring_buffer_unregister(indio_dev->ring);
+ iio_ring_buffer_unregister(indio_dev);
error_unreg_ring_funcs:
adis16260_unconfigure_ring(indio_dev);
error_free_dev:
flush_scheduled_work();
adis16260_remove_trigger(indio_dev);
- iio_ring_buffer_unregister(indio_dev->ring);
- iio_device_unregister(indio_dev);
+ iio_ring_buffer_unregister(indio_dev);
adis16260_unconfigure_ring(indio_dev);
+ iio_device_unregister(indio_dev);
err_ret:
return ret;