9 #include <linux/module.h>
12 #include <linux/device.h>
13 #include <linux/kernel.h>
15 #include <linux/slab.h>
21 #define ADIS16060_GYRO 0x20
22 #define ADIS16060_TEMP_OUT 0x10
23 #define ADIS16060_AIN2 0x80
24 #define ADIS16060_AIN1 0x40
41 static struct iio_dev *adis16060_iio_dev;
43 static int adis16060_spi_write(
struct iio_dev *indio_dev,
u8 val)
50 ret = spi_write(st->
us_w, st->buf, 3);
56 static int adis16060_spi_read(
struct iio_dev *indio_dev,
u16 *
val)
63 ret = spi_read(st->
us_r, st->buf, 3);
71 *val = ((st->buf[0] & 0x3) << 12) |
73 ((st->buf[2] >> 4) & 0xF);
79 static int adis16060_read_raw(
struct iio_dev *indio_dev,
91 ret = adis16060_spi_write(indio_dev, chan->
address);
96 ret = adis16060_spi_read(indio_dev, &tval);
113 static const struct iio_info adis16060_info = {
114 .read_raw = &adis16060_read_raw,
156 if (indio_dev ==
NULL) {
161 spi_set_drvdata(spi, indio_dev);
162 st = iio_priv(indio_dev);
166 indio_dev->
name = spi->
dev.driver->name;
167 indio_dev->
dev.parent = &spi->
dev;
168 indio_dev->
info = &adis16060_info;
170 indio_dev->
channels = adis16060_channels;
177 adis16060_iio_dev = indio_dev;
198 struct iio_dev *indio_dev = adis16060_iio_dev;
204 st = iio_priv(indio_dev);
205 spi_set_drvdata(spi, indio_dev);
218 static struct spi_driver adis16060_r_driver = {
220 .name =
"adis16060_r",
223 .probe = adis16060_r_probe,
227 static struct spi_driver adis16060_w_driver = {
229 .name =
"adis16060_w",
232 .probe = adis16060_w_probe,
236 static __init int adis16060_init(
void)
246 spi_unregister_driver(&adis16060_r_driver);
254 static __exit void adis16060_exit(
void)
256 spi_unregister_driver(&adis16060_w_driver);
257 spi_unregister_driver(&adis16060_r_driver);