From: Stephen Warren <swarren@nvidia.com>
To: Simon Glass <sjg@chromium.org>
Cc: U-Boot Mailing List <u-boot@lists.denx.de>,
Devicetree Discuss <devicetree-discuss@lists.ozlabs.org>,
Tom Warren <TWarren@nvidia.com>,
Jerry Van Baren <vanbaren@cideas.com>
Subject: Re: [PATCH v4 03/20] fdt: Add basic support for decoding GPIO definitions
Date: Wed, 18 Jan 2012 15:17:34 -0700 [thread overview]
Message-ID: <4F1744FE.4090409@nvidia.com> (raw)
In-Reply-To: <1326342789-5781-4-git-send-email-sjg@chromium.org>
On 01/11/2012 09:32 PM, Simon Glass wrote:
> This adds some support into fdtdec for reading GPIO definitions from
> the fdt. We permit up to FDT_GPIO_MAX GPIOs in the system. Each GPIO
> is of the form:
>
> gpio-function-name = <phandle gpio_num flags>;
That's not true in general.
The binding definition for the GPIO controller that provides the GPIO in
question defines the number and meaning of all cells after the phandle
cell. In practice, this usually does mean two cells with the meanings
above, but there's no need for this to be true in general.
For reference, the correct way to parse such a property is:
* Read the first cell.
* Find the node referenced by the phandle.
* Ensure property gpio-controller is present in the controller node.
* Read property #gpio-cells from the controller node.
* Extract #gpio-cells from the original property.
* Keep processing more cells from the original property; there may be
multiple GPIOs listed.
Still, I'll review this patch under the assumption that it's understood
that its applicability is limited to the subset of controllers that use
the same GPIO specifier as Tegra, i.e. that which you documented.
> where:
>
> phandle is a pointer to the GPIO node
> gpio_num is the number of the GPIO (0 to 223)
> flags is a flag, as follows:
>
> bit meaning
> 0 0=polarity normal, 1=active low (inverted)
For reference, according to the binding documentation in the Linux
kernel, Samsung Exynos4 doesn't use this format, and while all other
chips do have a flags cell, about 50% of the controllers indicate the
cell is unused.
> An example is:
>
> gpio-enable-propounder = <&gpio 43 0>;
It appears to be idiomatic to name GPIO-related properties as plural
even when only one GPIO is expected, so e.g. "wp-gpios" for an SDHCI
controller's write-proptect GPIO, rather than simply "wp-gpio.
...
> diff --git a/include/fdtdec.h b/include/fdtdec.h
...
> +/* GPIOs are numbered from 0 */
> +enum {
> + FDT_GPIO_NONE = -1U, /* an invalid GPIO used to end our list */
Is this due to the way U-Boot works right now, or something defined by
this patch? It's been pointed out that the kernel's choice to use -1 as
"invalid GPIO" rather than 0 was a mistake, since that prevents GPIO
fields being easily added to platform data structures, since you then
have to go and initialize every new instance to -1, rather than relying
on BSS initializing it to 0. I assume this is just the way U-Boot works,
so solving this is outside the scope of this patch.
Ignoring all the above, the code looks correct to perform as documented.
--
nvpublic
next prev parent reply other threads:[~2012-01-18 22:17 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1326342789-5781-1-git-send-email-sjg@chromium.org>
2012-01-12 4:32 ` [PATCH v4 02/20] fdt: Add functions to access phandles, arrays and bools Simon Glass
[not found] ` <1326342789-5781-3-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2012-01-18 22:01 ` Stephen Warren
2012-01-23 2:03 ` [U-Boot] " Jerry Van Baren
2012-01-12 4:32 ` [PATCH v4 05/20] arm: fdt: Add skeleton device tree file from kernel Simon Glass
2012-01-12 4:32 ` [PATCH v4 10/20] tegra: fdt: Add additional USB binding Simon Glass
[not found] ` <1326342789-5781-11-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2012-01-18 22:48 ` Stephen Warren
[not found] ` <4F174C3E.2090403-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-19 5:35 ` Olof Johansson
[not found] ` <20120119053523.GB27447-O5ziIzlqnXUVNXGz7ipsyg@public.gmane.org>
2012-01-19 5:55 ` Simon Glass
[not found] ` <CAPnjgZ0JAyV8+0kLv=EcM-AhBxE-YSyG-Y7rYPS8PhOAOnq6dw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-19 6:41 ` Olof Johansson
[not found] ` <CAOesGMjCxryS+3yQZqCP3JYeHpCbUuNHM+rtDBoOQjF6rwLv5g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-19 6:59 ` Simon Glass
[not found] ` <CAPnjgZ10mwQJ7RubrO_VFdHF+39cHOjLPmQNbYBeERjTWJMU4Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-19 7:13 ` Olof Johansson
[not found] ` <CAOesGMhOe6enf9BFgpCbvEgtT3F-p5rEsxp8=PG57sxBaQvawQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-19 17:33 ` Stephen Warren
2012-01-19 23:55 ` Simon Glass
[not found] ` <1326342789-5781-1-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2012-01-12 4:32 ` [PATCH v4 01/20] fdt: Tidy up a few fdtdec problems Simon Glass
[not found] ` <1326342789-5781-2-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2012-01-18 21:58 ` Stephen Warren
2012-01-23 2:03 ` [U-Boot] " Jerry Van Baren
2012-01-12 4:32 ` [PATCH v4 03/20] fdt: Add basic support for decoding GPIO definitions Simon Glass
2012-01-18 22:17 ` Stephen Warren [this message]
2012-01-21 17:08 ` Simon Glass
[not found] ` <CAPnjgZ0TCNTZjR_Fc1+UvYxyjH-a-Bxtkz60OERR7YmC5tbuug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-23 18:18 ` Stephen Warren
[not found] ` <4F1DA490.6090903-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-24 23:11 ` Simon Glass
[not found] ` <CAPnjgZ0eNXhWYtkb+4-FswpByAE7NHXoLz-ngp7Af_P0+u4GiQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-24 23:14 ` Stephen Warren
[not found] ` <74CDBE0F657A3D45AFBB94109FB122FF178CB81F0D-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-01-24 23:17 ` Simon Glass
2012-01-12 4:32 ` [PATCH v4 04/20] arm: fdt: Ensure that an embedded fdt is word-aligned Simon Glass
2012-02-18 11:51 ` Albert ARIBAUD
2012-02-18 18:09 ` Simon Glass
2012-02-19 8:27 ` Albert ARIBAUD
2012-02-19 16:23 ` Simon Glass
2012-02-19 18:33 ` Albert ARIBAUD
2012-02-27 20:27 ` Simon Glass
2012-01-12 4:32 ` [PATCH v4 06/20] tegra: fdt: Add Tegra2x device tree file from kernel Simon Glass
[not found] ` <1326342789-5781-7-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2012-01-18 22:24 ` Stephen Warren
2012-01-19 23:51 ` Simon Glass
2012-01-20 0:06 ` Stephen Warren
2012-01-12 4:32 ` [PATCH v4 07/20] tegra: fdt: Add device tree file for Tegra2 Seaboard " Simon Glass
2012-01-18 22:28 ` Stephen Warren
2012-01-21 17:20 ` Simon Glass
2012-01-12 4:32 ` [PATCH v4 08/20] fdt: Add staging area for device tree binding documentation Simon Glass
[not found] ` <1326342789-5781-9-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2012-01-18 22:30 ` Stephen Warren
2012-01-19 23:52 ` Simon Glass
2012-01-12 4:32 ` [PATCH v4 09/20] fdt: Add tegra-usb bindings file from linux Simon Glass
2012-01-12 4:33 ` [PATCH v4 11/20] tegra: fdt: Add clock bindings Simon Glass
[not found] ` <1326342789-5781-12-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2012-01-19 0:16 ` [PATCH] ARM: tegra: Define Tegra20 CAR binding Stephen Warren
[not found] ` <1326932212-30346-1-git-send-email-swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-01-19 5:31 ` Olof Johansson
[not found] ` <20120119053143.GA27447-O5ziIzlqnXUVNXGz7ipsyg@public.gmane.org>
2012-01-19 17:17 ` Stephen Warren
[not found] ` <74CDBE0F657A3D45AFBB94109FB122FF1780DAB0CA-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-01-21 7:32 ` Olof Johansson
[not found] ` <CAOesGMh=i3EED-XhOpwGj8Vuma3xA0WehRL1iK1LSZfEuetP6Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-21 8:31 ` Mitch Bradley
2012-01-23 16:18 ` Stephen Warren
[not found] ` <74CDBE0F657A3D45AFBB94109FB122FF178CB81A90-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-01-23 17:45 ` Mitch Bradley
2012-01-23 18:16 ` Grant Likely
2012-01-22 18:03 ` Simon Glass
[not found] ` <CAPnjgZ2t9FnEubWmLyNMGGhr=jEmfb1qzK=SAzRopjbCbHKdrA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-23 16:29 ` Stephen Warren
2012-01-24 9:52 ` Peter De Schrijver
[not found] ` <20120124095241.GO10446-Rysk9IDjsxmJz7etNGeUX8VPkgjIgRvpAL8bYrjMMd8@public.gmane.org>
2012-01-24 22:08 ` Stephen Warren
[not found] ` <74CDBE0F657A3D45AFBB94109FB122FF178CB81EC4-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-01-24 22:32 ` Colin Cross
[not found] ` <CAMbhsRQYt7RoXTDDPxCgGG2UX5_T86saOyns_0f_Sz-p7-gMTw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-24 22:43 ` Stephen Warren
[not found] ` <74CDBE0F657A3D45AFBB94109FB122FF178CB81EEB-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-01-24 22:59 ` Colin Cross
[not found] ` <CAMbhsRScz4edCr4Cxa=QbBhuYW1M3GsbKhCbFuo5Zu9PRdNfSg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-25 9:50 ` Peter De Schrijver
2012-01-12 4:33 ` [PATCH v4 12/20] tegra: usb: fdt: Add additional device tree definitions for USB ports Simon Glass
[not found] ` <1326342789-5781-13-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2012-01-19 0:19 ` Stephen Warren
2012-01-19 23:53 ` Simon Glass
2012-01-12 4:33 ` [PATCH v4 13/20] tegra: usb: fdt: Add USB definitions for Tegra2 Seaboard Simon Glass
2012-01-12 4:33 ` [PATCH v4 15/20] fdt: Add function to return peripheral/clock ID Simon Glass
2012-01-12 4:33 ` [PATCH v4 20/20] tegra: fdt: Enable FDT support for Seaboard Simon Glass
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=4F1744FE.4090409@nvidia.com \
--to=swarren@nvidia.com \
--cc=TWarren@nvidia.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
--cc=vanbaren@cideas.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).