From: Stephen Warren <swarren@nvidia.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 04/17] fdt: Add basic support for decoding GPIO definitions
Date: Mon, 05 Dec 2011 15:22:04 -0700 [thread overview]
Message-ID: <4EDD440C.80002@nvidia.com> (raw)
In-Reply-To: <CAPnjgZ3ARCTXVN2MKhfrdCCmmb21zbYdSq8AuQFPdoA=xFr7Mg@mail.gmail.com>
On 12/05/2011 02:56 PM, Simon Glass wrote:
> Hi Stephen,
>
> On Mon, Dec 5, 2011 at 1:46 PM, Stephen Warren <swarren@nvidia.com> wrote:
>> On 12/02/2011 07:11 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>;
>>>
>>> where:
>>>
>>> phandle is a pointer to the GPIO node
>>> gpio_num is the number of the GPIO (0 to 223)
>>> flags is some flags, proposed as follows:
>>>
>>> bit meaning
>>> 0 0=input, 1=output
>>> 1 for output only: inital value of output
>>> 2 0=polarity normal, 1=active low (inverted)
>>
>> The meaning of the flags (and even whether there are any flags any if so
>> how many cells there are to contain them) is defined by the GPIO
>> controller's binding. It's not something that can be interpreted in
>> isolation by a generic DT parsing function. See for example #gpio-cells
>> in tegra20.dtsi's gpio node and kernel file
>> Documentation/devicetree/bindings/gpio/gpio_nvidia.txt.
>
> I see this in my version:
>
> Required properties:
> - compatible : "nvidia,tegra20-gpio"
> - #gpio-cells : Should be two. The first cell is the pin number and the
> second cell is used to specify optional parameters:
> - bit 0 specifies polarity (0 for normal, 1 for inverted)
> - gpio-controller : Marks the device node as a GPIO controller.
>
> so how do I go about adding the other two bits?
I don't think you would. Input vs. output and output value are set up by
APIs such as gpio_direction_input/output based on what the driver wants
to do with the GPIOs.
>>> +/* For now we allow 224 GPIOs. We can extend this later if required */
>>> +enum {
>>> + FDT_GPIO_NONE = 255, /* an invalid GPIO used to end our list */
>>
>> Can't you use 0 for that? (the kernel currently uses -1, but it seems
>> there's agreement that was a mistake). If you use 255, the number will
>> have to keep getting bumped as more complex systems become supported. If
>> not 0, perhaps U32_MAX or whatever the relevant ${type}_MAX is?
>
> But 0 is a valid GPIO isn't it?
Well, it depends how you define your numbering scheme. It may well be!
There are many ways of representing a GPIO:
* GPIO n on a specific controller (of which there may be many). This is
what DT GPIO bindings use.
* A system-wide GPIO ID, in which case the numbering is "virtual" (e.g.
a concatenation of the GPIOs on all the present controllers), and you
can choose to start the first controller's GPIOs at 0, 1, 1000 etc.,
thus leaving -1, 0, -n..999 etc. as invalid GPIOs. This is what the
Linux kernel's gpiolib uses (and some say this global numbering scheme
was a mistake).
> I currently use the max value available to the u8. We can change it at
> will when we update the u8 type to u16 which is why I made it a
> constant.
include/asm-generic/gpio.h seems to use an int to represent a GPIO. I'd
suggest these APIs do the same, rather than use a u8.
--
nvpublic
next prev parent reply other threads:[~2011-12-05 22:22 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-03 2:11 [U-Boot] [PATCH v2 0/17] tegra: Add fdt definitions and USB driver Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 01/17] fdt: Tidy up a few fdtdec problems Simon Glass
2011-12-05 21:27 ` Stephen Warren
2011-12-05 21:40 ` Simon Glass
2011-12-05 22:07 ` Stephen Warren
2011-12-05 22:11 ` Simon Glass
2011-12-05 22:18 ` Scott Wood
2011-12-05 22:25 ` Stephen Warren
2011-12-05 22:53 ` Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 02/17] fdt: Add functions to access phandles, arrays and bools Simon Glass
2011-12-05 21:59 ` Stephen Warren
2011-12-05 22:07 ` Simon Glass
2011-12-05 22:36 ` Stephen Warren
2011-12-05 23:56 ` Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 03/17] Add gpio_request() to asm-generic header Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 04/17] fdt: Add basic support for decoding GPIO definitions Simon Glass
2011-12-05 21:46 ` Stephen Warren
2011-12-05 21:56 ` Simon Glass
2011-12-05 22:22 ` Stephen Warren [this message]
2011-12-05 22:52 ` Simon Glass
2011-12-05 23:03 ` Stephen Warren
2011-12-05 23:29 ` Simon Glass
2011-12-06 3:55 ` Mike Frysinger
2011-12-07 1:21 ` Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 05/17] arm: fdt: Ensure that an embedded fdt is word-aligned Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 06/17] arm: fdt: Add skeleton device tree file from kernel Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 07/17] tegra: fdt: Add Tegra2x " Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 08/17] tegra: fdt: Add device tree file for Tegra2 Seaboard " Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 09/17] tegra: usb: fdt: Add additional device tree definitions for USB ports Simon Glass
2011-12-05 23:25 ` Stephen Warren
2011-12-06 0:55 ` Simon Glass
2011-12-06 20:28 ` Stephen Warren
2011-12-06 21:09 ` Simon Glass
2011-12-07 23:36 ` Stephen Warren
2011-12-08 21:10 ` Simon Glass
2011-12-12 18:13 ` Stephen Warren
2011-12-12 18:53 ` Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 10/17] tegra: usb: fdt: Add USB definitions for Tegra2 Seaboard Simon Glass
2011-12-05 23:26 ` Stephen Warren
2011-12-03 2:11 ` [U-Boot] [PATCH v2 11/17] usb: Add support for data alignment Simon Glass
2011-12-04 11:13 ` Remy Bohmer
2011-12-06 2:38 ` Simon Glass
2011-12-10 16:04 ` Remy Bohmer
2011-12-10 18:58 ` Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 12/17] usb: Add support for txfifo threshold Simon Glass
2011-12-05 23:32 ` Stephen Warren
2011-12-06 2:03 ` Simon Glass
2011-12-06 18:58 ` Stephen Warren
2011-12-06 19:24 ` Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 13/17] tegra: usb: Add support for Tegra USB peripheral Simon Glass
2011-12-04 11:12 ` Remy Bohmer
2011-12-03 2:11 ` [U-Boot] [PATCH v2 14/17] tegra: usb: Add USB support to nvidia boards Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 15/17] tegra: usb: Add common USB defines for tegra2 boards Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 16/17] tegra: usb: Enable USB on Seaboard Simon Glass
2011-12-03 2:11 ` [U-Boot] [PATCH v2 17/17] 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=4EDD440C.80002@nvidia.com \
--to=swarren@nvidia.com \
--cc=u-boot@lists.denx.de \
/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