diff options
author | 2020-06-22 17:37:27 +0200 | |
---|---|---|
committer | 2020-06-27 14:24:42 +0100 | |
commit | ec74ae9fd37c4518fa8f7e59cbfcbdc5c7dadb25 (patch) | |
tree | 5e501aa478dae2be60f49a0e07394657ddfe5881 /drivers/iio/imu/inv_icm42600/inv_icm42600.h | |
parent | iio: imu: inv_icm42600: add buffer support in iio devices (diff) | |
download | wireguard-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.h | 5 |
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 */ |