[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