linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Thomas Abraham <thomas.abraham@linaro.org>
Cc: Stephen Warren <swarren@nvidia.com>,
	Dong Aisheng-B29396 <B29396@freescale.com>,
	"linus.walleij@stericsson.com" <linus.walleij@stericsson.com>,
	"s.hauer@pengutronix.de" <s.hauer@pengutronix.de>,
	"rob.herring@calxeda.com" <rob.herring@calxeda.com>,
	"kernel@pengutronix.de" <kernel@pengutronix.de>,
	"cjb@laptop.org" <cjb@laptop.org>,
	"Simon Glass (sjg@chromium.org)" <sjg@chromium.org>,
	Dong Aisheng <dongas86@gmail.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"devicetree-discuss@lists.ozlabs.org" 
	<devicetree-discuss@lists.ozlabs.org>
Subject: Re: Pinmux bindings proposal
Date: Thu, 19 Jan 2012 08:56:07 -0800	[thread overview]
Message-ID: <20120119165607.GG22818@atomide.com> (raw)
In-Reply-To: <CAJuYYwQoh4_SnA9wmy4x+cG0w0hGukxTkODWtcSw_2QHYuDsrg@mail.gmail.com>

* Thomas Abraham <thomas.abraham@linaro.org> [120119 04:37]:
> 
> The io-pad controller (gpio/pinmux/pinconfig) can be represented in a
> dtsi file as below. There could be multiple io-pad controllers
> supported in the system.

FYI we too have too mux controller instances on omap4. That seems to
work just fine thanks to the "pinctrl: make it possible to add multiple maps"
patch by Linus W.
 
> pctrl0: pinctrl@11400000 {
>        compatible = "samsung,exynos4210-pinctrl";
>        reg = <0x11400000 0x1000>;
>        interrupts = <.......>;
>        pin-banks = <....>;
>        [... other properties TBD ...]
>        #pinctrl-cells = <5>;
> };
> 
> Each such node instantiates one instance of the pin-controller device.
> The 'struct pinctrl_dev' should include a new member 'struct of_node'
> to point to the corresponding pin-controller node in dt which
> instantiated the controller. The pinctrl_register() function called
> from drivers/pinctrl/pinctrl-xyz.c then registers the pin-controller
> instance.

Looks similar to what I have too. 
 
> * Specifying the pinmux/pinconfig settings in dts files:
> 
> Device nodes which require specific pinmux/pinconfig settings should
> include information about the required settings. For example, a i2c
> controller node in dts file is listed below.
> 
> i2c0: i2c@18000000 {
>         [... other properties ...]
>         pinctrl-active = <&pctrl0 5 0 2 3 0>,
>                              <&pctrl0 5 1 2 3 0>;
>         pinctrl-suspend = <&pctrl0 5 0 2 0 0>,
>                                 <&pctrl0 5 1 2 0 0>;
> };

Maybe we should have just the active/suspend/off flags in the
same array? Otherwise we'll end up unnecessarily repeating the
the pin information. See the pins + #pin-args example I posted,
which is otherwise similar.
 
> In the example above, the specifier of pinctrl-* is specific for
> Samsung io-pad controllers. Its format/syntax would be mainly
> dependent on the io-pad controller used, the above is only an example
> for Samsung io-pad controller. In the above node, the format of the
> pinctrl-* specifier is
> 
> property-name = <phandle of the pin-controller
>                            pin bank within the pin-controller
>                            pin number within the pin-bank
>                            pin-mux function number
>                            pull up/down config
>                            drive strength config>;

Are these all just bits in one register? If so, let's say you
have 16-bits per pin, we might be able to share the generic
pinmux-simple.c driver I have almost ready.. 

The format would then be

	#pin-args <4>;
	...

	/*    controller  offset on   idle off */
	pins = <&pinctrl0 0x0030 0x15 0x15 0x7>;
 
> * Using the pinmux/pinconfig specifier in device nodes to configure hardware.
> 
> A driver (for a device instantiated from device tree) would require
> code to be made aware of the pinmux/pinconfig options available. The
> typical sequence in a probe function would be as below.
> 
> (a) call of_get_named_gpio() to get the gpio number. In case of
> Samsung pinctrl driver, the pinctrl driver itself provides the gpiolib
> functionality and it attaches a gpio specifier translator with the
> gpio_chip. This translator is capable of translating the pinctrl-* and
> returning a gpio number.
> 
> (b) gpio_request() the gpio number obtained in step (a) above.
> 
> (c) Repeat steps (a) and (b) until all the gpios required by the
> driver are requested. In case a request fails, give up all the
> successfully requested gpio and return failure.

Can't the driver do this to request the gpio pins that you
can get from DT and pinmux? Even if you need to do dynamic pinmuxing
to GPIO pins for wake-up events, you can do that from the driver
as long as you get the GPIO number for the pin from mux code.

Regards,

Tony

  reply	other threads:[~2012-01-19 16:56 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-13 20:39 Pinmux bindings proposal Stephen Warren
2012-01-14  7:09 ` Shawn Guo
2012-01-17 18:47   ` Stephen Warren
2012-01-18  3:32     ` Shawn Guo
2012-01-18 19:00       ` Stephen Warren
2012-01-16 12:50 ` Dong Aisheng-B29396
2012-01-17  8:23   ` Shawn Guo
2012-01-17  9:46     ` Dong Aisheng-B29396
2012-01-17 14:13       ` Shawn Guo
2012-01-17 19:32         ` Stephen Warren
2012-01-18  3:44         ` Dong Aisheng-B29396
2012-01-18  4:47           ` Shawn Guo
2012-01-18 19:24           ` Stephen Warren
2012-01-17 19:28       ` Stephen Warren
2012-01-18 11:06         ` Dong Aisheng-B29396
2012-01-20 20:28           ` Stephen Warren
2012-01-27 12:00             ` Linus Walleij
2012-01-27 16:58               ` Stephen Warren
2012-01-17 19:21     ` Stephen Warren
2012-01-18  4:01       ` Shawn Guo
2012-01-18  9:32       ` Dong Aisheng-B29396
2012-01-17 19:09   ` Stephen Warren
2012-01-18  7:24     ` Dong Aisheng-B29396
2012-01-18 19:42       ` Stephen Warren
2012-01-16 18:28 ` Grant Likely
2012-01-18 14:13   ` Tony Lindgren
2012-01-18 14:30     ` Shawn Guo
2012-01-18 15:32       ` Tony Lindgren
2012-01-18 16:29         ` Tony Lindgren
2012-01-18 20:22           ` Grant Likely
2012-01-18 20:20         ` Grant Likely
2012-01-19 10:31           ` Tony Lindgren
2012-01-18 20:02     ` Stephen Warren
2012-01-19 10:57       ` Tony Lindgren
2012-01-20 20:50         ` Stephen Warren
2012-01-23 20:13           ` Tony Lindgren
2012-01-23 22:54             ` Stephen Warren
2012-01-27 13:11           ` Linus Walleij
2012-01-18 12:16 ` Thomas Abraham
2012-01-18 19:52   ` Stephen Warren
2012-01-19 17:01     ` Tony Lindgren
2012-01-19 13:10 ` Thomas Abraham
2012-01-19 16:56   ` Tony Lindgren [this message]
2012-01-19 17:38     ` Thomas Abraham
2012-01-19 18:20       ` Tony Lindgren
2012-01-19 18:38         ` Thomas Abraham
2012-01-20 10:05           ` Tony Lindgren
2012-01-20 16:17             ` Thomas Abraham
2012-01-20 17:53               ` Tony Lindgren
2012-01-21  1:38                 ` Thomas Abraham
2012-01-20 21:15     ` Stephen Warren
2012-01-20 21:11   ` Stephen Warren
2012-01-21  1:27     ` Thomas Abraham
2012-01-23 22:43       ` 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=20120119165607.GG22818@atomide.com \
    --to=tony@atomide.com \
    --cc=B29396@freescale.com \
    --cc=cjb@laptop.org \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=dongas86@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=linus.walleij@stericsson.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rob.herring@calxeda.com \
    --cc=s.hauer@pengutronix.de \
    --cc=sjg@chromium.org \
    --cc=swarren@nvidia.com \
    --cc=thomas.abraham@linaro.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).