From: Stephen Warren <swarren@wwwdotorg.org>
To: Christian Ruppert <christian.ruppert@abilis.com>
Cc: Linus Walleij <linus.walleij@linaro.org>,
Patrice CHOTARD <patrice.chotard@st.com>,
linux-kernel@vger.kernel.org,
Grant Likely <grant.likely@secretlab.ca>,
Rob Herring <rob.herring@calxeda.com>,
Rob Landley <rob@landley.net>,
Sascha Leuenberger <sascha.leuenberger@abilis.com>,
Pierrick Hascoet <pierrick.hascoet@abilis.com>,
devicetree-discuss@lists.ozlabs.org, linux-doc@vger.kernel.org,
Alexandre Courbot <acourbot@nvidia.com>
Subject: Re: [PATCH 2/2] Make non-linear GPIO ranges accesible from gpiolib
Date: Thu, 13 Jun 2013 15:38:09 -0600 [thread overview]
Message-ID: <51BA3BC1.3090109@wwwdotorg.org> (raw)
In-Reply-To: <1371128132-18266-2-git-send-email-christian.ruppert@abilis.com>
On 06/13/2013 06:55 AM, Christian Ruppert wrote:
> This patch adds the infrastructure required to register non-linear gpio
> ranges through gpiolib and the standard GPIO device tree bindings.
That's not exactly true. The existing gpio-ranges property already
allows non-linear ranges to be represented quite easily; each entry in
the gpio-ranges list is <gpio-base> <pinctrl-base> <count>, so you can
piece together any mapping you want.
The potential advantage of this patch is that the pinctrl-side of the
mapping can be a group name rather than pin IDs, which might reduce the
size of the mapping list if you have an extremely sparse or non-linear
mapping /and/ parts of that mapping just happen to align with the pin
groups in the pin controller HW, since each entry in the gpio-ranges
property can be sparse/non-linear, rather than being a small linear
chunk of the mapping.
As an aside, for Tegra I solved this differently: In the pinctrl driver,
I simply defined the pin IDs to exactly match the GPIO IDs in order, so
the mapping is 100% linear. Of course, this only works if your pinctrl
HW documentation doesn't define any kind of numbering/ordering for your
pins, so you can pick any order you want for the pinctrl binding/driver.
This was true for Tegra20, since the HW only used groups for muxing.
Given more recent Tegra SoCs have moved to per-pin muxing, that might
not have been the best decision though, since now the HW registers at
least do have a defined ordering/ID for each pin. If only we'd started
with Tegra30 support not Tegra20:-)
> diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt
> +In addition, named groups of pins can be mapped to pin groups of a given
> +pin controller:
> +
> + gpio_pio_g: gpio-controller@1480 {
> + #gpio-cells = <2>;
> + compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
> + reg = <0x1480 0x18>;
> + gpio-controller;
> + gpio-pingrps = <&pinctrl1 0>, <&pinctrl2 3>;
> + gpio-pingrp-names = "pctl1_gpio_g", "pctl2_gpio_g";
A few thoughts here:
"gpio-pingrps" doesn't sound very similar to the existing "gpio-ranges".
Can we make their equivalent purpose more obvious by renaming this
"gpio-group-ranges"?
I'm not actually even sure we need a new property for this, except for
the string group names. We could fold the new gpio-pingrps into the
existing gpio-ranges, whose entries have the format:
<gpio-base> <pinctrl-base> <count>
... by saying that if count==0, it means to use a group name instead of
a pinctrl-base value. We can insist that pinctrl-base==0 in this case
too. If we go made, count==0 could mean "special" and pinctrl-base==0
could mean "by pinctrl group name", and other values of pinctrl-base
could be added later to mean other things!
gpio-ranges =
<&pinctrl1 0 20 10>, /* Existing numeric style */
<&pinctrl2 10 0 0>, /* Count==0, so group name style */
<&pinctrl1 0 20 10>, /* Existing numeric style */
gpio-ranges-group-names =
"", /* No group name required for entry 0 */
"gr1", /* Group name for entry 1 */
""; /* No group name required for entry 2 */
Does this seem better?
> + gpio-pingrp-names = "pctl1_gpio_g", "pctl2_gpio_g";
I'm slightly worried that those example group names appear to be
globally scoped. I would hope the group names are interpreted
relative-to or within the pin controller that they are associated with.
I wouldn't expect the pin controllers to include their own name in the
names of the pin groups they expose. In other words, I'd expect that
example to be more like:
> + gpio-pingrp-names = "foo", "bar";
...
> +The pinctrl node must have a "#gpio-pingrp-cells" property set to one to
> +define the number of arguments to pass with the phandle.
This shouldn't be required.
Such properties are useful when one node references a second node, and
that second node dictates the format of the reference. However, that is
not the case here; the definition of gpio-pingrp-names itself always
dictates its format entirely, and hence the value #gpio-pingrp-cells
must always be 1, and hence there is no point requiring any referenced
node to include this property.
I realize this issue was inherited from the existing gpio-ranges
documentation/implementation, but I've posted patches to solve that,
triggered by thinking about this patch:
https://lists.ozlabs.org/pipermail/devicetree-discuss/2013-June/035462.html
(the rest of the series will make it more clear, i.e. the new of_ API)
> +Both methods can be combined in the same GPIO controller, e.g.
In the proposal I have above, combining the mechanisms is slightly more
cohesive, I think.
> + gpio_pio_i: gpio-controller@14B0 {
> + #gpio-cells = <2>;
> + compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
> + reg = <0x1480 0x18>;
> + gpio-controller;
> + gpio-ranges = <&pinctrl1 0 20 10>;
> + gpio-pingrps = <&pinctrl2 10>;
> + gpio-pingrp-names = "gpio_g_pins";
> + };
next prev parent reply other threads:[~2013-06-13 21:38 UTC|newest]
Thread overview: 147+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-10 15:45 [PATCH 1/2] pinmux: Add TB10x pinmux driver Christian Ruppert
2013-04-10 15:45 ` [PATCH 2/2] GPIO: Add TB10x GPIO driver Christian Ruppert
2013-04-17 15:13 ` Linus Walleij
2013-04-17 18:37 ` Stephen Warren
2013-04-17 14:48 ` [PATCH 1/2] pinmux: Add TB10x pinmux driver Linus Walleij
2013-04-17 18:32 ` Stephen Warren
2013-04-18 9:03 ` Christian Ruppert
2013-04-26 7:47 ` Linus Walleij
2013-04-29 16:17 ` Christian Ruppert
[not found] ` <20130429161725.GB30136-7oYq3qWSd+k@public.gmane.org>
2013-05-02 18:49 ` Stephen Warren
2013-05-02 18:49 ` Stephen Warren
2013-05-03 18:03 ` Linus Walleij
2013-05-08 16:41 ` Christian Ruppert
2013-05-08 20:01 ` Stephen Warren
2013-05-10 8:25 ` Christian Ruppert
2013-05-14 12:29 ` Linus Walleij
2013-05-15 9:41 ` Christian Ruppert
2013-05-20 8:03 ` Linus Walleij
2013-05-22 9:49 ` Christian Ruppert
2013-06-12 16:44 ` [RFC] Allow GPIO ranges based on pinctl pin groups Christian Ruppert
[not found] ` <1371055449-15828-1-git-send-email-christian.ruppert-ux6zf3SgZrrQT0dZR+AlfA@public.gmane.org>
2013-06-13 9:00 ` Linus Walleij
2013-06-13 9:00 ` Linus Walleij
2013-06-13 12:55 ` [PATCH 1/2] Add pin list based GPIO ranges Christian Ruppert
[not found] ` <1371128132-18266-1-git-send-email-christian.ruppert-ux6zf3SgZrrQT0dZR+AlfA@public.gmane.org>
2013-06-13 18:30 ` Linus Walleij
2013-06-13 18:30 ` Linus Walleij
2013-06-14 7:17 ` Patrice CHOTARD
2013-06-14 8:24 ` [PATCH] Fix comment on pinctrl_gpio_range.pin_base Christian Ruppert
2013-06-16 10:19 ` Linus Walleij
2013-06-13 12:55 ` [PATCH 2/2] Make non-linear GPIO ranges accesible from gpiolib Christian Ruppert
2013-06-13 18:36 ` Linus Walleij
2013-06-13 21:38 ` Stephen Warren [this message]
2013-06-14 9:12 ` Christian Ruppert
2013-06-19 18:10 ` Stephen Warren
2013-06-19 18:27 ` Stephen Warren
2013-06-20 11:57 ` Christian Ruppert
2013-06-21 21:17 ` Stephen Warren
2013-06-25 11:59 ` Christian Ruppert
2013-06-25 15:59 ` Stephen Warren
2013-06-25 14:27 ` Linus Walleij
2013-06-25 15:19 ` Stephen Warren
2013-06-25 14:32 ` Linus Walleij
2013-06-25 15:22 ` Stephen Warren
2013-06-25 14:56 ` Linus Walleij
2013-06-25 15:31 ` Stephen Warren
2013-06-25 15:47 ` Linus Walleij
2013-06-25 15:28 ` Linus Walleij
2013-06-25 15:39 ` Stephen Warren
2013-06-25 15:53 ` Linus Walleij
2013-06-17 16:03 ` Christian Ruppert
2013-06-17 16:04 ` [PATCH 1/4] " Christian Ruppert
2013-06-18 8:09 ` Linus Walleij
2013-06-18 9:25 ` Christian Ruppert
2013-06-18 9:29 ` Christian Ruppert
2013-06-19 12:03 ` Linus Walleij
2013-06-19 18:15 ` Stephen Warren
2013-06-26 11:42 ` Christian Ruppert
2013-06-26 17:33 ` Stephen Warren
2013-06-19 22:27 ` Stephen Warren
2013-06-26 11:46 ` Christian Ruppert
2013-06-26 17:34 ` Stephen Warren
2013-06-18 9:29 ` [PATCH 2/4] pinmux: Add TB10x pinmux driver Christian Ruppert
2013-06-19 22:35 ` Stephen Warren
2013-06-26 11:50 ` Christian Ruppert
2013-06-26 17:40 ` Stephen Warren
2013-07-05 9:49 ` Christian Ruppert
2013-07-05 18:40 ` Stephen Warren
2013-07-08 13:02 ` Christian Ruppert
2013-07-10 19:27 ` Stephen Warren
2013-07-16 8:47 ` Christian Ruppert
2013-07-16 16:04 ` Stephen Warren
2013-07-18 16:07 ` Christian Ruppert
2013-07-18 19:54 ` Stephen Warren
2013-07-26 9:42 ` Christian Ruppert
2013-07-26 16:05 ` Stephen Warren
2013-07-29 22:35 ` Linus Walleij
2013-08-05 11:51 ` Christian Ruppert
2013-08-05 11:51 ` Christian Ruppert
2013-08-14 16:53 ` Linus Walleij
2013-08-21 15:57 ` Christian Ruppert
2013-08-22 20:10 ` Stephen Warren
2013-08-28 14:47 ` Christian Ruppert
2013-10-08 12:21 ` Christian Ruppert
2013-10-08 12:25 ` [PATCH 01/03] Make non-linear GPIO ranges accesible from gpiolib Christian Ruppert
2013-10-09 11:58 ` Linus Walleij
2013-10-09 13:28 ` Christian Ruppert
2013-10-09 14:01 ` Linus Walleij
2013-10-10 20:49 ` Stephen Warren
2013-10-11 7:53 ` Linus Walleij
2013-10-15 13:36 ` Christian Ruppert
2013-10-15 13:37 ` [PATCH V2] " Christian Ruppert
2013-10-16 11:19 ` Linus Walleij
2013-10-16 12:56 ` [PATCH] Add a short note on pinctrl_get_group_pins to pinctrl.txt Christian Ruppert
2013-10-16 13:36 ` Linus Walleij
2013-10-10 20:47 ` [PATCH 01/03] Make non-linear GPIO ranges accesible from gpiolib Stephen Warren
2013-10-08 12:25 ` [PATCH 02/03] pinmux: Add TB10x pinmux driver Christian Ruppert
2013-10-09 12:30 ` Linus Walleij
[not found] ` <CACRpkdZdELan7OyMjt4KOi=q-v1xkSaNZNyZ7AnOBY1R=SoW3w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-10-15 13:39 ` [PATCH V2] " Christian Ruppert
2013-10-15 13:39 ` Christian Ruppert
2013-10-16 11:25 ` Linus Walleij
2013-10-08 12:25 ` [PATCH 03/03] GPIO: Add TB10x GPIO driver Christian Ruppert
2013-10-09 12:19 ` Linus Walleij
2013-10-15 13:45 ` Christian Ruppert
2013-10-16 11:29 ` Linus Walleij
2013-10-16 12:58 ` Christian Ruppert
2013-10-24 16:23 ` Christian Ruppert
2013-10-25 21:44 ` Linus Walleij
2013-10-25 3:27 ` Kumar Gala
2013-08-28 18:49 ` [PATCH 2/4] pinmux: Add TB10x pinmux driver Linus Walleij
2013-08-29 7:35 ` Christian Ruppert
2013-08-29 8:24 ` Linus Walleij
2013-08-30 8:19 ` Christian Ruppert
2013-06-18 9:29 ` [PATCH 3/4] GPIO: Add TB10x GPIO driver Christian Ruppert
2013-06-19 22:37 ` Stephen Warren
2013-06-18 9:29 ` [PATCH 4/4] Add Abilis Systems Sarl to device tree vendor prefixes Christian Ruppert
2013-06-17 16:04 ` [PATCH 2/4] pinmux: Add TB10x pinmux driver Christian Ruppert
2013-06-17 16:04 ` [PATCH 3/4] GPIO: Add TB10x GPIO driver Christian Ruppert
2013-06-17 16:04 ` [PATCH 4/4] Add Abilis Systems Sarl to device tree vendor prefixes Christian Ruppert
2013-05-16 0:12 ` [PATCH 1/2] pinmux: Add TB10x pinmux driver Stephen Warren
2013-05-20 8:10 ` Linus Walleij
2013-05-22 14:28 ` Christian Ruppert
2013-05-23 7:43 ` Haojian Zhuang
2013-05-24 11:50 ` Christian Ruppert
2013-05-26 15:49 ` Haojian Zhuang
2013-06-03 12:30 ` Christian Ruppert
[not found] ` <20130603123001.GD31808-7oYq3qWSd+k@public.gmane.org>
2013-06-05 1:44 ` Haojian Zhuang
2013-06-05 1:44 ` Haojian Zhuang
2013-06-06 14:11 ` Christian Ruppert
2013-06-06 14:32 ` Haojian Zhuang
2013-06-06 15:30 ` Christian Ruppert
2013-06-07 0:00 ` Haojian Zhuang
2013-06-07 11:32 ` Christian Ruppert
[not found] ` <20130607113207.GE11875-7oYq3qWSd+k@public.gmane.org>
2013-06-07 14:57 ` Haojian Zhuang
2013-06-07 14:57 ` Haojian Zhuang
2013-06-07 19:18 ` Stephen Warren
2013-06-08 8:31 ` Haojian Zhuang
2013-06-09 2:47 ` Stephen Warren
2013-06-11 7:27 ` Christian Ruppert
2013-06-16 11:11 ` Linus Walleij
2013-05-29 12:21 ` Linus Walleij
2013-06-03 9:42 ` Christian Ruppert
[not found] ` <20130603094204.GC31808-7oYq3qWSd+k@public.gmane.org>
2013-06-07 11:36 ` Linus Walleij
2013-06-07 11:36 ` Linus Walleij
2013-06-07 13:34 ` Christian Ruppert
2013-05-24 9:20 ` Linus Walleij
2013-05-24 12:03 ` Christian Ruppert
[not found] ` <20130418090310.GA17636-7oYq3qWSd+k@public.gmane.org>
2013-05-02 18:52 ` Stephen Warren
2013-05-02 18:52 ` Stephen Warren
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=51BA3BC1.3090109@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=acourbot@nvidia.com \
--cc=christian.ruppert@abilis.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=grant.likely@secretlab.ca \
--cc=linus.walleij@linaro.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=patrice.chotard@st.com \
--cc=pierrick.hascoet@abilis.com \
--cc=rob.herring@calxeda.com \
--cc=rob@landley.net \
--cc=sascha.leuenberger@abilis.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.