Re: [PATCH v5 13/18] iio: expose iio_device_set_clock

From: Jonathan Cameron
Date: Sat Nov 16 2019 - 06:42:16 EST


On Fri, 15 Nov 2019 01:34:07 -0800
Gwendal Grignou <gwendal@xxxxxxxxxxxx> wrote:

> Some IIO devices may want to override the default (realtime) to another
> clock source by default.
> It can beneficial when timestamps coming from the hardware or underlying
> drivers are already in that format.
> It can always be overridden by attribute current_timestamp_clock.
>
> Signed-off-by: Gwendal Grignou <gwendal@xxxxxxxxxxxx>
Definitely a step in the right direction. We may want to also
consider a 'lock' on the value to prevent userspace overriding it, or
to perhaps limit the available choices.

For now though this lets you move forwards

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>

> ---
> drivers/iio/industrialio-core.c | 8 +++++++-
> include/linux/iio/iio.h | 2 ++
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index a46cdf2d8833..92815bdc14ee 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -188,7 +188,12 @@ ssize_t iio_read_const_attr(struct device *dev,
> }
> EXPORT_SYMBOL(iio_read_const_attr);
>
> -static int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id)
> +/**
> + * iio_device_set_clock() - Set current timestamping clock for the device
> + * @indio_dev: IIO device structure containing the device
> + * @clock_id: timestamping clock posix identifier to set.
> + */
> +int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id)
> {
> int ret;
> const struct iio_event_interface *ev_int = indio_dev->event_interface;
> @@ -206,6 +211,7 @@ static int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id)
>
> return 0;
> }
> +EXPORT_SYMBOL(iio_device_set_clock);
>
> /**
> * iio_get_time_ns() - utility function to get a time stamp for events etc
> diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
> index 862ce0019eba..b18f34a8901f 100644
> --- a/include/linux/iio/iio.h
> +++ b/include/linux/iio/iio.h
> @@ -627,6 +627,8 @@ static inline clockid_t iio_device_get_clock(const struct iio_dev *indio_dev)
> return indio_dev->clock_id;
> }
>
> +int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id);
> +
> /**
> * dev_to_iio_dev() - Get IIO device struct from a device struct
> * @dev: The device embedded in the IIO device