iio:bmi160: use iio_pollfunc_store_time
authorMartin Kelly <martin@martingkelly.com>
Sat, 2 Feb 2019 21:56:00 +0000 (13:56 -0800)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 9 Feb 2019 15:24:27 +0000 (15:24 +0000)
Currently, we snap the timestamp after reading from the buffer and
processing the event. When the IIO poll function is triggered by an
interrupt,  we can get a slightly more accurate timestamp by snapping it
prior to reading the data, since the data was already generated prior to
entering the trigger handler. This is not going to make a huge difference,
but we might as well improve slightly.

Do this by using iio_pollfunc_store_time as other drivers do.

Signed-off-by: Martin Kelly <martin@martingkelly.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/imu/bmi160/bmi160_core.c

index 007f7c5..f3c5b86 100644 (file)
@@ -425,8 +425,7 @@ static irqreturn_t bmi160_trigger_handler(int irq, void *p)
                buf[j++] = sample;
        }
 
-       iio_push_to_buffers_with_timestamp(indio_dev, buf,
-                                          iio_get_time_ns(indio_dev));
+       iio_push_to_buffers_with_timestamp(indio_dev, buf, pf->timestamp);
 done:
        iio_trigger_notify_done(indio_dev->trig);
        return IRQ_HANDLED;
@@ -834,7 +833,8 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
        indio_dev->modes = INDIO_DIRECT_MODE;
        indio_dev->info = &bmi160_info;
 
-       ret = devm_iio_triggered_buffer_setup(dev, indio_dev, NULL,
+       ret = devm_iio_triggered_buffer_setup(dev, indio_dev,
+                                             iio_pollfunc_store_time,
                                              bmi160_trigger_handler, NULL);
        if (ret < 0)
                return ret;