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>,
Arnd Bergmann <arnd@arndb.de>
Subject: Re: [PATCH v9 10/20] gpiolib: cdev: support GPIO_V2_LINE_SET_CONFIG_IOCTL
Date: Thu, 24 Sep 2020 11:24:14 +0800 [thread overview]
Message-ID: <20200924032414.GC11575@sol> (raw)
In-Reply-To: <CAHp75Vcktxp1C6NTOrW-WEnfueOu0UvtquFLpsL5+vv6Fdaajw@mail.gmail.com>
On Wed, Sep 23, 2020 at 07:15:46PM +0300, Andy Shevchenko wrote:
> On Wed, Sep 23, 2020 at 7:14 PM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> >
> > On Tue, Sep 22, 2020 at 5:35 AM Kent Gibson <warthog618@gmail.com> wrote:
> > >
> > > Add support for GPIO_V2_LINE_SET_CONFIG_IOCTL, the uAPI v2
> > > line set config ioctl.
>
> > > +static long linereq_set_config_unlocked(struct linereq *lr,
> > > + struct gpio_v2_line_config *lc)
> > > +{
> > > + struct gpio_desc *desc;
> > > + unsigned int i;
> > > + u64 flags;
> > > + bool polarity_change;
> > > + int ret;
> > > +
> > > + for (i = 0; i < lr->num_lines; i++) {
> > > + desc = lr->lines[i].desc;
> > > + flags = gpio_v2_line_config_flags(lc, i);
> >
> > > + polarity_change =
> > > + (test_bit(FLAG_ACTIVE_LOW, &desc->flags) !=
> > > + ((flags & GPIO_V2_LINE_FLAG_ACTIVE_LOW) != 0));
> >
> > Comparison
>
> Comparison between int / long (not all archs are agreed on this) and
> boolean is not the best we can do.
>
There is no bool to int comparision here.
There are two comparisons - the inner int vs int => bool and the
outer bool vs bool. The "!= 0" is effectively an implicit cast to
bool, as is your new_polarity initialisation below.
> What about
>
> bool old_polarity = test_bit(FLAG_ACTIVE_LOW, &desc->flags);
> bool new_polarity = flags & GPIO_V2_LINE_FLAG_ACTIVE_LOW;
>
> old_polarity ^ new_polarity
>
So using bitwise operators on bools is ok??
> and move this under INPUT conditional?
>
It has to be before the gpio_v2_line_config_flags_to_desc_flags() call,
as that modifies the desc flags, including the new polarity, so
polarity_change would then always be false :-).
Cheers,
Kent.
> > > +
> > > + gpio_v2_line_config_flags_to_desc_flags(flags, &desc->flags);
> > > + /*
> > > + * Lines have to be requested explicitly for input
> > > + * or output, else the line will be treated "as is".
> > > + */
> > > + if (flags & GPIO_V2_LINE_FLAG_OUTPUT) {
> > > + int val = gpio_v2_line_config_output_value(lc, i);
> > > +
> > > + edge_detector_stop(&lr->lines[i]);
> > > + ret = gpiod_direction_output(desc, val);
> > > + if (ret)
> > > + return ret;
> > > + } else if (flags & GPIO_V2_LINE_FLAG_INPUT) {
> > > + ret = gpiod_direction_input(desc);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret = edge_detector_update(&lr->lines[i],
> > > + flags & GPIO_V2_LINE_EDGE_FLAGS,
> > > + polarity_change);
> > > + if (ret)
> > > + return ret;
> > > + }
> > > +
> > > + blocking_notifier_call_chain(&desc->gdev->notifier,
> > > + GPIO_V2_LINE_CHANGED_CONFIG,
> > > + desc);
> > > + }
> > > + return 0;
> > > +}
>
> --
> With Best Regards,
> Andy Shevchenko
next prev parent reply other threads:[~2020-09-24 3:24 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-22 2:31 [PATCH v9 00/20] gpio: cdev: add uAPI v2 Kent Gibson
2020-09-22 2:31 ` [PATCH v9 01/20] gpiolib: cdev: gpio_desc_to_lineinfo() should set info offset Kent Gibson
2020-09-22 2:31 ` [PATCH v9 02/20] gpiolib: cdev: replace strncpy() with strscpy() Kent Gibson
2020-09-22 2:31 ` [PATCH v9 03/20] gpio: uapi: define GPIO_MAX_NAME_SIZE for array sizes Kent Gibson
2020-09-22 2:31 ` [PATCH v9 04/20] gpio: uapi: define uAPI v2 Kent Gibson
2020-09-22 7:41 ` Arnd Bergmann
2020-09-22 9:50 ` Bartosz Golaszewski
2020-09-22 10:07 ` Kent Gibson
2020-09-23 10:04 ` Andy Shevchenko
2020-09-23 10:30 ` Kent Gibson
2020-09-23 11:16 ` Andy Shevchenko
2020-09-23 12:18 ` Arnd Bergmann
2020-09-23 15:15 ` Andy Shevchenko
2020-09-22 2:31 ` [PATCH v9 05/20] gpiolib: make cdev a build option Kent Gibson
2020-09-22 2:31 ` [PATCH v9 06/20] gpiolib: add build option for CDEV v1 ABI Kent Gibson
2020-09-22 2:31 ` [PATCH v9 07/20] gpiolib: cdev: support GPIO_V2_GET_LINE_IOCTL and GPIO_V2_LINE_GET_VALUES_IOCTL Kent Gibson
2020-09-23 11:11 ` Andy Shevchenko
2020-09-24 8:09 ` Kent Gibson
2020-09-25 10:06 ` Andy Shevchenko
2020-09-26 9:16 ` Kent Gibson
2020-09-27 9:00 ` Andy Shevchenko
2020-09-27 12:39 ` Kent Gibson
2020-09-24 14:29 ` Bartosz Golaszewski
2020-09-22 2:31 ` [PATCH v9 08/20] gpiolib: cdev: support GPIO_V2_GET_LINEINFO_IOCTL and GPIO_V2_GET_LINEINFO_WATCH_IOCTL Kent Gibson
2020-09-23 15:41 ` Andy Shevchenko
2020-09-24 2:39 ` Kent Gibson
2020-09-24 8:39 ` Andy Shevchenko
2020-09-24 9:48 ` Kent Gibson
2020-09-25 10:12 ` Andy Shevchenko
2020-09-25 11:56 ` Kent Gibson
2020-09-25 14:43 ` Andy Shevchenko
2020-09-25 5:32 ` Kent Gibson
2020-09-22 2:31 ` [PATCH v9 09/20] gpiolib: cdev: support edge detection for uAPI v2 Kent Gibson
2020-09-23 15:47 ` Andy Shevchenko
2020-09-24 3:07 ` Kent Gibson
2020-09-25 9:35 ` Andy Shevchenko
2020-09-25 12:26 ` Kent Gibson
2020-09-25 14:48 ` Andy Shevchenko
2020-09-22 2:31 ` [PATCH v9 10/20] gpiolib: cdev: support GPIO_V2_LINE_SET_CONFIG_IOCTL Kent Gibson
2020-09-23 16:14 ` Andy Shevchenko
2020-09-23 16:15 ` Andy Shevchenko
2020-09-24 3:24 ` Kent Gibson [this message]
2020-09-24 8:26 ` Andy Shevchenko
2020-09-24 9:26 ` Kent Gibson
2020-09-25 9:49 ` Andy Shevchenko
2020-09-22 2:31 ` [PATCH v9 11/20] gpiolib: cdev: support GPIO_V2_LINE_SET_VALUES_IOCTL Kent Gibson
2020-09-23 16:18 ` Andy Shevchenko
2020-09-24 7:32 ` Kent Gibson
2020-09-24 8:21 ` Andy Shevchenko
2020-09-24 9:08 ` Kent Gibson
2020-09-24 12:46 ` Kent Gibson
2020-09-25 9:57 ` Andy Shevchenko
2020-09-25 12:16 ` Kent Gibson
2020-09-22 2:31 ` [PATCH v9 12/20] gpiolib: cdev: support setting debounce Kent Gibson
2020-09-23 16:27 ` Andy Shevchenko
2020-09-24 7:48 ` Kent Gibson
2020-09-25 9:43 ` Andy Shevchenko
2020-09-22 2:31 ` [PATCH v9 13/20] gpio: uapi: document uAPI v1 as deprecated Kent Gibson
2020-09-22 7:49 ` Arnd Bergmann
2020-09-22 8:11 ` Andy Shevchenko
2020-09-22 9:05 ` Kent Gibson
2020-09-22 2:31 ` [PATCH v9 14/20] tools: gpio: port lsgpio to v2 uAPI Kent Gibson
2020-09-22 2:31 ` [PATCH v9 15/20] tools: gpio: port gpio-watch " Kent Gibson
2020-09-22 2:31 ` [PATCH v9 16/20] tools: gpio: rename nlines to num_lines Kent Gibson
2020-09-22 2:31 ` [PATCH v9 17/20] tools: gpio: port gpio-hammer to v2 uAPI Kent Gibson
2020-09-23 16:30 ` Andy Shevchenko
2020-09-24 7:50 ` Kent Gibson
2020-09-22 2:31 ` [PATCH v9 18/20] tools: gpio: port gpio-event-mon " Kent Gibson
2020-09-22 2:31 ` [PATCH v9 19/20] tools: gpio: add multi-line monitoring to gpio-event-mon Kent Gibson
2020-09-22 2:31 ` [PATCH v9 20/20] tools: gpio: add debounce support " Kent Gibson
2020-09-23 16:35 ` [PATCH v9 00/20] gpio: cdev: add uAPI v2 Andy Shevchenko
2020-09-24 8:00 ` Kent Gibson
2020-09-25 9:44 ` Andy Shevchenko
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=20200924032414.GC11575@sol \
--to=warthog618@gmail.com \
--cc=andy.shevchenko@gmail.com \
--cc=arnd@arndb.de \
--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).