Message ID | 20210426174911.397061-10-jic23@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iio: Move more things from iio_dev to iio_dev_opaque | expand |
On Mon, Apr 26, 2021 at 8:50 PM Jonathan Cameron <jic23@kernel.org> wrote: > > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > 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. Anyway. Reviewed-by: Alexandru Ardelean <ardeleanalex@gmail.com> > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > --- > 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 >
On Tue, 27 Apr 2021 11:02:02 +0300 Alexandru Ardelean <ardeleanalex@gmail.com> wrote: > On Mon, Apr 26, 2021 at 8:50 PM Jonathan Cameron <jic23@kernel.org> wrote: > > > > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > 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@gmail.com> > > > > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > --- > > 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 > >
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); /**