From: Jonathan Cameron <jic23@cam.ac.uk>
To: Jonathan Cameron <jic23@cam.ac.uk>
Cc: michael.hennerich@analog.com, linux-iio@vger.kernel.org,
device-drivers-devel@blackfin.uclinux.org, drivers@analog.com
Subject: Re: [PATCH] iio: trigger: Add filter callbacks
Date: Mon, 06 Jun 2011 12:54:10 +0100 [thread overview]
Message-ID: <4DECBFE2.3020602@cam.ac.uk> (raw)
In-Reply-To: <4DECBCCA.4020305@cam.ac.uk>
On 06/06/11 12:40, Jonathan Cameron wrote:
> On 06/06/11 12:01, michael.hennerich@analog.com wrote:
>> From: Michael Hennerich <michael.hennerich@analog.com>
>>
>> Allow devices to reject triggers and vice versa.
> The iio_trigger changes clash with a cleanup I just finished.
> What mine is doing is adding an iio_trigger_ops structure which has
> all of the per driver constant stuff (.owner and callbacks) lifted
> from struct iio_trigger.
>
> I'll apply yours before mine and update those changes before
> posting.
>
> Basically what you have here is sound. The bit that was in your earlier
> patch will get eaten up by git anyway so that doesn't really matter.
>
> Please adjust so as to pass back return values from the callbacks in
> the error case.
Actually, one more thing. iio_validate_trigger in iio_dev is I guess
constant per driver? (or at least a set of parts supported by a driver?)
If so, please put it in iio_info rather than iio_dev.
Lets keep as much constant as possible!
For that matter, they could both do with documenting in the kernel-doc for
the structures as well.
Jonathan
>
> Thanks,
>
> Jonathan
>>
>> Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
>> ---
>> drivers/staging/iio/iio.h | 2 ++
>> drivers/staging/iio/industrialio-trigger.c | 16 +++++++++++++++-
>> drivers/staging/iio/trigger.h | 2 ++
>> 3 files changed, 19 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/staging/iio/iio.h b/drivers/staging/iio/iio.h
>> index 78a0927..8ec4f41 100644
>> --- a/drivers/staging/iio/iio.h
>> +++ b/drivers/staging/iio/iio.h
>> @@ -293,6 +293,8 @@ struct iio_dev {
>>
>> u32 *available_scan_masks;
>> struct iio_trigger *trig;
>> + int (*iio_validate_trigger) (struct iio_dev *indio_dev,
>> + struct iio_trigger *trig);
>> struct iio_poll_func *pollfunc;
>>
>> struct iio_chan_spec const *channels;
>> diff --git a/drivers/staging/iio/industrialio-trigger.c b/drivers/staging/iio/industrialio-trigger.c
>> index 6159023..1f6bc65 100644
>> --- a/drivers/staging/iio/industrialio-trigger.c
>> +++ b/drivers/staging/iio/industrialio-trigger.c
>> @@ -294,6 +294,7 @@ struct iio_poll_func
>> pf->h = h;
>> pf->thread = thread;
>> pf->type = type;
>> + pf->private_data = private;
> That's already in the patch you sent to Greg last week. I'm holding that one in my local tree,
> and I'll guess Greg will pick it up and push to Linus next time he is working with the staging
> tree.
>
>>
>> return pf;
>> }
>> @@ -339,6 +340,8 @@ static ssize_t iio_trigger_write_current(struct device *dev,
>> {
>> struct iio_dev *dev_info = dev_get_drvdata(dev);
>> struct iio_trigger *oldtrig = dev_info->trig;
>> + struct iio_trigger *trig;
>> +
>> mutex_lock(&dev_info->mlock);
>> if (dev_info->currentmode == INDIO_RING_TRIGGERED) {
>> mutex_unlock(&dev_info->mlock);
>> @@ -346,7 +349,18 @@ static ssize_t iio_trigger_write_current(struct device *dev,
>> }
>> mutex_unlock(&dev_info->mlock);
>>
>> - dev_info->trig = iio_trigger_find_by_name(buf, len);
>> + trig = iio_trigger_find_by_name(buf, len);
>> +
>> + if (trig && dev_info->iio_validate_trigger &&
>> + dev_info->iio_validate_trigger(dev_info, trig))
>> + return -EINVAL;
> I'd rather see error returned from the callback passed on.
>> +
>> + if (trig && trig->iio_validate_device &&
>> + trig->iio_validate_device(trig, dev_info))
>> + return -EINVAL;
> same here.
>> +
>> + dev_info->trig = trig;
>> +
>> if (oldtrig && dev_info->trig != oldtrig)
>> iio_put_trigger(oldtrig);
>> if (dev_info->trig)
>> diff --git a/drivers/staging/iio/trigger.h b/drivers/staging/iio/trigger.h
>> index f329fe1..9218200 100644
>> --- a/drivers/staging/iio/trigger.h
>> +++ b/drivers/staging/iio/trigger.h
>> @@ -48,6 +48,8 @@ struct iio_trigger {
>>
>> int (*set_trigger_state)(struct iio_trigger *trig, bool state);
>> int (*try_reenable)(struct iio_trigger *trig);
>> + int (*iio_validate_device)(struct iio_trigger *trig,
>> + struct iio_dev *indio_dev);
>>
>> struct irq_chip subirq_chip;
>> int subirq_base;
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2011-06-06 11:54 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-06 11:01 [PATCH] iio: trigger: Add filter callbacks michael.hennerich
2011-06-06 11:40 ` Jonathan Cameron
2011-06-06 11:54 ` Jonathan Cameron [this message]
2011-06-06 11:56 ` Hennerich, Michael
2011-06-06 12:48 ` Jonathan Cameron
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=4DECBFE2.3020602@cam.ac.uk \
--to=jic23@cam.ac.uk \
--cc=device-drivers-devel@blackfin.uclinux.org \
--cc=drivers@analog.com \
--cc=linux-iio@vger.kernel.org \
--cc=michael.hennerich@analog.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox