From: Markus Pargmann <mpa@pengutronix.de>
To: linux-arm-kernel@lists.infradead.org
Cc: Rob Herring <robh+dt@kernel.org>,
Linus Walleij <linus.walleij@linaro.org>,
Mark Rutland <mark.rutland@arm.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
Krzysztof Kozlowski <k.kozlowski@samsung.com>,
linux-samsung-soc <linux-samsung-soc@vger.kernel.org>,
Pawel Moll <pawel.moll@arm.com>,
Martyn Welch <martyn.welch@collabora.co.uk>,
Arnd Bergmann <arnd@arndb.de>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Olof Johansson <olof@lixom.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Johan Hovold <johan@kernel.org>, Kukjin Kim <kgene@kernel.org>,
Alexandre Courbot <acourbot@nvidia.com>,
Kumar Gala <galak@codeaurora.org>,
Michael Welling <mwelling@ieee.org>,
Russell King <linux@arm.linux.org.uk>
Subject: Re: [PATCH 1/3] Device tree binding documentation for gpio-switch
Date: Tue, 15 Dec 2015 10:09:38 +0100 [thread overview]
Message-ID: <1488914.9p6SgUg6XA@adelgunde> (raw)
In-Reply-To: <CAL_JsqJXX71Bwbm21H3QAJxYDO60kyHgKVzXxxrH9ze6ZWYtXw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 6716 bytes --]
Hi,
On Monday 14 December 2015 09:45:48 Rob Herring wrote:
> On Mon, Dec 14, 2015 at 8:28 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
> > On Fri, Dec 11, 2015 at 3:06 PM, Rob Herring <robh+dt@kernel.org> wrote:
> >> On Fri, Dec 11, 2015 at 6:39 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
> >>> On Fri, Dec 4, 2015 at 6:31 PM, Martyn Welch
> >>> <martyn.welch@collabora.co.uk> wrote:
>
> [...]
>
> >>> Markus Pargmann also did a series that add initial values to
> >>> hogs, which is the inverse usecase of this, where you want to
> >>> *output* something by default, then maybe also make it available
> >>> to userspace.
> >>>
> >>> So what we need to see here is a patch series that does all of these
> >>> things:
> >>>
> >>> - Name lines
> >>>
> >>> - Sets them to initial values
> >>>
> >>> - Mark them as read-only
> >>>
> >>> - Mark them as "not used by the operating system" so that they
> >>> can be default-exported to userspace.
> >>
> >> No! This should not be a DT property.
> >>
> >> Whether I want to control a GPIO in the kernel or userspace is not
> >> known and can change over time. It could simply depend on kernel
> >> config. There is also the case that a GPIO has no connection or kernel
> >> driver until some time later when a DT overlay for an expansion board
> >> is applied.
> >
> > That's correct. So from a DT point of view, what really matters is
> > to give things a name, and the hogs and initvals syntax already
> > has a structure for this that is in use
> > (from Documentation/devicetree/bindings/gpio/gpio.txt):
> >
> > qe_pio_a: gpio-controller@1400 {
> > compatible = "fsl,qe-pario-bank-a", "fsl,qe-pario-bank";
> > reg = <0x1400 0x18>;
> > gpio-controller;
> > #gpio-cells = <2>;
> >
> > line_b {
> > gpio-hog;
> > gpios = <6 0>;
> > output-low;
> > line-name = "foo-bar-gpio";
> > };
> > };
> >
> > Markus use this also for initial values. That could easily be used in
> > a budget version like this:
> >
> > line_b {
> > /* Just naming */
> > gpios = <6 0>;
> > line-name = "foo-bar-gpio";
> > };
> >
> > That could grow kind of big though. Or maybe not? How many
> > GPIO lines are actually properly named in a typical system?
>
> We should limit it to GPIOs with no connection to another node. For
> example, I don't want to see a SD card detect in the list as that
> should be in the SD host node. However, that is hard to enforce and
> can change over time. Removing it would break userspace potentially.
> Of course if the kernel starts own a signal that userspace used, then
> that potentially breaks userspace regardless of the DT changing. OTOH,
> using GPIOs in userspace is kind of use at your own risk.
I see this a bit differently. I would really like to see the each GPIO having
two different names:
- GPIO label: This is the name of the GPIO line in the schematic for example
- GPIO use (this is the current semantic of the GPIO name): The use of a GPIO,
e.g. 'sd-card-detect', 'LED', ...
I think it would be good to describe all GPIO labels in gpiochip subnodes as
gpio-hogging introduced it. This would offer a use-independent naming. The use
of the function could be defined in the device node that is using this gpio.
As an example perhaps something like this:
&gpiochip {
some_interrupt {
gpios = <4 0>;
line-name = "some_interrupt_line";
};
line_b {
gpios = <6 0>;
line-name = "line-b";
};
};
randomswitch {
compatible = "gpio-switch";
gpios = <&gpiochip 4 0>;
use = "action-trigger";
read-only;
};
Also this does seem kind of inconsistent with gpio-hogging and the proposed
gpio-initval. gpio-hogging is defined in subnodes of the gpio chip while
gpio-switches are not. As "gpio-switch" is not really any kind of device it
would perhaps make sense to keep this consistent with gpio-hogging as well and
define it in the same subnodes?
I would be happy about any consistent way.
>
> The only real differences between this and Martyn's proposal are the
> location of the nodes and having a compatible string. A compatible
> string may be good to have. It indicates type of signal, but not
> specific use. Similar to how gpio-key compatible defines the function,
> but not what key code, or gpio-led does not say what color LED. A
> compatible here could cover switches, mode/id/revision strapping
> signals, jumpers, presence detect, etc.
>
> > The problem is that naming is usually imposed by consumers (they
> > are the ones who know how the line is used).
> >
> > And then I do not mean naming it after the pin on the capsule
> > where it comes out as per the datasheet, but
> > naming it after the actual use.
>
> Right. We need a way to query "I need the GPIO that does X" which
> works across boards.
>
> > Naming it after the hardware specs is something the operating
> > system can do, in Linux' case by the array char *names; inside the
> > struct gpio_chip and should not be part of the bindings IMO.
>
> Agreed. That just came up with STM32 gpio bindings[1].
>
> > I would rather imagine this is something used in a top-level board
> > file naming it: "header-2-22" for the 22nd pin on some second header
> > on my BeagleBone Black or something like that. And those may not
> > be so vast in numbers so they could be named using this pattern.
>
> Exactly. This is one of the cases I care about. However, this is not
> really a function, but it is SOC independent at least.
>
> We also have to consider how to handle add-on boards. We probably need
> a connector node which can remap connector signals to host signals in
> order to have overlays independent of the host board DT. For GPIOs
> this is probably a gpio-map property similar to interrupt-map. The
> complicated part will be connectors that require pinmux setup of the
> host.
Also what about hotplugging gpio-chips? Is there any mechanism to let the
'gpio-switch' know that the GPIO is not there anymore?
Best Regards,
Markus
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2015-12-15 9:09 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-04 17:31 Add support for monitoring gpio switches Martyn Welch
2015-12-04 17:31 ` [PATCH 1/3] Device tree binding documentation for gpio-switch Martyn Welch
2015-12-07 17:37 ` Rob Herring
2015-12-07 21:10 ` Martyn Welch
2015-12-11 12:39 ` Linus Walleij
2015-12-11 14:06 ` Rob Herring
2015-12-14 14:28 ` Linus Walleij
[not found] ` <CACRpkdYvU6YG5yRCLsyS7sq816t3shWw51OTR2-fkp-FqSeESg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-14 15:45 ` Rob Herring
2015-12-15 9:09 ` Markus Pargmann [this message]
2016-03-02 16:03 ` Rob Herring
[not found] ` <CAL_JsqLX-F=-k83_-5-QL2QZpAArQqOHjE+19c1wvNKWayYfMw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-03-07 8:26 ` Markus Pargmann
2015-12-04 17:31 ` [PATCH 2/3] Add support for monitoring gpio switches Martyn Welch
2015-12-04 18:14 ` kbuild test robot
2015-12-04 18:14 ` [PATCH] fix noderef.cocci warnings kbuild test robot
2015-12-04 18:57 ` [PATCH 2/3] Add support for monitoring gpio switches Greg Kroah-Hartman
2015-12-05 10:42 ` Martyn Welch
2015-12-11 9:08 ` Linus Walleij
2015-12-16 10:11 ` Martyn Welch
2015-12-22 9:25 ` Linus Walleij
2015-12-04 17:31 ` [PATCH 3/3] ARM: dts: Addition of binding for gpio switches on peach-pi Martyn Welch
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=1488914.9p6SgUg6XA@adelgunde \
--to=mpa@pengutronix.de \
--cc=acourbot@nvidia.com \
--cc=arnd@arndb.de \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=gregkh@linuxfoundation.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=johan@kernel.org \
--cc=k.kozlowski@samsung.com \
--cc=kgene@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=mark.rutland@arm.com \
--cc=martyn.welch@collabora.co.uk \
--cc=mwelling@ieee.org \
--cc=olof@lixom.net \
--cc=pawel.moll@arm.com \
--cc=robh+dt@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).