linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Kent Gibson <warthog618@gmail.com>
Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>,
	linux-gpio <linux-gpio@vger.kernel.org>
Subject: Re: [libgpiod] [PATCH 11/19] API: add support for SET_CONFIG
Date: Thu, 21 Nov 2019 08:13:42 +0100	[thread overview]
Message-ID: <CAMRc=MebbS86gvXytYrCBOyNVr74fTiVXG+NP0sx0F6SkAL_+A@mail.gmail.com> (raw)
In-Reply-To: <20191121003443.GA7695@sol>

czw., 21 lis 2019 o 01:34 Kent Gibson <warthog618@gmail.com> napisał(a):
>
> On Wed, Nov 20, 2019 at 04:18:24PM +0100, Bartosz Golaszewski wrote:
> > śr., 20 lis 2019 o 15:36 Kent Gibson <warthog618@gmail.com> napisał(a):
> > >
> > > On Wed, Nov 20, 2019 at 03:18:36PM +0100, Bartosz Golaszewski wrote:
> > > > śr., 20 lis 2019 o 15:13 Kent Gibson <warthog618@gmail.com> napisał(a):
> > > > >
> > > > > On Wed, Nov 20, 2019 at 03:08:57PM +0100, Bartosz Golaszewski wrote:
> > > > > > śr., 20 lis 2019 o 14:59 Kent Gibson <warthog618@gmail.com> napisał(a):
> > > > > > >
> > > > > > > On Wed, Nov 20, 2019 at 12:00:45PM +0100, Bartosz Golaszewski wrote:
> > > > > > > > wt., 19 lis 2019 o 16:53 Kent Gibson <warthog618@gmail.com> napisał(a):
> > > > > > > > >
> > > > > > > > > On Mon, Nov 18, 2019 at 10:48:25PM +0800, Kent Gibson wrote:
> > > > > > > > > > On Mon, Nov 18, 2019 at 02:52:04PM +0100, Bartosz Golaszewski
> > > > > > > > > > > > +
> > > > > > > > > > > > +int gpiod_line_set_flags_bulk(struct gpiod_line_bulk *bulk, int flags)
> > > > > > > > > > > > +{
> > > > > > > > > > > > +       struct gpiod_line *line;
> > > > > > > > > > > > +       int values[GPIOD_LINE_BULK_MAX_LINES];
> > > > > > > > > > > > +       unsigned int i;
> > > > > > > > > > > > +       int direction;
> > > > > > > > > > > > +
> > > > > > > > > > > > +       line = gpiod_line_bulk_get_line(bulk, 0);
> > > > > > > > > > > > +       if (line->as_is) {
> > > > > > > > > > >
> > > > > > > > > > > Can you explain the purpose of this as_is field? I'm not sure this is
> > > > > > > > > > > really needed.
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > It is there for gpiod_set_flags, which has to populate the direction
> > > > > > > > > > flags in the SET_CONFIG ioctl. The existing line->direction is
> > > > > > > > > > either input or output.  It is drawn from GPIOLINE_FLAG_IS_OUT, so
> > > > > > > > > > as-is is gets mapped to input.
> > > > > > > > > > I didn't want to change the existing line->direction, and adding the
> > > > > > > > > > as-is seemed clearer than adding another flavour of direction that
> > > > > > > > > > contained all three.
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > Hmmm, I think I see what you were getting at - the line->direction is the
> > > > > > > > > direction from the kernel, so it doesn't hurt to use that value to set the
> > > > > > > > > corresponding request flags - even if the original request was as-is??
> > > > > > > > >
> > > > > > > > > If that is the case then the line->as_is can be dropped throughout.
> > > > > > > > >
> > > > > > > > > Kent.
> > > > > > > > >
> > > > > > > >
> > > > > > > > Yes, this is what I was thinking. Just need to make sure the value
> > > > > > > > from the kernel is up-to-date.
> > > > > > > >
> > > > > > >
> > > > > > > So fail if needs_update?
> > > > > > >
> > > > > > > Kent.
> > > > > >
> > > > > > I'd say: do an implicit update before setting config.
> > > > > >
> > > > >
> > > > > So gpiod_line_update if needs_update, and fail if that fails?
> > > > >
> > > > > Kent.
> > > >
> > > > Without the if - needs_update is only set if an implicit update fails
> > > > in line_maybe_update(). But in this case we need to be sure, so do it
> > > > unconditionally.
> > > >
> > >
> > > Given that line_maybe_update is called at the end of request creation, and
> > > whenever set_config is called, how can line->direction be inconsistent
> > > with the kernel state - as long as needs_update is false?
> > >
> >
> > I don't think we should call line_maybe_update() on set_config() - in
> > this case we should call gpiod_line_update() and fail in set_config()
> > if it fails.
> >
> > I hope that's clearer.
> >
>
> Not really.  I was already shaky on the needs_update and I'm getting more
> confused about the overall needs_update handling policy by the minute.
>

Yeah it's not optimal. If you have better ideas on how to handle the
fact that the kernel can't really notify us about the changes in
line's flags introduced by other processes - I'll be more than glad to
give them a try. At some point I was thinking about another ioctl()
that - for a requested line - would return a file descriptor which
would emit events when a line changes - for instance, it's requested
by someone else or its direction is changed etc.

I then thought that nobody is requesting this yet and so it may be overkill.

Bart

> Perhaps it will be more productive to go to the code.
> I'll send out what I have as v2 and we can go from there.
>
> Cheers,
> Kent.

  reply	other threads:[~2019-11-21  7:13 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-15 14:43 [libgpiod] [PATCH 00/19] Add support for bias flags and SET_CONFIG Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 01/19] core: move request flag to handle flag conversion into a separate function Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 02/19] API: add support for bias flags Kent Gibson
2019-11-18 13:51   ` Bartosz Golaszewski
2019-11-18 14:12     ` Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 03/19] core: fix misspelling of parameter Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 04/19] tests: add tests for bias flags Kent Gibson
2019-11-18 13:51   ` Bartosz Golaszewski
2019-11-18 14:14     ` Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 05/19] bindings: cxx: drop noexcept from direction and active_state Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 06/19] bindings: cxx: initialise bitset with integer instead of string Kent Gibson
2019-11-18 13:51   ` Bartosz Golaszewski
2019-11-18 14:17     ` Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 07/19] bindings: cxx: add support for bias flags Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 08/19] bindings: cxx: tests: add tests " Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 09/19] bindings: python: add support " Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 10/19] bindings: python: tests: add tests " Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 11/19] API: add support for SET_CONFIG Kent Gibson
2019-11-18 13:52   ` Bartosz Golaszewski
2019-11-18 14:48     ` Kent Gibson
2019-11-19 15:52       ` Kent Gibson
2019-11-20 11:00         ` Bartosz Golaszewski
2019-11-20 13:58           ` Kent Gibson
2019-11-20 14:08             ` Bartosz Golaszewski
2019-11-20 14:13               ` Kent Gibson
2019-11-20 14:18                 ` Bartosz Golaszewski
2019-11-20 14:36                   ` Kent Gibson
2019-11-20 15:18                     ` Bartosz Golaszewski
2019-11-21  0:34                       ` Kent Gibson
2019-11-21  7:13                         ` Bartosz Golaszewski [this message]
2019-11-21  7:46                           ` Kent Gibson
2019-11-21  8:46                             ` Bartosz Golaszewski
2019-11-21  9:30                               ` Kent Gibson
2019-11-21 10:03                                 ` Bartosz Golaszewski
2019-11-21 10:18                                   ` Kent Gibson
2019-11-21 10:27                                     ` Bartosz Golaszewski
2019-11-21 10:31                                       ` Bartosz Golaszewski
2019-11-21 11:07                                         ` Kent Gibson
2019-11-21 15:22                                           ` Bartosz Golaszewski
2019-11-21 10:59                                       ` Kent Gibson
2019-11-21 15:20                                         ` Bartosz Golaszewski
2019-11-15 14:43 ` [libgpiod] [PATCH 12/19] tests: add tests " Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 13/19] core: allow gpiod_line_set_value_bulk to accept null values Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 14/19] bindings: cxx: add support for SET_CONFIG Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 15/19] bindings: cxx: tests: add tests for SET_CONFIG methods Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 16/19] bindings: python: add support for SET_CONFIG Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 17/19] bindings: python: tests: add tests for SET_CONFIG methods Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 18/19] tools: add support for bias flags Kent Gibson
2019-11-16 15:40   ` Kent Gibson
2019-11-17 12:18     ` Bartosz Golaszewski
2019-11-17 12:28       ` Kent Gibson
2019-11-17 13:12         ` Kent Gibson
2019-11-15 14:43 ` [libgpiod] [PATCH 19/19] treewide: change "correspond with" to "correspond to" Kent Gibson
2019-11-18 13:52   ` Bartosz Golaszewski
2019-11-18 15:01     ` Kent Gibson
2019-11-18 13:50 ` [libgpiod] [PATCH 00/19] Add support for bias flags and SET_CONFIG Bartosz Golaszewski
2019-11-18 14:09   ` Kent Gibson
2019-11-18 14:55     ` Bartosz Golaszewski

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='CAMRc=MebbS86gvXytYrCBOyNVr74fTiVXG+NP0sx0F6SkAL_+A@mail.gmail.com' \
    --to=brgl@bgdev.pl \
    --cc=bgolaszewski@baylibre.com \
    --cc=linux-gpio@vger.kernel.org \
    --cc=warthog618@gmail.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;
as well as URLs for NNTP newsgroup(s).