Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc2b7dab authored by Gregor Boirie's avatar Gregor Boirie Committed by Jonathan Cameron
Browse files

iio:core: timestamping clock selection support



Adds a new per-device sysfs attribute "current_timestamp_clock" to allow
userspace to select a particular POSIX clock for buffered samples and
events timestamping.

Following clocks, as listed in clock_gettime(2), are supported:
CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_MONOTONIC_RAW,
CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME and
CLOCK_TAI.

Signed-off-by: default avatarGregor Boirie <gregor.boirie@parrot.com>
Acked-by: default avatarSanchayan Maity <maitysanchayan@gmail.com>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent eaaa7ec7
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -32,6 +32,13 @@ Description:
		Description of the physical chip / device for device X.
		Typically a part number.

What:		/sys/bus/iio/devices/iio:deviceX/timestamp_clock
KernelVersion:	4.5
Contact:	linux-iio@vger.kernel.org
Description:
		String identifying current posix clock used to timestamp
		buffered samples and events for device X.

What:		/sys/bus/iio/devices/iio:deviceX/sampling_frequency
What:		/sys/bus/iio/devices/iio:deviceX/buffer/sampling_frequency
What:		/sys/bus/iio/devices/triggerX/sampling_frequency
+1 −1
Original line number Diff line number Diff line
@@ -594,7 +594,7 @@

    irqreturn_t sensor_iio_pollfunc(int irq, void *p)
    {
        pf->timestamp = iio_get_time_ns();
        pf->timestamp = iio_get_time_ns((struct indio_dev *)p);
        return IRQ_WAKE_THREAD;
    }

+1 −1
Original line number Diff line number Diff line
@@ -654,7 +654,7 @@ static irqreturn_t bma180_trigger_handler(int irq, void *p)
	struct iio_poll_func *pf = p;
	struct iio_dev *indio_dev = pf->indio_dev;
	struct bma180_data *data = iio_priv(indio_dev);
	int64_t time_ns = iio_get_time_ns();
	s64 time_ns = iio_get_time_ns(indio_dev);
	int bit, ret, i = 0;

	mutex_lock(&data->mutex);
+2 −2
Original line number Diff line number Diff line
@@ -901,7 +901,7 @@ static int __bmc150_accel_fifo_flush(struct iio_dev *indio_dev,
	 */
	if (!irq) {
		data->old_timestamp = data->timestamp;
		data->timestamp = iio_get_time_ns();
		data->timestamp = iio_get_time_ns(indio_dev);
	}

	/*
@@ -1303,7 +1303,7 @@ static irqreturn_t bmc150_accel_irq_handler(int irq, void *private)
	int i;

	data->old_timestamp = data->timestamp;
	data->timestamp = iio_get_time_ns();
	data->timestamp = iio_get_time_ns(indio_dev);

	for (i = 0; i < BMC150_ACCEL_TRIGGERS; i++) {
		if (data->triggers[i].enabled) {
+1 −1
Original line number Diff line number Diff line
@@ -1129,7 +1129,7 @@ static irqreturn_t kxcjk1013_data_rdy_trig_poll(int irq, void *private)
	struct iio_dev *indio_dev = private;
	struct kxcjk1013_data *data = iio_priv(indio_dev);

	data->timestamp = iio_get_time_ns();
	data->timestamp = iio_get_time_ns(indio_dev);

	if (data->dready_trigger_on)
		iio_trigger_poll(data->dready_trig);
Loading