diff options
Diffstat (limited to 'include/linux/iio/buffer.h')
| -rw-r--r-- | include/linux/iio/buffer.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/include/linux/iio/buffer.h b/include/linux/iio/buffer.h index e5507e999ed1..a1124bdc4cac 100644 --- a/include/linux/iio/buffer.h +++ b/include/linux/iio/buffer.h | |||
| @@ -122,6 +122,31 @@ int iio_scan_mask_set(struct iio_dev *indio_dev, | |||
| 122 | */ | 122 | */ |
| 123 | int iio_push_to_buffers(struct iio_dev *indio_dev, const void *data); | 123 | int iio_push_to_buffers(struct iio_dev *indio_dev, const void *data); |
| 124 | 124 | ||
| 125 | /* | ||
| 126 | * iio_push_to_buffers_with_timestamp() - push data and timestamp to buffers | ||
| 127 | * @indio_dev: iio_dev structure for device. | ||
| 128 | * @data: sample data | ||
| 129 | * @timestamp: timestamp for the sample data | ||
| 130 | * | ||
| 131 | * Pushes data to the IIO device's buffers. If timestamps are enabled for the | ||
| 132 | * device the function will store the supplied timestamp as the last element in | ||
| 133 | * the sample data buffer before pushing it to the device buffers. The sample | ||
| 134 | * data buffer needs to be large enough to hold the additional timestamp | ||
| 135 | * (usually the buffer should be indio->scan_bytes bytes large). | ||
| 136 | * | ||
| 137 | * Returns 0 on success, a negative error code otherwise. | ||
| 138 | */ | ||
| 139 | static inline int iio_push_to_buffers_with_timestamp(struct iio_dev *indio_dev, | ||
| 140 | void *data, int64_t timestamp) | ||
| 141 | { | ||
| 142 | if (indio_dev->scan_timestamp) { | ||
| 143 | size_t ts_offset = indio_dev->scan_bytes / sizeof(int64_t) - 1; | ||
| 144 | ((int64_t *)data)[ts_offset] = timestamp; | ||
| 145 | } | ||
| 146 | |||
| 147 | return iio_push_to_buffers(indio_dev, data); | ||
| 148 | } | ||
| 149 | |||
| 125 | int iio_update_demux(struct iio_dev *indio_dev); | 150 | int iio_update_demux(struct iio_dev *indio_dev); |
| 126 | 151 | ||
| 127 | /** | 152 | /** |
