aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/iio/imu/inv_icm42600/inv_icm42600.h
diff options
context:
space:
mode:
authorJean-Baptiste Maneyrol <jmaneyrol@invensense.com>2020-06-22 17:37:27 +0200
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2020-06-27 14:24:42 +0100
commitec74ae9fd37c4518fa8f7e59cbfcbdc5c7dadb25 (patch)
tree5e501aa478dae2be60f49a0e07394657ddfe5881 /drivers/iio/imu/inv_icm42600/inv_icm42600.h
parentiio: imu: inv_icm42600: add buffer support in iio devices (diff)
downloadwireguard-linux-ec74ae9fd37c4518fa8f7e59cbfcbdc5c7dadb25.tar.xz
wireguard-linux-ec74ae9fd37c4518fa8f7e59cbfcbdc5c7dadb25.zip
iio: imu: inv_icm42600: add accurate timestamping
Add a timestamping mechanism for buffer that provides accurate event timestamps when using watermark. This mechanism estimates device internal clock by comparing FIFO interrupts delta time and device elapsed time computed by parsing FIFO data. Take interrupt timestamp in hard irq handler and add IIO device specific timestamp structures in device private allocation. Signed-off-by: Jean-Baptiste Maneyrol <jmaneyrol@invensense.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Diffstat (limited to 'drivers/iio/imu/inv_icm42600/inv_icm42600.h')
-rw-r--r--drivers/iio/imu/inv_icm42600/inv_icm42600.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600.h b/drivers/iio/imu/inv_icm42600/inv_icm42600.h
index 7b52d92739c3..c0f5059b13b3 100644
--- a/drivers/iio/imu/inv_icm42600/inv_icm42600.h
+++ b/drivers/iio/imu/inv_icm42600/inv_icm42600.h
@@ -126,6 +126,7 @@ struct inv_icm42600_suspended {
* @indio_accel: accelerometer IIO device.
* @buffer: data transfer buffer aligned for DMA.
* @fifo: FIFO management structure.
+ * @timestamp: interrupt timestamps.
*/
struct inv_icm42600_state {
struct mutex lock;
@@ -141,6 +142,10 @@ struct inv_icm42600_state {
struct iio_dev *indio_accel;
uint8_t buffer[2] ____cacheline_aligned;
struct inv_icm42600_fifo fifo;
+ struct {
+ int64_t gyro;
+ int64_t accel;
+ } timestamp;
};
/* Virtual register addresses: @bank on MSB (4 upper bits), @address on LSB */