From: Jonathan Cameron <jic23@kernel.org>
To: Alexandru Ardelean <alexandru.ardelean@analog.com>
Cc: <linux-iio@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<lars@metafoo.de>, <pmeerw@pmeerw.net>
Subject: Re: [PATCH v6 3/6] iio: core: register chardev only if needed
Date: Sun, 3 May 2020 16:39:26 +0100 [thread overview]
Message-ID: <20200503163926.6f840406@archlinux> (raw)
In-Reply-To: <20200427131100.50845-4-alexandru.ardelean@analog.com>
On Mon, 27 Apr 2020 16:10:57 +0300
Alexandru Ardelean <alexandru.ardelean@analog.com> wrote:
> The final intent is to localize all buffer ops into the
> industrialio-buffer.c file, to be able to add support for multiple buffers
> per IIO device.
>
> We only need a chardev if we need to support buffers and/or events.
>
> With this change, a chardev will be created only if an IIO buffer is
> attached OR an event_interface is configured.
>
> Otherwise, no chardev will be created, and the IIO device will get
> registered with the 'device_add()' call.
>
> Quite a lot of IIO devices don't really need a chardev, so this is a minor
> improvement to the IIO core, as the IIO device will take up (slightly)
> fewer resources.
>
> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
> ---
> drivers/iio/industrialio-core.c | 25 ++++++++++++++++++++++---
> 1 file changed, 22 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index 32c489139cd2..51e279c60793 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -1682,6 +1682,15 @@ static int iio_check_unique_scan_index(struct iio_dev *indio_dev)
>
> static const struct iio_buffer_setup_ops noop_ring_setup_ops;
>
> +static const struct file_operations iio_event_fileops = {
> + .owner = THIS_MODULE,
> + .llseek = noop_llseek,
> + .unlocked_ioctl = iio_event_ioctl_wrapper,
Unfortunately this doesn't exist until the next patch...
> + .compat_ioctl = compat_ptr_ioctl,
> + .open = iio_chrdev_open,
> + .release = iio_chrdev_release,
> +};
> +
> int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod)
> {
> int ret;
> @@ -1732,11 +1741,18 @@ int __iio_device_register(struct iio_dev *indio_dev, struct module *this_mod)
> indio_dev->setup_ops == NULL)
> indio_dev->setup_ops = &noop_ring_setup_ops;
>
> - cdev_init(&indio_dev->chrdev, &iio_buffer_fileops);
> + if (indio_dev->buffer)
> + cdev_init(&indio_dev->chrdev, &iio_buffer_fileops);
> + else if (indio_dev->event_interface)
> + cdev_init(&indio_dev->chrdev, &iio_event_fileops);
>
> indio_dev->chrdev.owner = this_mod;
>
> - ret = cdev_device_add(&indio_dev->chrdev, &indio_dev->dev);
> + if (indio_dev->buffer || indio_dev->event_interface)
> + ret = cdev_device_add(&indio_dev->chrdev, &indio_dev->dev);
> + else
> + ret = device_add(&indio_dev->dev);
> +
> if (ret < 0)
> goto error_unreg_eventset;
>
> @@ -1760,7 +1776,10 @@ EXPORT_SYMBOL(__iio_device_register);
> **/
> void iio_device_unregister(struct iio_dev *indio_dev)
> {
> - cdev_device_del(&indio_dev->chrdev, &indio_dev->dev);
> + if (indio_dev->buffer || indio_dev->event_interface)
> + cdev_device_del(&indio_dev->chrdev, &indio_dev->dev);
> + else
> + device_del(&indio_dev->dev);
>
> mutex_lock(&indio_dev->info_exist_lock);
>
next prev parent reply other threads:[~2020-05-03 15:39 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-27 13:10 [PATCH v6 0/6] iio: core,buffer: re-organize chardev creation Alexandru Ardelean
2020-04-27 13:10 ` [PATCH v6 1/6] iio: buffer: add back-ref from iio_buffer to iio_dev Alexandru Ardelean
2020-04-27 13:10 ` [PATCH v6 2/6] iio: core,buffer: wrap iio_buffer_put() call into iio_buffers_put() Alexandru Ardelean
2020-04-27 13:10 ` [PATCH v6 3/6] iio: core: register chardev only if needed Alexandru Ardelean
2020-05-03 15:39 ` Jonathan Cameron [this message]
2020-05-04 6:46 ` Ardelean, Alexandru
2020-04-27 13:10 ` [PATCH v6 4/6] iio: buffer,event: duplicate chardev creation for buffers & events Alexandru Ardelean
2020-04-27 13:10 ` [PATCH v6 5/6] iio: core: add simple centralized mechanism for ioctl() handlers Alexandru Ardelean
2020-04-27 13:11 ` [PATCH v6 6/6] iio: core: use new common ioctl() mechanism Alexandru Ardelean
2020-05-03 15:51 ` [PATCH v6 0/6] iio: core,buffer: re-organize chardev creation Jonathan Cameron
2020-05-06 12:52 ` Ardelean, Alexandru
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200503163926.6f840406@archlinux \
--to=jic23@kernel.org \
--cc=alexandru.ardelean@analog.com \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pmeerw@pmeerw.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.