devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
To: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: U-Boot Mailing List
	<u-boot-0aAXYlwwYIKGBzrmiIFOJg@public.gmane.org>,
	Devicetree Discuss
	<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
	Tom Warren <TWarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	Albert ARIBAUD
	<albert.u.boot-LhW3hqR2+23R7s880joybQ@public.gmane.org>
Subject: Re: [PATCH v2 04/17] fdt: Add basic support for decoding GPIO definitions
Date: Mon, 5 Dec 2011 15:29:24 -0800	[thread overview]
Message-ID: <CAPnjgZ2fVeae9jvxH9fVhwNU61mSQV_SrPyaqueRv5WVr_tEVQ@mail.gmail.com> (raw)
In-Reply-To: <4EDD4DA7.6070902-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>

Hi Stephen,

On Mon, Dec 5, 2011 at 3:03 PM, Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> wrote:
> On 12/05/2011 03:52 PM, Simon Glass wrote:
>> Hi Stephen,
>>
>> On Mon, Dec 5, 2011 at 2:22 PM, Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> wrote:
>>> On 12/05/2011 02:56 PM, Simon Glass wrote:
>>>> Hi Stephen,
>>>>
>>>> On Mon, Dec 5, 2011 at 1:46 PM, Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 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.
>>
>> Fair enough. I am wanting to create a way for more information to be
>> provided about a GPIO so that it can be set up automatically ready for
>> use (reduces code size).
>
> At least in this case, I don't think it makes sense to do that. The FDT
> is about representing that a particular GPIO is a VBUS GPIO. That
> doesn't mean the GPIO /has/ to be an output driven high; that's only
> true if the driver is enabled and chooses to configure that port as a
> host port, not a device port.
>
> If you wanted to represent GPIOs that were always configured to a
> specific output value in DT, I think that'd be an unrelated binding
> somewhere other than the USB bus's vbus-gpios property, since it'd have
> a completely different semantic meaning.

I feel that it is useful to have a generic gpio setup function which
can at least set gpio to input or output. We could even make it
optional with an additional flag. IMO a lot of the reason for only
having one flag is that no one can OR together two decimal numbers
(i.e. we need symbolic constants in the fdt).

But for now I will drop this comment and the fdtdec_setup_gpio()
function. This will increase code size slightly since every driver
will need to call gpio_direction_input/output() manually.

>
>>> 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.
>>
>> Do you mean the fdt_gpio_state structure?
>
> Yes.
>
>> I have not used u8 for any
>> function calls and would not.
>>
>> This adds 3 bytes for every entry. What is the benefit? People get
>> upset when we waste memory!
>
> Well, U-boot has already chosen to use an int to represent a GPIO ID.
> Given that, I assert that all places that store a GPIO ID should use the
> same type. And realistically, we're only talking about a handful of
> instances here, and any bloat is completely limited to those platforms
> that use this feature, and linear with the number of GPIOs.

OK I have changed this. Each structure element is now 4 bytes (50%)
bigger than before but I don't think this will add up to more than a
few hundred bytes all up.

Regards,
Simon

>
> --
> nvpublic

  parent reply	other threads:[~2011-12-05 23:29 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1322878300-5551-1-git-send-email-sjg@chromium.org>
2011-12-03  2:11 ` [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
     [not found]       ` <CAPnjgZ0h39vB2H4MuCwVqb2Tgcr4==yN8Pj6a3s9dciyXPBu1A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-05 22:07         ` Stephen Warren
     [not found]           ` <4EDD4091.1030708-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
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 ` [PATCH v2 06/17] arm: fdt: Add skeleton device tree file from kernel Simon Glass
     [not found] ` <1322878300-5551-1-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2011-12-03  2:11   ` [PATCH v2 02/17] fdt: Add functions to access phandles, arrays and bools Simon Glass
     [not found]     ` <1322878300-5551-3-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2011-12-05 21:59       ` Stephen Warren
     [not found]         ` <4EDD3EDE.4000609-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-12-05 22:07           ` Simon Glass
     [not found]             ` <CAPnjgZ30Bmxp4eGCgYss9GHt=SN5X5-sSHrPJpZFjVjprpa_Ag-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-05 22:36               ` Stephen Warren
2011-12-05 23:56                 ` Simon Glass
2011-12-03  2:11   ` [PATCH v2 04/17] fdt: Add basic support for decoding GPIO definitions Simon Glass
     [not found]     ` <1322878300-5551-5-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2011-12-05 21:46       ` Stephen Warren
2011-12-05 21:56         ` Simon Glass
     [not found]           ` <CAPnjgZ3ARCTXVN2MKhfrdCCmmb21zbYdSq8AuQFPdoA=xFr7Mg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-05 22:22             ` Stephen Warren
     [not found]               ` <4EDD440C.80002-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-12-05 22:52                 ` Simon Glass
     [not found]                   ` <CAPnjgZ03+tfMhkqo4=uarcAf1E8hTfvSF_Y0=V70tuqP866QQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-05 23:03                     ` Stephen Warren
     [not found]                       ` <4EDD4DA7.6070902-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-12-05 23:29                         ` Simon Glass [this message]
2011-12-06  3:55                   ` Mike Frysinger
2011-12-07  1:21                     ` Simon Glass
2011-12-03  2:11   ` [PATCH v2 05/17] arm: fdt: Ensure that an embedded fdt is word-aligned Simon Glass
2011-12-03  2:11   ` [PATCH v2 07/17] tegra: fdt: Add Tegra2x device tree file from kernel Simon Glass
2011-12-03  2:11   ` [PATCH v2 08/17] tegra: fdt: Add device tree file for Tegra2 Seaboard " Simon Glass
2011-12-03  2:11   ` [PATCH v2 09/17] tegra: usb: fdt: Add additional device tree definitions for USB ports Simon Glass
     [not found]     ` <1322878300-5551-10-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2011-12-05 23:25       ` Stephen Warren
2011-12-06  0:55         ` Simon Glass
     [not found]           ` <CAPnjgZ1J_cOS_E+ZiDoZUh79V7LUFzVkx-0nhbPTDwuGCGvDnQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-06 20:28             ` Stephen Warren
2011-12-06 21:09               ` Simon Glass
     [not found]                 ` <CAPnjgZ035Cen11ObFXjKUCqypvVKzkewhfY2F=yGH8=RWxVuSA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-07 23:36                   ` Stephen Warren
     [not found]                     ` <4EDFF898.1070708-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-12-08 21:10                       ` Simon Glass
     [not found]                         ` <CAPnjgZ1adfU652Z2ob30GTWZiCnah4WsJNfVrroWvtM5LXW93Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-12 18:13                           ` Stephen Warren
2011-12-12 18:53                             ` Simon Glass
2011-12-03  2:11   ` [PATCH v2 10/17] tegra: usb: fdt: Add USB definitions for Tegra2 Seaboard Simon Glass
     [not found]     ` <1322878300-5551-11-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2011-12-05 23:26       ` Stephen Warren
2011-12-03  2:11   ` [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=CAPnjgZ2fVeae9jvxH9fVhwNU61mSQV_SrPyaqueRv5WVr_tEVQ@mail.gmail.com \
    --to=sjg-f7+t8e8rja9g9huczpvpmw@public.gmane.org \
    --cc=TWarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=albert.u.boot-LhW3hqR2+23R7s880joybQ@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=u-boot-0aAXYlwwYIKGBzrmiIFOJg@public.gmane.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).