On Tue, 27 Apr 2021 11:02:02 +0300 Alexandru Ardelean <ardeleanalex@xxxxxxxxx> wrote: > On Mon, Apr 26, 2021 at 8:50 PM Jonathan Cameron <jic23@xxxxxxxxxx> wrote: > > > > From: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > > > There is already an acessor function used to access it, making this > > move straight forward. > > Right now the iio_device_get_clock() helper is only being used in the > Chrome EC core sensor driver. > Maybe later if that can be reworked without this helper, then it could > be made private to IIO core. > Though, chances are some other driver may come along later and ask for > it to be public again. Agreed. My gut feeling is this will come up again (largely because some idiot who will remain nameless picked a silly default clock many years ago when he didn't know better). Jonathan > > Anyway. > > Reviewed-by: Alexandru Ardelean <ardeleanalex@xxxxxxxxx> > > > > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > > --- > > drivers/iio/industrialio-core.c | 14 +++++++++++++- > > include/linux/iio/iio-opaque.h | 2 ++ > > include/linux/iio/iio.h | 12 +----------- > > 3 files changed, 16 insertions(+), 12 deletions(-) > > > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > > index 4a4c02fea152..efb4cf91c9e4 100644 > > --- a/drivers/iio/industrialio-core.c > > +++ b/drivers/iio/industrialio-core.c > > @@ -271,13 +271,25 @@ int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id) > > mutex_unlock(&indio_dev->mlock); > > return -EBUSY; > > } > > - indio_dev->clock_id = clock_id; > > + iio_dev_opaque->clock_id = clock_id; > > mutex_unlock(&indio_dev->mlock); > > > > return 0; > > } > > EXPORT_SYMBOL(iio_device_set_clock); > > > > +/** > > + * iio_device_get_clock() - Retrieve current timestamping clock for the device > > + * @indio_dev: IIO device structure containing the device > > + */ > > +clockid_t iio_device_get_clock(const struct iio_dev *indio_dev) > > +{ > > + struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(indio_dev); > > + > > + return iio_dev_opaque->clock_id; > > +} > > +EXPORT_SYMBOL(iio_device_get_clock); > > + > > /** > > * iio_get_time_ns() - utility function to get a time stamp for events etc > > * @indio_dev: device > > diff --git a/include/linux/iio/iio-opaque.h b/include/linux/iio/iio-opaque.h > > index d7c3036861ac..c9504e9da571 100644 > > --- a/include/linux/iio/iio-opaque.h > > +++ b/include/linux/iio/iio-opaque.h > > @@ -24,6 +24,7 @@ > > * @legacy_scan_el_group: attribute group for legacy scan elements attribute group > > * @legacy_buffer_group: attribute group for legacy buffer attributes group > > * @scan_index_timestamp: cache of the index to the timestamp > > + * @clock_id: timestamping clock posix identifier > > * @chrdev: associated character device > > * @flags: file ops related flags including busy flag. > > * @debugfs_dentry: device specific debugfs dentry > > @@ -51,6 +52,7 @@ struct iio_dev_opaque { > > struct attribute_group legacy_buffer_group; > > > > unsigned int scan_index_timestamp; > > + clockid_t clock_id; > > struct cdev chrdev; > > unsigned long flags; > > > > diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h > > index ed0537015eee..5606a3f4c4cb 100644 > > --- a/include/linux/iio/iio.h > > +++ b/include/linux/iio/iio.h > > @@ -509,7 +509,6 @@ struct iio_buffer_setup_ops { > > * @name: [DRIVER] name of the device. > > * @label: [DRIVER] unique name to identify which device this is > > * @info: [DRIVER] callbacks and constant info from driver > > - * @clock_id: [INTERN] timestamping clock posix identifier > > * @setup_ops: [DRIVER] callbacks to call before and after buffer > > * enable/disable > > * @priv: [DRIVER] reference to driver's private information > > @@ -538,7 +537,6 @@ struct iio_dev { > > const char *name; > > const char *label; > > const struct iio_info *info; > > - clockid_t clock_id; > > const struct iio_buffer_setup_ops *setup_ops; > > > > void *priv; > > @@ -589,15 +587,7 @@ static inline void iio_device_put(struct iio_dev *indio_dev) > > put_device(&indio_dev->dev); > > } > > > > -/** > > - * iio_device_get_clock() - Retrieve current timestamping clock for the device > > - * @indio_dev: IIO device structure containing the device > > - */ > > -static inline clockid_t iio_device_get_clock(const struct iio_dev *indio_dev) > > -{ > > - return indio_dev->clock_id; > > -} > > - > > +clockid_t iio_device_get_clock(const struct iio_dev *indio_dev); > > int iio_device_set_clock(struct iio_dev *indio_dev, clockid_t clock_id); > > > > /** > > -- > > 2.31.1 > >