|
138 | 138 |
|
139 | 139 | #define AD4170_NUM_ANALOG_PINS 9
|
140 | 140 | #define AD4170_MAX_ADC_CHANNELS 16
|
| 141 | +#define AD4170_MAX_IIO_CHANNELS (AD4170_MAX_ADC_CHANNELS + 1) |
141 | 142 | #define AD4170_MAX_ANALOG_PINS 8
|
142 | 143 | #define AD4170_MAX_SETUPS 8
|
143 | 144 | #define AD4170_INVALID_SETUP 9
|
@@ -334,7 +335,7 @@ struct ad4170_state {
|
334 | 335 | struct ad4170_setup_info setup_infos[AD4170_MAX_SETUPS];
|
335 | 336 | struct ad4170_chan_info chan_infos[AD4170_MAX_ADC_CHANNELS];
|
336 | 337 | struct completion completion;
|
337 |
| - struct iio_chan_spec chans[AD4170_MAX_ADC_CHANNELS]; |
| 338 | + struct iio_chan_spec chans[AD4170_MAX_IIO_CHANNELS]; |
338 | 339 | struct spi_device *spi;
|
339 | 340 | struct regmap *regmap;
|
340 | 341 | int sps_tbl[ARRAY_SIZE(ad4170_filt_names)][AD4170_MAX_FS_TBL_SIZE][2];
|
@@ -1633,6 +1634,12 @@ static int ad4170_parse_channels(struct iio_dev *indio_dev)
|
1633 | 1634 | return ret;
|
1634 | 1635 | }
|
1635 | 1636 |
|
| 1637 | + /* Add timestamp channel */ |
| 1638 | + struct iio_chan_spec ts_chan = IIO_CHAN_SOFT_TIMESTAMP(chan_num); |
| 1639 | + |
| 1640 | + st->chans[chan_num] = ts_chan; |
| 1641 | + num_channels = num_channels + 1; |
| 1642 | + |
1636 | 1643 | indio_dev->num_channels = num_channels;
|
1637 | 1644 | indio_dev->channels = st->chans;
|
1638 | 1645 |
|
@@ -1693,6 +1700,9 @@ static int ad4170_initial_config(struct iio_dev *indio_dev)
|
1693 | 1700 | unsigned int val;
|
1694 | 1701 |
|
1695 | 1702 | chan = &indio_dev->channels[i];
|
| 1703 | + if (chan->type == IIO_TIMESTAMP) |
| 1704 | + continue; |
| 1705 | + |
1696 | 1706 | chan_info = &st->chan_infos[chan->address];
|
1697 | 1707 |
|
1698 | 1708 | setup = &chan_info->setup;
|
@@ -1812,6 +1822,9 @@ static int ad4170_buffer_predisable(struct iio_dev *indio_dev)
|
1812 | 1822 | * channels will be read.
|
1813 | 1823 | */
|
1814 | 1824 | for (i = 0; i < indio_dev->num_channels; i++) {
|
| 1825 | + if (indio_dev->channels[i].type == IIO_TIMESTAMP) |
| 1826 | + continue; |
| 1827 | + |
1815 | 1828 | ret = ad4170_set_channel_enable(st, i, false);
|
1816 | 1829 | if (ret)
|
1817 | 1830 | return ret;
|
@@ -1863,7 +1876,9 @@ static irqreturn_t ad4170_trigger_handler(int irq, void *p)
|
1863 | 1876 | memcpy(&st->bounce_buffer[i++], st->rx_buf, ARRAY_SIZE(st->rx_buf));
|
1864 | 1877 | }
|
1865 | 1878 |
|
1866 |
| - iio_push_to_buffers(indio_dev, st->bounce_buffer); |
| 1879 | + iio_push_to_buffers_with_ts(indio_dev, st->bounce_buffer, |
| 1880 | + sizeof(st->bounce_buffer), |
| 1881 | + iio_get_time_ns(indio_dev)); |
1867 | 1882 | err_out:
|
1868 | 1883 | iio_trigger_notify_done(indio_dev->trig);
|
1869 | 1884 | return IRQ_HANDLED;
|
|
0 commit comments