[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-iio
Subject: Re: [PATCH 3/9] iio: core: move @driver_module from struct iio_dev to struct iio_dev_opaque
From: Alexandru Ardelean <ardeleanalex () gmail ! com>
Date: 2021-04-28 6:55:51
Message-ID: CA+U=DsoWacU=LeVbAPDxLLE6WJY9ek=+9YJCgQymwZ1pF5Cauw () mail ! gmail ! com
[Download RAW message or body]
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
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic