From: Matti Vaittinen <mazziesaccount@gmail.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>,
Bartosz Golaszewski <brgl@bgdev.pl>,
linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] gpio: Document the 'valid_mask' being internal
Date: Wed, 26 Feb 2025 13:42:55 +0200 [thread overview]
Message-ID: <8979f8d4-8768-40b0-a3a7-6638ddb626cd@gmail.com> (raw)
In-Reply-To: <CACRpkdZtWLGAn0K+xENY+RF6CsWPn0m7R--W9EaH+xTKazALFg@mail.gmail.com>
On 26/02/2025 12:18, Linus Walleij wrote:
> On Wed, Feb 26, 2025 at 7:09 AM Matti Vaittinen
> <mazziesaccount@gmail.com> wrote:
>> On 25/02/2025 23:36, Linus Walleij wrote:
>>> we can maybe move it to struct gpio_device in
>>> drivers/gpio/gpiolib.h?
>>>
>>> This struct exist for every gpio_chip but is entirely gpiolib-internal.
>>>
>>> Then it becomes impossible to do it wrong...
>>
>> True. I can try seeing what it'd require to do that. But ... If there
>> are any drivers out there altering the valid_mask _after_ registering
>> the driver to the gpio-core ... Then it may be a can of worms and I may
>> just keep the lid closed :)
>
> That's easy to check with some git grep valid_mask
True. I just tried. It seems mostly Ok, but...
For example the drivers/gpio/gpio-rcar.c uses the contents of the
'valid_mask' in it's set_multiple callback to disallow setting the value
of masked GPIOs.
For uneducated person like me, it feels this check should be done and
enforced by the gpiolib and not left for untrustworthy driver writers
like me! (I am working on BD79124 driver and it didn't occur to me I
should check for the valid_mask in driver :) If gpiolib may call the
driver's set_multiple() with masked lines - then the bd79124 driver just
had one unknown bug less :rolleyes:) )
I tried looking at the gpiolib to see how this works... It seems to me:
gpio_chip_set_multiple() does not seem to check for valid_mask. This is
called from the gpiod_set_array_value_complex() - which gave me a
headache as it is, as name says, complex. Well, I didn't spot valid_mask
check but I may have missed a thing or 2...
If someone remembers straight away how this is supposed to work - I
appreciate any guidance. If not, then I try doing some testing when I
wire the BD79124 to my board for the next version of the BD79124 series.
> and intuition. I think all calls actually changing the valid_mask
> are in the init_valid_mask() callback as they should be.
>
>> Furthermore, I was not 100% sure the valid_mask was not intended to be
>> used directly by the drivers. I hoped you and Bart have an opinion on that.
>
> Oh it was. First we just had .valid_mask and then it was
> manipulated directly.
I still can't decide if hiding the valid_mask is the right thing to do,
or if we should just respect it if it is set by driver (as it was
originally intended).
> Then we introduced init_valid_mask() and all users switched over
> to using that.
>
> So evolution, not intelligent design...
Like anything we actually get done ^_^;
Yours,
-- Matti
next prev parent reply other threads:[~2025-02-26 11:42 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-25 7:00 [PATCH] gpio: Document the 'valid_mask' being internal Matti Vaittinen
2025-02-25 21:36 ` Linus Walleij
2025-02-26 6:09 ` Matti Vaittinen
2025-02-26 10:18 ` Linus Walleij
2025-02-26 11:42 ` Matti Vaittinen [this message]
2025-02-27 8:24 ` Matti Vaittinen
2025-02-28 8:23 ` Linus Walleij
2025-02-28 8:31 ` Matti Vaittinen
2025-02-28 9:28 ` Matti Vaittinen
2025-02-28 9:42 ` Matti Vaittinen
2025-02-28 10:00 ` Matti Vaittinen
2025-02-28 8:06 ` Linus Walleij
2025-02-28 9:32 ` Geert Uytterhoeven
2025-02-28 10:28 ` Biju Das
2025-02-28 11:02 ` Matti Vaittinen
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=8979f8d4-8768-40b0-a3a7-6638ddb626cd@gmail.com \
--to=mazziesaccount@gmail.com \
--cc=brgl@bgdev.pl \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matti.vaittinen@fi.rohmeurope.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