linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andy Shevchenko <andy.shevchenko@gmail.com>
To: Alexander Dahl <ada@thorsis.com>, Kent Gibson <warthog618@gmail.com>
Cc: "linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>,
	Linus Walleij <linus.walleij@linaro.org>
Subject: Re: setting gpio-line-names in dts for sama5d2 SoC
Date: Thu, 18 Mar 2021 14:40:44 +0200	[thread overview]
Message-ID: <CAHp75Vftrq66SweYKYprWBoi9X8csxe9ROaMorRFUjGSD8gNSQ@mail.gmail.com> (raw)
In-Reply-To: <854891727.11376.1616061014891@seven.thorsis.com>

+Cc: Kent (sorry, forgot to include you earlier)

On Thu, Mar 18, 2021 at 11:50 AM Alexander Dahl <ada@thorsis.com> wrote:
> > Andy Shevchenko <andy.shevchenko@gmail.com> hat am 17.03.2021 13:33 geschrieben:
> > On Wed, Mar 17, 2021 at 1:22 AM Andy Shevchenko
> > <andy.shevchenko@gmail.com> wrote:
> > > On Tuesday, March 16, 2021, Alexander Dahl <ada@thorsis.com> wrote:

...

> > >> for a Microchip SAMA5D2 SoC based device I try to set gpio-line-names in .dts file like this:
> > >>
> > >> 257 &pioA {
> > >> 258         gpio-line-names = "",                   /* PA0  */
> > >> 259                           "",                   /* PA1  */
> > >> 260                           "",                   /* PA2  */
> > >> 261                           "FOO",                /* PA3  */
> > >> 262                           "BAR",                /* PA4  */
> > >> 263                           "",                   /* PA5  */
> > >>
> > >> … and so on for all 4 * 32 GPIO Pins. However when calling `gpioinfo` in userspace, I always get this:
> > >>
> > >> $ gpioinfo
> > >> gpiochip0 - 128 lines:
> > >>         line   0:        "PA0"       unused   input  active-high
> > >>         line   1:        "PA1"       unused   input  active-high
> > >>         line   2:        "PA2"       unused   input  active-high
> > >>         line   3:        "PA3"       unused   input  active-high
> > >>         line   4:        "PA4"       unused   input  active-high
> > >>         line   5:        "PA5"       unused   input  active-high
> > >>
> > >> … and so on. Those "PA0" line names are set by the pinctrl driver in drivers/pinctrl/pinctrl-at91-pio4.c before calling gpiochip_add_data() and from reading the code in drivers/gpio/gpiolib.c I suspect devprop_gpiochip_set_names() is never called then, so those names in .dts are simply ignored.
> > >>
> > >> Those default names from the at91 pio4 pinctrl driver are certainly correct speaking of pin names, but from a userspace point of view it would be better if I could override those from dts, so an application using libgpiod could look for a name like e.g. "VALVE7_EN" without caring to which pin that's actually connected. Can I override those with a currently present kernel?
>
> I don't think I can override with a recent kernel.
>
> >>> Or is it a problem in either the at91 pio4 driver or the gpiolib core? Or is that no real usecase and should I do it differently?
>
> If I disable the name assignment in the pinctrl-at91-pio4 driver, I get the line names from the dts. I used the following diff:

...

> Now gpioinfo shows what I set in dts, more or less similar to this:
>
> gpiochip0 - 128 lines:
>         line   0:      unnamed       unused   input  active-high
>         line   1:      unnamed       unused   input  active-high
>         line   2:      unnamed       unused   input  active-high
>         line   3:        "FOO"       unused   input  active-high
>         line   4:        "BAR"       unused   input  active-high
>         line   5:      unnamed       unused   input  active-high
>
> > > I would like to know the consequences if allow this, but to me it sounds like a bug in the gpiolib.c.
>
> At least the documentation recommends to not use pin names: https://www.kernel.org/doc/Documentation/devicetree/bindings/gpio/gpio.txt
>
> If anyone has an idea how to fix this, let me know. I can try to make a patch then. Currently however, I'm not familiar enough with the gpio subsystem to just start that.

You may look into the commit
7cba1a4d5e16 ("gpiolib: generalize devprop_gpiochip_set_names() for
device properties")
which unifies the logic, but at the same time removed one comment:

-       /* If the chip defines names itself, these take precedence */

So, logic was that for a long time. And unfortunately I don't see how
we may change this without breakage. This backs us to the discussion
if the name of the line is ABI or not.

-- 
With Best Regards,
Andy Shevchenko

  reply	other threads:[~2021-03-18 12:41 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-16 13:07 setting gpio-line-names in dts for sama5d2 SoC Alexander Dahl
     [not found] ` <CAHp75Vf05NN0dXUrMSOXBRuYRnQRHO_92itZ3ndOyX1oERWt=g@mail.gmail.com>
2021-03-17 12:33   ` Andy Shevchenko
2021-03-18  9:50     ` Alexander Dahl
2021-03-18 12:40       ` Andy Shevchenko [this message]
2021-03-18 13:56         ` Alexander Dahl
2021-03-18 14:59           ` Andy Shevchenko
2021-03-20 11:20             ` Linus Walleij

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=CAHp75Vftrq66SweYKYprWBoi9X8csxe9ROaMorRFUjGSD8gNSQ@mail.gmail.com \
    --to=andy.shevchenko@gmail.com \
    --cc=ada@thorsis.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=linus.walleij@linaro.org \
    --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).