linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kent Gibson <warthog618@gmail.com>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	"open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>,
	Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH v8 04/20] gpio: uapi: define uAPI v2
Date: Sun, 20 Sep 2020 18:48:26 +0800	[thread overview]
Message-ID: <20200920104826.GA793608@sol> (raw)
In-Reply-To: <CAHp75VdF1be-W3iV2JfWYZzEhrj13+5A+1Y4J8XgpBrkvg8cZQ@mail.gmail.com>

On Tue, Sep 15, 2020 at 01:06:36PM +0300, Andy Shevchenko wrote:
> On Wed, Sep 9, 2020 at 1:29 PM Kent Gibson <warthog618@gmail.com> wrote:
> >
> 
> Thanks again for doing this and sorry for quite a delay from my side.
> Below my comments regarding uAPI v2 (mostly nit-picks as I agree with
> it in general).
> 

No problems with most of your points - so I'll chop those bits out.
Responses to the remainder below...

> > +/**
> > + * enum gpio_v2_line_attr_id - &struct gpio_v2_line_attribute.id values
> 
> Perhaps per-item description (couple of words per each)?
> 

I'll add kernel doc for all the enum values - see if that works.

> > + * GPIO_V2_LINE_FLAG_OUTPUT etc, OR:ed together.  This is the default for
> 
> I think "OR:ed together" is understandable for programmers but a bit
> special for normal phrases. I would rephrase it somehow, but I'm not a
> native speaker.
> Something like "or any of their combinations".
> 

My bad - I was assuming the primary audience was programmers ;-).

Actually that description is drawn from the v1 uAPI, as is the case for
all of the fields that were carried over.

And "or any of their combinations" is misleading - some combinations are
invalid.

I'll take another look at it, but I'm ok with it as is. (and I' ok with
'ok' over 'OK' or 'okay' as well, btw ;-)

> > + * @attrs: the configuration attributes associated with the requested
> > + * lines.  Any attribute should only be associated with a particular line
> > + * once.  If an attribute is associated with a line multiple times then the
> > + * first occurrence (i.e. lowest index) has precedence.
> 
> This is a bit unexpected. I anticipated last come last served as in a
> shell script argument list.
> 

I don't want to encourage userspace to just add another entry to attrs
to encode a change.
The behaviour was originally as you describe, but was changed in v3 to
encourage userspace to keep the configuration attributes as simplified as
possible, and to make clearer that the fields, particularly the flags bits,
are not overlayed.

> > +       /*
> > +        * Pad to fill implicit padding and provide space for future use.
> > +        */
> 
> > +       __u32 padding[5];
> 
> This is still questionable. First of all why to waste so many bytes (I
> propose 5 -> 1) and how will you do when the structure changes (we
> still need some type of versioning or flags for which one u32 is more
> than enough).
> 

Ack - we disagree on how to manage future changes and the impact of
reserving space.

> > + * @num_lines: number of lines requested in this request, i.e. the number
> > + * of valid fields in the GPIO_V2_LINES_MAX sized arrays, set to 1 to
> > + * request a single line
> 
> I would rather call it "amount" or something which is one word, but
> you may have a reason for the current, so I don't insist.
> Also, I would describe what will be the expected behaviour outside of
> the range (and what is the range?).
> For example, would it mean that we consider all lines if num_lines >=
> _LINES_MAX?
> 

Using num_X to describe the number of active entries in array X is a
common pattern, so I'll stick with that.

And num_lines > _LINES_MAX is interpreted as invalid - since they wont
fit.  The EINVAL the user will get if they try should make that clear.

> > + * @consumer: a functional name for the consumer of this GPIO line as set
> > + * by whatever is using it, will be empty if there is no current user but
> > + * may also be empty if the consumer doesn't set this up
> 
> In both cases "empty" means what? All \0:s, only first \0, white spaces?
> 

Another one inherited from v1 - empty => consumer[0] == '\0'.

Cheers,
Kent.

  reply	other threads:[~2020-09-20 10:48 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-09 10:26 [PATCH v8 00/20] gpio: cdev: add uAPI v2 Kent Gibson
2020-09-09 10:26 ` [PATCH v8 01/20] gpiolib: cdev: desc_to_lineinfo should set info offset Kent Gibson
2020-09-15 10:08   ` Andy Shevchenko
2020-09-09 10:26 ` [PATCH v8 02/20] gpiolib: cdev: replace strncpy with strscpy Kent Gibson
2020-09-15 10:11   ` Andy Shevchenko
2020-09-09 10:26 ` [PATCH v8 03/20] gpio: uapi: define GPIO_MAX_NAME_SIZE for array sizes Kent Gibson
2020-09-15 10:12   ` Andy Shevchenko
2020-09-09 10:26 ` [PATCH v8 04/20] gpio: uapi: define uAPI v2 Kent Gibson
2020-09-15 10:06   ` Andy Shevchenko
2020-09-20 10:48     ` Kent Gibson [this message]
2020-09-09 10:26 ` [PATCH v8 05/20] gpiolib: make cdev a build option Kent Gibson
2020-09-15 10:12   ` Andy Shevchenko
2020-09-09 10:26 ` [PATCH v8 06/20] gpiolib: add build option for CDEV v1 ABI Kent Gibson
2020-09-15 10:15   ` Andy Shevchenko
2020-09-09 10:26 ` [PATCH v8 07/20] gpiolib: cdev: support GPIO_V2_GET_LINE_IOCTL and GPIO_V2_LINE_GET_VALUES_IOCTL Kent Gibson
2020-09-15 15:29   ` Andy Shevchenko
2020-09-09 10:26 ` [PATCH v8 08/20] gpiolib: cdev: support GPIO_V2_GET_LINEINFO_IOCTL and GPIO_V2_GET_LINEINFO_WATCH_IOCTL Kent Gibson
2020-09-09 10:26 ` [PATCH v8 09/20] gpiolib: cdev: support edge detection for uAPI v2 Kent Gibson
2020-09-15 10:39   ` Andy Shevchenko
2020-09-18 12:44     ` Kent Gibson
2020-09-18 14:00       ` Andy Shevchenko
2020-09-20 11:23     ` Kent Gibson
2020-09-09 10:26 ` [PATCH v8 10/20] gpiolib: cdev: support GPIO_V2_LINE_SET_CONFIG_IOCTL Kent Gibson
2020-09-09 10:26 ` [PATCH v8 11/20] gpiolib: cdev: support GPIO_V2_LINE_SET_VALUES_IOCTL Kent Gibson
2020-09-09 10:26 ` [PATCH v8 12/20] gpiolib: cdev: support setting debounce Kent Gibson
2020-09-09 10:26 ` [PATCH v8 13/20] gpio: uapi: document uAPI v1 as deprecated Kent Gibson
2020-09-09 10:26 ` [PATCH v8 14/20] tools: gpio: port lsgpio to v2 uAPI Kent Gibson
2020-09-09 10:26 ` [PATCH v8 15/20] tools: gpio: port gpio-watch " Kent Gibson
2020-09-09 10:26 ` [PATCH v8 16/20] tools: gpio: rename nlines to num_lines Kent Gibson
2020-09-09 10:26 ` [PATCH v8 17/20] tools: gpio: port gpio-hammer to v2 uAPI Kent Gibson
2020-09-09 10:26 ` [PATCH v8 18/20] tools: gpio: port gpio-event-mon " Kent Gibson
2020-09-09 10:26 ` [PATCH v8 19/20] tools: gpio: add multi-line monitoring to gpio-event-mon Kent Gibson
2020-09-09 10:26 ` [PATCH v8 20/20] tools: gpio: add debounce support " Kent Gibson
2020-09-14 12:45 ` [PATCH v8 00/20] gpio: cdev: add uAPI v2 Bartosz Golaszewski
2020-09-14 12:47 ` 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=20200920104826.GA793608@sol \
    --to=warthog618@gmail.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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).