aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/adc/ad7298_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/iio/adc/ad7298_core.c')
-rw-r--r--drivers/staging/iio/adc/ad7298_core.c41
1 files changed, 23 insertions, 18 deletions
diff --git a/drivers/staging/iio/adc/ad7298_core.c b/drivers/staging/iio/adc/ad7298_core.c
index 2e3b0d979fc..0be71dfcf11 100644
--- a/drivers/staging/iio/adc/ad7298_core.c
+++ b/drivers/staging/iio/adc/ad7298_core.c
@@ -24,31 +24,31 @@
24 24
25static struct iio_chan_spec ad7298_channels[] = { 25static struct iio_chan_spec ad7298_channels[] = {
26 IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0, 26 IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0,
27 (1 << IIO_CHAN_INFO_SCALE_SEPARATE), 27 IIO_CHAN_INFO_SCALE_SEPARATE_BIT,
28 9, AD7298_CH_TEMP, IIO_ST('s', 32, 32, 0), 0), 28 9, AD7298_CH_TEMP, IIO_ST('s', 32, 32, 0), 0),
29 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 0, 0, 29 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 0, 0,
30 (1 << IIO_CHAN_INFO_SCALE_SHARED), 30 IIO_CHAN_INFO_SCALE_SHARED_BIT,
31 0, 0, IIO_ST('u', 12, 16, 0), 0), 31 0, 0, IIO_ST('u', 12, 16, 0), 0),
32 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 1, 0, 32 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 1, 0,
33 (1 << IIO_CHAN_INFO_SCALE_SHARED), 33 IIO_CHAN_INFO_SCALE_SHARED_BIT,
34 1, 1, IIO_ST('u', 12, 16, 0), 0), 34 1, 1, IIO_ST('u', 12, 16, 0), 0),
35 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 2, 0, 35 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 2, 0,
36 (1 << IIO_CHAN_INFO_SCALE_SHARED), 36 IIO_CHAN_INFO_SCALE_SHARED_BIT,
37 2, 2, IIO_ST('u', 12, 16, 0), 0), 37 2, 2, IIO_ST('u', 12, 16, 0), 0),
38 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 3, 0, 38 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 3, 0,
39 (1 << IIO_CHAN_INFO_SCALE_SHARED), 39 IIO_CHAN_INFO_SCALE_SHARED_BIT,
40 3, 3, IIO_ST('u', 12, 16, 0), 0), 40 3, 3, IIO_ST('u', 12, 16, 0), 0),
41 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 4, 0, 41 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 4, 0,
42 (1 << IIO_CHAN_INFO_SCALE_SHARED), 42 IIO_CHAN_INFO_SCALE_SHARED_BIT,
43 4, 4, IIO_ST('u', 12, 16, 0), 0), 43 4, 4, IIO_ST('u', 12, 16, 0), 0),
44 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 5, 0, 44 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 5, 0,
45 (1 << IIO_CHAN_INFO_SCALE_SHARED), 45 IIO_CHAN_INFO_SCALE_SHARED_BIT,
46 5, 5, IIO_ST('u', 12, 16, 0), 0), 46 5, 5, IIO_ST('u', 12, 16, 0), 0),
47 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 6, 0, 47 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 6, 0,
48 (1 << IIO_CHAN_INFO_SCALE_SHARED), 48 IIO_CHAN_INFO_SCALE_SHARED_BIT,
49 6, 6, IIO_ST('u', 12, 16, 0), 0), 49 6, 6, IIO_ST('u', 12, 16, 0), 0),
50 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 7, 0, 50 IIO_CHAN(IIO_VOLTAGE, 0, 1, 0, NULL, 7, 0,
51 (1 << IIO_CHAN_INFO_SCALE_SHARED), 51 IIO_CHAN_INFO_SCALE_SHARED_BIT,
52 7, 7, IIO_ST('u', 12, 16, 0), 0), 52 7, 7, IIO_ST('u', 12, 16, 0), 0),
53 IIO_CHAN_SOFT_TIMESTAMP(8), 53 IIO_CHAN_SOFT_TIMESTAMP(8),
54}; 54};
@@ -143,15 +143,20 @@ static int ad7298_read_raw(struct iio_dev *indio_dev,
143 *val = ret & RES_MASK(AD7298_BITS); 143 *val = ret & RES_MASK(AD7298_BITS);
144 144
145 return IIO_VAL_INT; 145 return IIO_VAL_INT;
146 case IIO_CHAN_INFO_SCALE_SHARED: 146 case IIO_CHAN_INFO_SCALE:
147 scale_uv = (st->int_vref_mv * 1000) >> AD7298_BITS; 147 switch (chan->type) {
148 *val = scale_uv / 1000; 148 case IIO_VOLTAGE:
149 *val2 = (scale_uv % 1000) * 1000; 149 scale_uv = (st->int_vref_mv * 1000) >> AD7298_BITS;
150 return IIO_VAL_INT_PLUS_MICRO; 150 *val = scale_uv / 1000;
151 case IIO_CHAN_INFO_SCALE_SEPARATE: 151 *val2 = (scale_uv % 1000) * 1000;
152 *val = 1; 152 return IIO_VAL_INT_PLUS_MICRO;
153 *val2 = 0; 153 case IIO_TEMP:
154 return IIO_VAL_INT_PLUS_MICRO; 154 *val = 1;
155 *val2 = 0;
156 return IIO_VAL_INT_PLUS_MICRO;
157 default:
158 return -EINVAL;
159 }
155 } 160 }
156 return -EINVAL; 161 return -EINVAL;
157} 162}