aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/iio/buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/iio/buffer.h')
-rw-r--r--include/linux/iio/buffer.h25
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 */
123int iio_push_to_buffers(struct iio_dev *indio_dev, const void *data); 123int 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 */
139static 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
125int iio_update_demux(struct iio_dev *indio_dev); 150int iio_update_demux(struct iio_dev *indio_dev);
126 151
127/** 152/**