Message ID | 20210426174911.397061-4-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> > > Continuing move to hide internal elements from drivers, move this structure > element over. It's only accessed from iio core files so this one was > straight forward and no accessor functions are needed. > Reviewed-by: Alexandru Ardelean <ardeleanalex@gmail.com> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > --- > drivers/iio/industrialio-core.c | 2 +- > drivers/iio/industrialio-trigger.c | 9 ++++++--- > include/linux/iio/iio-opaque.h | 2 ++ > include/linux/iio/iio.h | 3 --- > 4 files changed, 9 insertions(+), 7 deletions(-) > > diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c > index c16b8f344c93..8c38f1f6e075 100644 > --- a/drivers/iio/industrialio-core.c > +++ b/drivers/iio/industrialio-core.c > @@ -1859,7 +1859,7 @@ int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod) > if (!indio_dev->info) > return -EINVAL; > > - indio_dev->driver_module = this_mod; > + iio_dev_opaque->driver_module = this_mod; > /* If the calling driver did not initialize of_node, do it here */ > if (!indio_dev->dev.of_node && indio_dev->dev.parent) > indio_dev->dev.of_node = indio_dev->dev.parent->of_node; > diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c > index 3236647b2c37..b489eeeb0004 100644 > --- a/drivers/iio/industrialio-trigger.c > +++ b/drivers/iio/industrialio-trigger.c > @@ -13,6 +13,7 @@ > #include <linux/slab.h> > > #include <linux/iio/iio.h> > +#include <linux/iio/iio-opaque.h> > #include <linux/iio/trigger.h> > #include "iio_core.h" > #include "iio_core_trigger.h" > @@ -240,12 +241,13 @@ static void iio_trigger_put_irq(struct iio_trigger *trig, int irq) > int iio_trigger_attach_poll_func(struct iio_trigger *trig, > struct iio_poll_func *pf) > { > + struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(pf->indio_dev); > bool notinuse = > bitmap_empty(trig->pool, CONFIG_IIO_CONSUMERS_PER_TRIGGER); > int ret = 0; > > /* Prevent the module from being removed whilst attached to a trigger */ > - __module_get(pf->indio_dev->driver_module); > + __module_get(iio_dev_opaque->driver_module); > > /* Get irq number */ > pf->irq = iio_trigger_get_irq(trig); > @@ -284,13 +286,14 @@ int iio_trigger_attach_poll_func(struct iio_trigger *trig, > out_put_irq: > iio_trigger_put_irq(trig, pf->irq); > out_put_module: > - module_put(pf->indio_dev->driver_module); > + module_put(iio_dev_opaque->driver_module); > return ret; > } > > int iio_trigger_detach_poll_func(struct iio_trigger *trig, > struct iio_poll_func *pf) > { > + struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(pf->indio_dev); > bool no_other_users = > bitmap_weight(trig->pool, CONFIG_IIO_CONSUMERS_PER_TRIGGER) == 1; > int ret = 0; > @@ -304,7 +307,7 @@ int iio_trigger_detach_poll_func(struct iio_trigger *trig, > trig->attached_own_device = false; > iio_trigger_put_irq(trig, pf->irq); > free_irq(pf->irq, pf); > - module_put(pf->indio_dev->driver_module); > + module_put(iio_dev_opaque->driver_module); > > return ret; > } > diff --git a/include/linux/iio/iio-opaque.h b/include/linux/iio/iio-opaque.h > index f876e3aede2c..96dd265103d0 100644 > --- a/include/linux/iio/iio-opaque.h > +++ b/include/linux/iio/iio-opaque.h > @@ -7,6 +7,7 @@ > * struct iio_dev_opaque - industrial I/O device opaque information > * @indio_dev: public industrial I/O device information > * @id: used to identify device internally > + * @driver_module: used to make it harder to undercut users > * @event_interface: event chrdevs associated with interrupt lines > * @attached_buffers: array of buffers statically attached by the driver > * @attached_buffers_cnt: number of buffers in the array of statically attached buffers > @@ -28,6 +29,7 @@ > struct iio_dev_opaque { > struct iio_dev indio_dev; > int id; > + struct module *driver_module; > struct iio_event_interface *event_interface; > struct iio_buffer **attached_buffers; > unsigned int attached_buffers_cnt; > diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h > index 569861d5887a..9e8e1358a032 100644 > --- a/include/linux/iio/iio.h > +++ b/include/linux/iio/iio.h > @@ -488,7 +488,6 @@ struct iio_buffer_setup_ops { > > /** > * struct iio_dev - industrial I/O device > - * @driver_module: [INTERN] used to make it harder to undercut users > * @modes: [DRIVER] operating modes supported by device > * @currentmode: [DRIVER] current operating mode > * @dev: [DRIVER] device structure, should be assigned a parent > @@ -522,8 +521,6 @@ struct iio_buffer_setup_ops { > * **MUST** be accessed **ONLY** via iio_priv() helper > */ > struct iio_dev { > - struct module *driver_module; > - > int modes; > int currentmode; > struct device dev; > -- > 2.31.1 >
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index c16b8f344c93..8c38f1f6e075 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -1859,7 +1859,7 @@ int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod) if (!indio_dev->info) return -EINVAL; - indio_dev->driver_module = this_mod; + iio_dev_opaque->driver_module = this_mod; /* If the calling driver did not initialize of_node, do it here */ if (!indio_dev->dev.of_node && indio_dev->dev.parent) indio_dev->dev.of_node = indio_dev->dev.parent->of_node; diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c index 3236647b2c37..b489eeeb0004 100644 --- a/drivers/iio/industrialio-trigger.c +++ b/drivers/iio/industrialio-trigger.c @@ -13,6 +13,7 @@ #include <linux/slab.h> #include <linux/iio/iio.h> +#include <linux/iio/iio-opaque.h> #include <linux/iio/trigger.h> #include "iio_core.h" #include "iio_core_trigger.h" @@ -240,12 +241,13 @@ static void iio_trigger_put_irq(struct iio_trigger *trig, int irq) int iio_trigger_attach_poll_func(struct iio_trigger *trig, struct iio_poll_func *pf) { + struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(pf->indio_dev); bool notinuse = bitmap_empty(trig->pool, CONFIG_IIO_CONSUMERS_PER_TRIGGER); int ret = 0; /* Prevent the module from being removed whilst attached to a trigger */ - __module_get(pf->indio_dev->driver_module); + __module_get(iio_dev_opaque->driver_module); /* Get irq number */ pf->irq = iio_trigger_get_irq(trig); @@ -284,13 +286,14 @@ int iio_trigger_attach_poll_func(struct iio_trigger *trig, out_put_irq: iio_trigger_put_irq(trig, pf->irq); out_put_module: - module_put(pf->indio_dev->driver_module); + module_put(iio_dev_opaque->driver_module); return ret; } int iio_trigger_detach_poll_func(struct iio_trigger *trig, struct iio_poll_func *pf) { + struct iio_dev_opaque *iio_dev_opaque = to_iio_dev_opaque(pf->indio_dev); bool no_other_users = bitmap_weight(trig->pool, CONFIG_IIO_CONSUMERS_PER_TRIGGER) == 1; int ret = 0; @@ -304,7 +307,7 @@ int iio_trigger_detach_poll_func(struct iio_trigger *trig, trig->attached_own_device = false; iio_trigger_put_irq(trig, pf->irq); free_irq(pf->irq, pf); - module_put(pf->indio_dev->driver_module); + module_put(iio_dev_opaque->driver_module); return ret; } diff --git a/include/linux/iio/iio-opaque.h b/include/linux/iio/iio-opaque.h index f876e3aede2c..96dd265103d0 100644 --- a/include/linux/iio/iio-opaque.h +++ b/include/linux/iio/iio-opaque.h @@ -7,6 +7,7 @@ * struct iio_dev_opaque - industrial I/O device opaque information * @indio_dev: public industrial I/O device information * @id: used to identify device internally + * @driver_module: used to make it harder to undercut users * @event_interface: event chrdevs associated with interrupt lines * @attached_buffers: array of buffers statically attached by the driver * @attached_buffers_cnt: number of buffers in the array of statically attached buffers @@ -28,6 +29,7 @@ struct iio_dev_opaque { struct iio_dev indio_dev; int id; + struct module *driver_module; struct iio_event_interface *event_interface; struct iio_buffer **attached_buffers; unsigned int attached_buffers_cnt; diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h index 569861d5887a..9e8e1358a032 100644 --- a/include/linux/iio/iio.h +++ b/include/linux/iio/iio.h @@ -488,7 +488,6 @@ struct iio_buffer_setup_ops { /** * struct iio_dev - industrial I/O device - * @driver_module: [INTERN] used to make it harder to undercut users * @modes: [DRIVER] operating modes supported by device * @currentmode: [DRIVER] current operating mode * @dev: [DRIVER] device structure, should be assigned a parent @@ -522,8 +521,6 @@ struct iio_buffer_setup_ops { * **MUST** be accessed **ONLY** via iio_priv() helper */ struct iio_dev { - struct module *driver_module; - int modes; int currentmode; struct device dev;