103
static int ad799x_scan_el_set_state(struct iio_scan_el *scan_el,
104
struct iio_dev *indio_dev,
107
struct ad799x_state *st = indio_dev->dev_data;
108
return ad799x_set_scan_mode(st, st->indio_dev->ring->scan_mask);
111
/* Here we claim all are 16 bits. This currently does no harm and saves
112
* us a lot of scan element listings */
114
#define AD799X_SCAN_EL(number) \
115
IIO_SCAN_EL_C(in##number, number, 0, ad799x_scan_el_set_state);
117
static AD799X_SCAN_EL(0);
118
static AD799X_SCAN_EL(1);
119
static AD799X_SCAN_EL(2);
120
static AD799X_SCAN_EL(3);
121
static AD799X_SCAN_EL(4);
122
static AD799X_SCAN_EL(5);
123
static AD799X_SCAN_EL(6);
124
static AD799X_SCAN_EL(7);
126
static IIO_SCAN_EL_TIMESTAMP(8);
127
static IIO_CONST_ATTR_SCAN_EL_TYPE(timestamp, s, 64, 64)
129
static ssize_t ad799x_show_type(struct device *dev,
130
struct device_attribute *attr,
133
struct iio_ring_buffer *ring = dev_get_drvdata(dev);
134
struct iio_dev *indio_dev = ring->indio_dev;
135
struct ad799x_state *st = indio_dev->dev_data;
137
return sprintf(buf, "%c%d/%d\n", st->chip_info->sign,
138
st->chip_info->bits, AD799X_STORAGEBITS);
140
static IIO_DEVICE_ATTR(in_type, S_IRUGO, ad799x_show_type, NULL, 0);
142
static int ad7991_5_9_set_scan_mode(struct ad799x_state *st, unsigned mask)
144
return i2c_smbus_write_byte(st->client,
145
st->config | (mask << AD799X_CHANNEL_SHIFT));
148
static int ad7992_3_4_set_scan_mode(struct ad799x_state *st, unsigned mask)
150
return ad799x_i2c_write8(st, AD7998_CONF_REG,
151
st->config | (mask << AD799X_CHANNEL_SHIFT));
154
static int ad7997_8_set_scan_mode(struct ad799x_state *st, unsigned mask)
101
int ad7997_8_set_scan_mode(struct ad799x_state *st, unsigned mask)
156
103
return ad799x_i2c_write16(st, AD7998_CONF_REG,
157
104
st->config | (mask << AD799X_CHANNEL_SHIFT));
160
int ad799x_set_scan_mode(struct ad799x_state *st, unsigned mask)
164
if (st->chip_info->ad799x_set_scan_mode != NULL) {
165
ret = st->chip_info->ad799x_set_scan_mode(st, mask);
166
return (ret > 0) ? 0 : ret;
172
static ssize_t ad799x_read_single_channel(struct device *dev,
173
struct device_attribute *attr,
176
struct iio_dev *dev_info = dev_get_drvdata(dev);
177
struct ad799x_state *st = iio_dev_get_devdata(dev_info);
178
struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
179
int ret = 0, len = 0;
107
static int ad799x_scan_direct(struct ad799x_state *st, unsigned ch)
185
mutex_lock(&dev_info->mlock);
186
mask = 1 << this_attr->address;
187
/* If ring buffer capture is occurring, query the buffer */
188
if (iio_ring_enabled(dev_info)) {
189
data = ret = ad799x_single_channel_from_ring(st, mask);
198
cmd = st->config | (mask << AD799X_CHANNEL_SHIFT);
203
cmd = mask << AD799X_CHANNEL_SHIFT;
207
cmd = (this_attr->address <<
208
AD799X_CHANNEL_SHIFT) | AD7997_8_READ_SINGLE;
214
ret = ad799x_i2c_read16(st, cmd, rxbuf);
221
/* Pretty print the result */
222
len = sprintf(buf, "%u\n", data & ((1 << (st->chip_info->bits)) - 1));
225
mutex_unlock(&dev_info->mlock);
226
return ret ? ret : len;
117
cmd = st->config | ((1 << ch) << AD799X_CHANNEL_SHIFT);
122
cmd = (1 << ch) << AD799X_CHANNEL_SHIFT;
126
cmd = (ch << AD799X_CHANNEL_SHIFT) | AD7997_8_READ_SINGLE;
132
ret = ad799x_i2c_read16(st, cmd, &rxbuf);
139
static int ad799x_read_raw(struct iio_dev *dev_info,
140
struct iio_chan_spec const *chan,
146
struct ad799x_state *st = dev_info->dev_data;
147
unsigned int scale_uv;
151
mutex_lock(&dev_info->mlock);
152
if (iio_ring_enabled(dev_info))
153
ret = ad799x_single_channel_from_ring(st,
156
ret = ad799x_scan_direct(st, chan->address);
157
mutex_unlock(&dev_info->mlock);
161
*val = (ret >> st->chip_info->channel[0].scan_type.shift) &
162
RES_MASK(st->chip_info->channel[0].scan_type.realbits);
164
case (1 << IIO_CHAN_INFO_SCALE_SHARED):
165
scale_uv = (st->int_vref_mv * 1000)
166
>> st->chip_info->channel[0].scan_type.realbits;
167
*val = scale_uv / 1000;
168
*val2 = (scale_uv % 1000) * 1000;
169
return IIO_VAL_INT_PLUS_MICRO;
229
174
static ssize_t ad799x_read_frequency(struct device *dev,
368
312
mutex_lock(&dev_info->mlock);
369
ret = ad799x_i2c_write16(st, this_attr->mask, val);
313
ret = ad799x_i2c_write16(st, this_attr->address, val);
370
314
mutex_unlock(&dev_info->mlock);
372
316
return ret ? ret : len;
375
static void ad799x_interrupt_bh(struct work_struct *work_s)
319
static irqreturn_t ad799x_event_handler(int irq, void *private)
377
struct ad799x_state *st = container_of(work_s,
378
struct ad799x_state, work_thresh);
321
struct iio_dev *indio_dev = private;
322
struct ad799x_state *st = iio_dev_get_devdata(private);
382
if (ad799x_i2c_read8(st, AD7998_ALERT_STAT_REG, &status))
326
ret = ad799x_i2c_read8(st, AD7998_ALERT_STAT_REG, &status);
388
333
ad799x_i2c_write8(st, AD7998_ALERT_STAT_REG, AD7998_ALERT_STAT_CLEAR);
390
335
for (i = 0; i < 8; i++) {
391
336
if (status & (1 << i))
392
iio_push_event(st->indio_dev, 0,
394
IIO_EVENT_CODE_IN_HIGH_THRESH(i >> 1) :
395
IIO_EVENT_CODE_IN_LOW_THRESH(i >> 1),
337
iio_push_event(indio_dev, 0,
339
IIO_EVENT_CODE_IN_HIGH_THRESH(i >> 1) :
340
IIO_EVENT_CODE_IN_LOW_THRESH(i >> 1),
400
enable_irq(st->client->irq);
403
static int ad799x_interrupt(struct iio_dev *dev_info,
408
struct ad799x_state *st = dev_info->dev_data;
410
st->last_timestamp = timestamp;
411
schedule_work(&st->work_thresh);
415
IIO_EVENT_SH(ad799x, &ad799x_interrupt);
417
/* Direct read attribtues */
418
static IIO_DEV_ATTR_IN_RAW(0, ad799x_read_single_channel, 0);
419
static IIO_DEV_ATTR_IN_RAW(1, ad799x_read_single_channel, 1);
420
static IIO_DEV_ATTR_IN_RAW(2, ad799x_read_single_channel, 2);
421
static IIO_DEV_ATTR_IN_RAW(3, ad799x_read_single_channel, 3);
422
static IIO_DEV_ATTR_IN_RAW(4, ad799x_read_single_channel, 4);
423
static IIO_DEV_ATTR_IN_RAW(5, ad799x_read_single_channel, 5);
424
static IIO_DEV_ATTR_IN_RAW(6, ad799x_read_single_channel, 6);
425
static IIO_DEV_ATTR_IN_RAW(7, ad799x_read_single_channel, 7);
427
static ssize_t ad799x_show_scale(struct device *dev,
428
struct device_attribute *attr,
431
/* Driver currently only support internal vref */
432
struct iio_dev *dev_info = dev_get_drvdata(dev);
433
struct ad799x_state *st = iio_dev_get_devdata(dev_info);
435
/* Corresponds to Vref / 2^(bits) */
436
unsigned int scale_uv = (st->int_vref_mv * 1000) >> st->chip_info->bits;
438
return sprintf(buf, "%d.%03d\n", scale_uv / 1000, scale_uv % 1000);
441
static IIO_DEVICE_ATTR(in_scale, S_IRUGO, ad799x_show_scale, NULL, 0);
443
static ssize_t ad799x_show_name(struct device *dev,
444
struct device_attribute *attr,
447
struct iio_dev *dev_info = dev_get_drvdata(dev);
448
struct ad799x_state *st = iio_dev_get_devdata(dev_info);
449
return sprintf(buf, "%s\n", st->client->name);
452
static IIO_DEVICE_ATTR(name, S_IRUGO, ad799x_show_name, NULL, 0);
454
static struct attribute *ad7991_5_9_3_4_device_attrs[] = {
455
&iio_dev_attr_in0_raw.dev_attr.attr,
456
&iio_dev_attr_in1_raw.dev_attr.attr,
457
&iio_dev_attr_in2_raw.dev_attr.attr,
458
&iio_dev_attr_in3_raw.dev_attr.attr,
459
&iio_dev_attr_name.dev_attr.attr,
460
&iio_dev_attr_in_scale.dev_attr.attr,
464
static struct attribute_group ad7991_5_9_3_4_dev_attr_group = {
465
.attrs = ad7991_5_9_3_4_device_attrs,
468
static struct attribute *ad7991_5_9_3_4_scan_el_attrs[] = {
469
&iio_scan_el_in0.dev_attr.attr,
470
&iio_const_attr_in0_index.dev_attr.attr,
471
&iio_scan_el_in1.dev_attr.attr,
472
&iio_const_attr_in1_index.dev_attr.attr,
473
&iio_scan_el_in2.dev_attr.attr,
474
&iio_const_attr_in2_index.dev_attr.attr,
475
&iio_scan_el_in3.dev_attr.attr,
476
&iio_const_attr_in3_index.dev_attr.attr,
477
&iio_const_attr_timestamp_index.dev_attr.attr,
478
&iio_scan_el_timestamp.dev_attr.attr,
479
&iio_const_attr_timestamp_type.dev_attr.attr,
480
&iio_dev_attr_in_type.dev_attr.attr,
484
static struct attribute_group ad7991_5_9_3_4_scan_el_group = {
485
.name = "scan_elements",
486
.attrs = ad7991_5_9_3_4_scan_el_attrs,
489
static struct attribute *ad7992_device_attrs[] = {
490
&iio_dev_attr_in0_raw.dev_attr.attr,
491
&iio_dev_attr_in1_raw.dev_attr.attr,
492
&iio_dev_attr_name.dev_attr.attr,
493
&iio_dev_attr_in_scale.dev_attr.attr,
497
static struct attribute_group ad7992_dev_attr_group = {
498
.attrs = ad7992_device_attrs,
501
static struct attribute *ad7992_scan_el_attrs[] = {
502
&iio_scan_el_in0.dev_attr.attr,
503
&iio_const_attr_in0_index.dev_attr.attr,
504
&iio_scan_el_in1.dev_attr.attr,
505
&iio_const_attr_in1_index.dev_attr.attr,
506
&iio_const_attr_timestamp_index.dev_attr.attr,
507
&iio_scan_el_timestamp.dev_attr.attr,
508
&iio_const_attr_timestamp_type.dev_attr.attr,
509
&iio_dev_attr_in_type.dev_attr.attr,
513
static struct attribute_group ad7992_scan_el_group = {
514
.name = "scan_elements",
515
.attrs = ad7992_scan_el_attrs,
518
static struct attribute *ad7997_8_device_attrs[] = {
519
&iio_dev_attr_in0_raw.dev_attr.attr,
520
&iio_dev_attr_in1_raw.dev_attr.attr,
521
&iio_dev_attr_in2_raw.dev_attr.attr,
522
&iio_dev_attr_in3_raw.dev_attr.attr,
523
&iio_dev_attr_in4_raw.dev_attr.attr,
524
&iio_dev_attr_in5_raw.dev_attr.attr,
525
&iio_dev_attr_in6_raw.dev_attr.attr,
526
&iio_dev_attr_in7_raw.dev_attr.attr,
527
&iio_dev_attr_name.dev_attr.attr,
528
&iio_dev_attr_in_scale.dev_attr.attr,
532
static struct attribute_group ad7997_8_dev_attr_group = {
533
.attrs = ad7997_8_device_attrs,
536
static struct attribute *ad7997_8_scan_el_attrs[] = {
537
&iio_scan_el_in0.dev_attr.attr,
538
&iio_const_attr_in0_index.dev_attr.attr,
539
&iio_scan_el_in1.dev_attr.attr,
540
&iio_const_attr_in1_index.dev_attr.attr,
541
&iio_scan_el_in2.dev_attr.attr,
542
&iio_const_attr_in2_index.dev_attr.attr,
543
&iio_scan_el_in3.dev_attr.attr,
544
&iio_const_attr_in3_index.dev_attr.attr,
545
&iio_scan_el_in4.dev_attr.attr,
546
&iio_const_attr_in4_index.dev_attr.attr,
547
&iio_scan_el_in5.dev_attr.attr,
548
&iio_const_attr_in5_index.dev_attr.attr,
549
&iio_scan_el_in6.dev_attr.attr,
550
&iio_const_attr_in6_index.dev_attr.attr,
551
&iio_scan_el_in7.dev_attr.attr,
552
&iio_const_attr_in7_index.dev_attr.attr,
553
&iio_const_attr_timestamp_index.dev_attr.attr,
554
&iio_scan_el_timestamp.dev_attr.attr,
555
&iio_const_attr_timestamp_type.dev_attr.attr,
556
&iio_dev_attr_in_type.dev_attr.attr,
560
static struct attribute_group ad7997_8_scan_el_group = {
561
.name = "scan_elements",
562
.attrs = ad7997_8_scan_el_attrs,
565
IIO_EVENT_ATTR_SH(in0_thresh_low_value,
567
ad799x_read_channel_config,
568
ad799x_write_channel_config,
569
AD7998_DATALOW_CH1_REG);
571
IIO_EVENT_ATTR_SH(in0_thresh_high_value,
573
ad799x_read_channel_config,
574
ad799x_write_channel_config,
575
AD7998_DATAHIGH_CH1_REG);
577
IIO_EVENT_ATTR_SH(in0_thresh_both_hyst_raw,
579
ad799x_read_channel_config,
580
ad799x_write_channel_config,
581
AD7998_HYST_CH1_REG);
583
IIO_EVENT_ATTR_SH(in1_thresh_low_value,
585
ad799x_read_channel_config,
586
ad799x_write_channel_config,
587
AD7998_DATALOW_CH2_REG);
589
IIO_EVENT_ATTR_SH(in1_thresh_high_value,
591
ad799x_read_channel_config,
592
ad799x_write_channel_config,
593
AD7998_DATAHIGH_CH2_REG);
595
IIO_EVENT_ATTR_SH(in1_thresh_both_hyst_raw,
597
ad799x_read_channel_config,
598
ad799x_write_channel_config,
599
AD7998_HYST_CH2_REG);
601
IIO_EVENT_ATTR_SH(in2_thresh_low_value,
603
ad799x_read_channel_config,
604
ad799x_write_channel_config,
605
AD7998_DATALOW_CH3_REG);
607
IIO_EVENT_ATTR_SH(in2_thresh_high_value,
609
ad799x_read_channel_config,
610
ad799x_write_channel_config,
611
AD7998_DATAHIGH_CH3_REG);
613
IIO_EVENT_ATTR_SH(in2_thresh_both_hyst_raw,
615
ad799x_read_channel_config,
616
ad799x_write_channel_config,
617
AD7998_HYST_CH3_REG);
619
IIO_EVENT_ATTR_SH(in3_thresh_low_value,
621
ad799x_read_channel_config,
622
ad799x_write_channel_config,
623
AD7998_DATALOW_CH4_REG);
625
IIO_EVENT_ATTR_SH(in3_thresh_high_value,
627
ad799x_read_channel_config,
628
ad799x_write_channel_config,
629
AD7998_DATAHIGH_CH4_REG);
631
IIO_EVENT_ATTR_SH(in3_thresh_both_hyst_raw,
633
ad799x_read_channel_config,
634
ad799x_write_channel_config,
635
AD7998_HYST_CH4_REG);
347
static IIO_DEVICE_ATTR(in0_thresh_low_value,
349
ad799x_read_channel_config,
350
ad799x_write_channel_config,
351
AD7998_DATALOW_CH1_REG);
353
static IIO_DEVICE_ATTR(in0_thresh_high_value,
355
ad799x_read_channel_config,
356
ad799x_write_channel_config,
357
AD7998_DATAHIGH_CH1_REG);
359
static IIO_DEVICE_ATTR(in0_thresh_both_hyst_raw,
361
ad799x_read_channel_config,
362
ad799x_write_channel_config,
363
AD7998_HYST_CH1_REG);
365
static IIO_DEVICE_ATTR(in1_thresh_low_value,
367
ad799x_read_channel_config,
368
ad799x_write_channel_config,
369
AD7998_DATALOW_CH2_REG);
371
static IIO_DEVICE_ATTR(in1_thresh_high_value,
373
ad799x_read_channel_config,
374
ad799x_write_channel_config,
375
AD7998_DATAHIGH_CH2_REG);
377
static IIO_DEVICE_ATTR(in1_thresh_both_hyst_raw,
379
ad799x_read_channel_config,
380
ad799x_write_channel_config,
381
AD7998_HYST_CH2_REG);
383
static IIO_DEVICE_ATTR(in2_thresh_low_value,
385
ad799x_read_channel_config,
386
ad799x_write_channel_config,
387
AD7998_DATALOW_CH3_REG);
389
static IIO_DEVICE_ATTR(in2_thresh_high_value,
391
ad799x_read_channel_config,
392
ad799x_write_channel_config,
393
AD7998_DATAHIGH_CH3_REG);
395
static IIO_DEVICE_ATTR(in2_thresh_both_hyst_raw,
397
ad799x_read_channel_config,
398
ad799x_write_channel_config,
399
AD7998_HYST_CH3_REG);
401
static IIO_DEVICE_ATTR(in3_thresh_low_value,
403
ad799x_read_channel_config,
404
ad799x_write_channel_config,
405
AD7998_DATALOW_CH4_REG);
407
static IIO_DEVICE_ATTR(in3_thresh_high_value,
409
ad799x_read_channel_config,
410
ad799x_write_channel_config,
411
AD7998_DATAHIGH_CH4_REG);
413
static IIO_DEVICE_ATTR(in3_thresh_both_hyst_raw,
415
ad799x_read_channel_config,
416
ad799x_write_channel_config,
417
AD7998_HYST_CH4_REG);
637
419
static IIO_DEV_ATTR_SAMP_FREQ(S_IWUSR | S_IRUGO,
638
420
ad799x_read_frequency,
677
459
.attrs = ad7992_event_attributes,
462
static const struct iio_info ad7991_info = {
463
.read_raw = &ad799x_read_raw,
464
.driver_module = THIS_MODULE,
467
static const struct iio_info ad7992_info = {
468
.read_raw = &ad799x_read_raw,
469
.num_interrupt_lines = 1,
470
.event_attrs = &ad7992_event_attrs_group,
471
.driver_module = THIS_MODULE,
474
static const struct iio_info ad7993_4_7_8_info = {
475
.read_raw = &ad799x_read_raw,
476
.num_interrupt_lines = 1,
477
.event_attrs = &ad7993_4_7_8_event_attrs_group,
478
.driver_module = THIS_MODULE,
680
481
static const struct ad799x_chip_info ad799x_chip_info_tbl[] = {
684
.sign = IIO_SCAN_EL_TYPE_UNSIGNED,
483
.channel[0] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0,
484
(1 << IIO_CHAN_INFO_SCALE_SHARED),
485
0, 0, IIO_ST('u', 12, 16, 0), 0),
486
.channel[1] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0,
487
(1 << IIO_CHAN_INFO_SCALE_SHARED),
488
1, 1, IIO_ST('u', 12, 16, 0), 0),
489
.channel[2] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0,
490
(1 << IIO_CHAN_INFO_SCALE_SHARED),
491
2, 2, IIO_ST('u', 12, 16, 0), 0),
492
.channel[3] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0,
493
(1 << IIO_CHAN_INFO_SCALE_SHARED),
494
3, 3, IIO_ST('u', 12, 16, 0), 0),
495
.channel[4] = IIO_CHAN_SOFT_TIMESTAMP(4),
685
497
.int_vref_mv = 4096,
686
.dev_attrs = &ad7991_5_9_3_4_dev_attr_group,
687
.scan_attrs = &ad7991_5_9_3_4_scan_el_group,
688
.ad799x_set_scan_mode = ad7991_5_9_set_scan_mode,
498
.info = &ad7991_info,
693
.sign = IIO_SCAN_EL_TYPE_UNSIGNED,
501
.channel[0] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0,
502
(1 << IIO_CHAN_INFO_SCALE_SHARED),
503
0, 0, IIO_ST('u', 10, 16, 0), 0),
504
.channel[1] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0,
505
(1 << IIO_CHAN_INFO_SCALE_SHARED),
506
1, 1, IIO_ST('u', 10, 16, 0), 0),
507
.channel[2] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0,
508
(1 << IIO_CHAN_INFO_SCALE_SHARED),
509
2, 2, IIO_ST('u', 10, 16, 0), 0),
510
.channel[3] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0,
511
(1 << IIO_CHAN_INFO_SCALE_SHARED),
512
3, 3, IIO_ST('u', 10, 16, 0), 0),
513
.channel[4] = IIO_CHAN_SOFT_TIMESTAMP(4),
694
515
.int_vref_mv = 1024,
695
.dev_attrs = &ad7991_5_9_3_4_dev_attr_group,
696
.scan_attrs = &ad7991_5_9_3_4_scan_el_group,
697
.ad799x_set_scan_mode = ad7991_5_9_set_scan_mode,
516
.info = &ad7991_info,
702
.sign = IIO_SCAN_EL_TYPE_UNSIGNED,
519
.channel[0] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0,
520
(1 << IIO_CHAN_INFO_SCALE_SHARED),
521
0, 0, IIO_ST('u', 10, 16, 0), 0),
522
.channel[1] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0,
523
(1 << IIO_CHAN_INFO_SCALE_SHARED),
524
1, 1, IIO_ST('u', 10, 16, 0), 0),
525
.channel[2] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0,
526
(1 << IIO_CHAN_INFO_SCALE_SHARED),
527
2, 2, IIO_ST('u', 10, 16, 0), 0),
528
.channel[3] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0,
529
(1 << IIO_CHAN_INFO_SCALE_SHARED),
530
3, 3, IIO_ST('u', 10, 16, 0), 0),
531
.channel[4] = IIO_CHAN_SOFT_TIMESTAMP(4),
703
533
.int_vref_mv = 1024,
704
.dev_attrs = &ad7991_5_9_3_4_dev_attr_group,
705
.scan_attrs = &ad7991_5_9_3_4_scan_el_group,
706
.ad799x_set_scan_mode = ad7991_5_9_set_scan_mode,
534
.info = &ad7991_info,
711
.sign = IIO_SCAN_EL_TYPE_UNSIGNED,
537
.channel[0] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0,
538
(1 << IIO_CHAN_INFO_SCALE_SHARED),
539
0, 0, IIO_ST('u', 12, 16, 0), 0),
540
.channel[1] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0,
541
(1 << IIO_CHAN_INFO_SCALE_SHARED),
542
1, 1, IIO_ST('u', 12, 16, 0), 0),
543
.channel[2] = IIO_CHAN_SOFT_TIMESTAMP(2),
712
545
.int_vref_mv = 4096,
713
.monitor_mode = true,
714
546
.default_config = AD7998_ALERT_EN,
715
.dev_attrs = &ad7992_dev_attr_group,
716
.scan_attrs = &ad7992_scan_el_group,
717
.event_attrs = &ad7992_event_attrs_group,
718
.ad799x_set_scan_mode = ad7992_3_4_set_scan_mode,
547
.info = &ad7992_info,
723
.sign = IIO_SCAN_EL_TYPE_UNSIGNED,
550
.channel[0] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0,
551
(1 << IIO_CHAN_INFO_SCALE_SHARED),
552
0, 0, IIO_ST('u', 10, 16, 0), 0),
553
.channel[1] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0,
554
(1 << IIO_CHAN_INFO_SCALE_SHARED),
555
1, 1, IIO_ST('u', 10, 16, 0), 0),
556
.channel[2] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0,
557
(1 << IIO_CHAN_INFO_SCALE_SHARED),
558
2, 2, IIO_ST('u', 10, 16, 0), 0),
559
.channel[3] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0,
560
(1 << IIO_CHAN_INFO_SCALE_SHARED),
561
3, 3, IIO_ST('u', 10, 16, 0), 0),
562
.channel[4] = IIO_CHAN_SOFT_TIMESTAMP(4),
724
564
.int_vref_mv = 1024,
725
.monitor_mode = true,
726
565
.default_config = AD7998_ALERT_EN,
727
.dev_attrs = &ad7991_5_9_3_4_dev_attr_group,
728
.scan_attrs = &ad7991_5_9_3_4_scan_el_group,
729
.event_attrs = &ad7993_4_7_8_event_attrs_group,
730
.ad799x_set_scan_mode = ad7992_3_4_set_scan_mode,
566
.info = &ad7993_4_7_8_info,
735
.sign = IIO_SCAN_EL_TYPE_UNSIGNED,
569
.channel[0] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0,
570
(1 << IIO_CHAN_INFO_SCALE_SHARED),
571
0, 0, IIO_ST('u', 12, 16, 0), 0),
572
.channel[1] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0,
573
(1 << IIO_CHAN_INFO_SCALE_SHARED),
574
1, 1, IIO_ST('u', 12, 16, 0), 0),
575
.channel[2] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0,
576
(1 << IIO_CHAN_INFO_SCALE_SHARED),
577
2, 2, IIO_ST('u', 12, 16, 0), 0),
578
.channel[3] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0,
579
(1 << IIO_CHAN_INFO_SCALE_SHARED),
580
3, 3, IIO_ST('u', 12, 16, 0), 0),
581
.channel[4] = IIO_CHAN_SOFT_TIMESTAMP(4),
736
583
.int_vref_mv = 4096,
737
.monitor_mode = true,
738
584
.default_config = AD7998_ALERT_EN,
739
.dev_attrs = &ad7991_5_9_3_4_dev_attr_group,
740
.scan_attrs = &ad7991_5_9_3_4_scan_el_group,
741
.event_attrs = &ad7993_4_7_8_event_attrs_group,
742
.ad799x_set_scan_mode = ad7992_3_4_set_scan_mode,
585
.info = &ad7993_4_7_8_info,
747
.sign = IIO_SCAN_EL_TYPE_UNSIGNED,
588
.channel[0] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0,
589
(1 << IIO_CHAN_INFO_SCALE_SHARED),
590
0, 0, IIO_ST('u', 10, 16, 0), 0),
591
.channel[1] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0,
592
(1 << IIO_CHAN_INFO_SCALE_SHARED),
593
1, 1, IIO_ST('u', 10, 16, 0), 0),
594
.channel[2] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0,
595
(1 << IIO_CHAN_INFO_SCALE_SHARED),
596
2, 2, IIO_ST('u', 10, 16, 0), 0),
597
.channel[3] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0,
598
(1 << IIO_CHAN_INFO_SCALE_SHARED),
599
3, 3, IIO_ST('u', 10, 16, 0), 0),
600
.channel[4] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 4, 0,
601
(1 << IIO_CHAN_INFO_SCALE_SHARED),
602
4, 4, IIO_ST('u', 10, 16, 0), 0),
603
.channel[5] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 5, 0,
604
(1 << IIO_CHAN_INFO_SCALE_SHARED),
605
5, 5, IIO_ST('u', 10, 16, 0), 0),
606
.channel[6] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 6, 0,
607
(1 << IIO_CHAN_INFO_SCALE_SHARED),
608
6, 6, IIO_ST('u', 10, 16, 0), 0),
609
.channel[7] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 7, 0,
610
(1 << IIO_CHAN_INFO_SCALE_SHARED),
611
7, 7, IIO_ST('u', 10, 16, 0), 0),
612
.channel[8] = IIO_CHAN_SOFT_TIMESTAMP(8),
748
614
.int_vref_mv = 1024,
749
.monitor_mode = true,
750
615
.default_config = AD7998_ALERT_EN,
751
.dev_attrs = &ad7997_8_dev_attr_group,
752
.scan_attrs = &ad7997_8_scan_el_group,
753
.event_attrs = &ad7993_4_7_8_event_attrs_group,
754
.ad799x_set_scan_mode = ad7997_8_set_scan_mode,
616
.info = &ad7993_4_7_8_info,
759
.sign = IIO_SCAN_EL_TYPE_UNSIGNED,
619
.channel[0] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0,
620
(1 << IIO_CHAN_INFO_SCALE_SHARED),
621
0, 0, IIO_ST('u', 12, 16, 0), 0),
622
.channel[1] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0,
623
(1 << IIO_CHAN_INFO_SCALE_SHARED),
624
1, 1, IIO_ST('u', 12, 16, 0), 0),
625
.channel[2] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0,
626
(1 << IIO_CHAN_INFO_SCALE_SHARED),
627
2, 2, IIO_ST('u', 12, 16, 0), 0),
628
.channel[3] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0,
629
(1 << IIO_CHAN_INFO_SCALE_SHARED),
630
3, 3, IIO_ST('u', 12, 16, 0), 0),
631
.channel[4] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 4, 0,
632
(1 << IIO_CHAN_INFO_SCALE_SHARED),
633
4, 4, IIO_ST('u', 12, 16, 0), 0),
634
.channel[5] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 5, 0,
635
(1 << IIO_CHAN_INFO_SCALE_SHARED),
636
5, 5, IIO_ST('u', 12, 16, 0), 0),
637
.channel[6] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 6, 0,
638
(1 << IIO_CHAN_INFO_SCALE_SHARED),
639
6, 6, IIO_ST('u', 12, 16, 0), 0),
640
.channel[7] = IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 7, 0,
641
(1 << IIO_CHAN_INFO_SCALE_SHARED),
642
7, 7, IIO_ST('u', 12, 16, 0), 0),
643
.channel[8] = IIO_CHAN_SOFT_TIMESTAMP(8),
760
645
.int_vref_mv = 4096,
761
.monitor_mode = true,
762
646
.default_config = AD7998_ALERT_EN,
763
.dev_attrs = &ad7997_8_dev_attr_group,
764
.scan_attrs = &ad7997_8_scan_el_group,
765
.event_attrs = &ad7993_4_7_8_event_attrs_group,
766
.ad799x_set_scan_mode = ad7997_8_set_scan_mode,
647
.info = &ad7993_4_7_8_info,