Re: [PATCH v3 12/15] pinctrl: allow to mark pin functions as requestable GPIOs
From: Bartosz Golaszewski
Date: Wed Jul 30 2025 - 08:54:17 EST
On Wed, Jul 30, 2025 at 2:50 PM Andy Shevchenko
<andy.shevchenko@xxxxxxxxx> wrote:
>
> On Wed, Jul 30, 2025 at 11:54 AM Bartosz Golaszewski <brgl@xxxxxxxx> wrote:
> >
> > On Thu, Jul 24, 2025 at 2:22 PM Andy Shevchenko
> > <andy.shevchenko@xxxxxxxxx> wrote:
> > >
> > > > struct pinfunction {
> > > > const char *name;
> > > > const char * const *groups;
> > > > size_t ngroups;
> > > > + unsigned long flags;
> > >
> > > Not sure we need this. If the function is GPIO, pin control already
> > > knows about this. The pin muxing has gpio request / release callbacks
> > > that change the state. Why do we need an additional flag(s)?
> > >
> >
> > I'm not following, how does the pin controller know that the function
> > is GPIO exactly, other than by the bit set in this field?
>
> AFAICS the gpio_owner != NULL means that. No need to have a duplicate
> of this information.
>
No, that's not at all what this series does... gpio_owner is the
consumer label of a pin used by the GPIOLIB framework. The flag I'm
introducing it telling the pinctrl core - before GPIOLIB is ever
involved - that *this pin can be requested as a GPIO by GPIOLIB*. It's
the other way around - without knowing this, for strict pinmuxers,
GPIOLIB would never be able to request this pin if it was muxed to a
function (even if the function is called "GPIO").
Bart