devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Grant Likely <grant.likely@secretlab.ca>
To: Stephen Warren <swarren@nvidia.com>
Cc: 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: Mon, 16 Jan 2012 11:28:08 -0700	[thread overview]
Message-ID: <20120116182808.GG4223@ponder.secretlab.ca> (raw)
In-Reply-To: <74CDBE0F657A3D45AFBB94109FB122FF17801D202F@HQMAIL01.nvidia.com>

On Fri, Jan 13, 2012 at 12:39:42PM -0800, Stephen Warren wrote:
> I thought a bit more about pinmux DT bindings. I came up with something
> that I like well enough, and is pretty similar to the binding that Dong
> posted recently. I think it'll work for both Tegra's and IMX's needs.
> Please take a look!
> 
> Note: I've used named constants below just to make this easier to read.
> We still don't have a solution to actually use named constants in dtc yet.
> 
> tegra20.dtsi:
> 
> / {
>         tegra_pmx: pinmux@70000000 {
>                 compatible = "nvidia,tegra20-pinmux";
>                 reg = <0x70000014 0x10   /* Tri-state registers */
>                        0x70000080 0x20   /* Mux registers */
>                        0x700000a0 0x14   /* Pull-up/down registers */
>                        0x70000868 0xa8>; /* Pad control registers */
>         };
> 
>         sdhci@c8000200 {
>                 compatible = "nvidia,tegra20-sdhci";
>                 reg = <0xc8000200 0x200>;
>                 interrupts = <0 15 0x04>;
>         };
> };
> 
> tegra-harmony.dts:
> 
> /{
>         sdhci@c8000200 {
>                 cd-gpios = <&gpio 69 0>; /* gpio PI5 */
>                 wp-gpios = <&gpio 57 0>; /* gpio PH1 */
>                 power-gpios = <&gpio 155 0>; /* gpio PT3 */
> 
>                 /*
>                  * A list of named configurations that this device needs.
>                  * Format is a list of <"name" &phandle_of_pmx_configuration>
>                  *
>                  * Multiple "name"s are needed e.g. to support active/suspend,
>                  * or whatever device-defined states are appropriate. The
>                  * device defines which names are needed, just like a device
>                  * defines which regulators, clocks, GPIOs, interrupts, ...
>                  * it needs.
>                  *
>                  * This example shows a 1:1 relation between name and phandle.
>                  * We might want a 1:n relation, so that we can blend multiple
>                  * pre-defined sets of data together, e.g. one pre-defined set
>                  * for the pin mux configuration, another for the pin config
>                  * settings, both being put into the single "default" setting
>                  * for this one device.
>                  *
>                  * A pinmux controller can contain this property too, to
>                  * define "hogged" or "system" pin mux configuration.
>                  *
>                  * Note: Mixing strings and integers in a property seems
>                  * unusual. However, I have seen other bindings floating
>                  * around that are starting to do this...
>                  */
>                 pinmux =
>                         <"default" &pmx_sdhci_active>
>                         <"suspend" &pmx_sdhci_suspend>;
> 
>                 /* 1:n example: */
>                 pinmux =
>                         <"default" &pmx_sdhci_mux_a>
>                         <"default" &pmx_sdhci_pincfg_a>
>                         <"suspend" &pmx_sdhci_mux_a>
>                         <"suspend" &pmx_sdhci_pincfg_a_suspend>;


Yeah, don't do this.  Mixing phandle, string and cell values in a
property gets messy and could become troublesome to parse.  I've
backed away from it in the clk binding.

pinumx-* is better, but I'm not thrilled with it and I avoided that
pattern too for the latest iteration of the clk binding.  I prefer
using a "pinmux" + "pinmux-names" pair of properties when dealing with
an array of like objects (ie. reg, interrupts, clks, etc), but that
might not fit well since each setting has multiple state nodes.

> 
>                 /*
>                  * Alternative: One property for each required state. But,
>                  * how does pinctrl core know which properties to parse?
>                  * Every property named "pinctrl*" seems a little too far-
>                  * reaching. Perhaps if we used vendor-name "pinmux", that'd
>                  * be OK, i.e. pinmux,default and pinmux,suspend?

It isn't actually a vendor name, so don't use a ','.  "pinmux-" prefix
is fine.

g.

  parent reply	other threads:[~2012-01-16 18:28 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
     [not found]   ` <7FE21149F4667147B645348EC6057885091DEA-RL0Hj/+nBVDYdknt8GnhQq4g8xLGJsHaLnY5E4hWTkheoWH0uzbU5w@public.gmane.org>
2012-01-17  8:23     ` Shawn Guo
     [not found]       ` <20120117082334.GA31295-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2012-01-17  9:46         ` Dong Aisheng-B29396
2012-01-17 14:13           ` Shawn Guo
2012-01-17 19:32             ` Stephen Warren
     [not found]             ` <20120117141322.GA31687-rvtDTF3kK1ictlrPMvKcciBecyulp+rMXqFh9Ls21Oc@public.gmane.org>
2012-01-18  3:44               ` Dong Aisheng-B29396
     [not found]                 ` <7FE21149F4667147B645348EC6057885093AD9-RL0Hj/+nBVDYdknt8GnhQq4g8xLGJsHaLnY5E4hWTkheoWH0uzbU5w@public.gmane.org>
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
     [not found]               ` <7FE21149F4667147B645348EC6057885095125-RL0Hj/+nBVDYdknt8GnhQq4g8xLGJsHaLnY5E4hWTkheoWH0uzbU5w@public.gmane.org>
2012-01-20 20:28                 ` Stephen Warren
     [not found]                   ` <74CDBE0F657A3D45AFBB94109FB122FF1780DAB445-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-01-27 12:00                     ` Linus Walleij
2012-01-27 16:58                       ` Stephen Warren
2012-01-17 19:21       ` Stephen Warren
     [not found]         ` <74CDBE0F657A3D45AFBB94109FB122FF17801D22EB-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-01-18  4:01           ` Shawn Guo
2012-01-18  9:32           ` Dong Aisheng-B29396
2012-01-17 19:09   ` Stephen Warren
     [not found]     ` <74CDBE0F657A3D45AFBB94109FB122FF17801D22DE-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-01-18  7:24       ` Dong Aisheng-B29396
     [not found]         ` <7FE21149F4667147B645348EC6057885093D83-RL0Hj/+nBVDYdknt8GnhQq4g8xLGJsHaLnY5E4hWTkheoWH0uzbU5w@public.gmane.org>
2012-01-18 19:42           ` Stephen Warren
2012-01-16 18:28 ` Grant Likely [this message]
     [not found]   ` <20120116182808.GG4223-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2012-01-18 14:13     ` Tony Lindgren
2012-01-18 14:30       ` Shawn Guo
2012-01-18 15:32         ` Tony Lindgren
     [not found]           ` <20120118153256.GB22818-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2012-01-18 16:29             ` Tony Lindgren
     [not found]               ` <20120118162943.GC22818-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2012-01-18 20:22                 ` Grant Likely
2012-01-18 20:20             ` Grant Likely
     [not found]               ` <20120118202057.GH4223-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
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
     [not found]               ` <20120123201304.GB4420-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
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
     [not found]     ` <74CDBE0F657A3D45AFBB94109FB122FF1780DAAEB8-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-01-19 17:01       ` Tony Lindgren
     [not found] ` <74CDBE0F657A3D45AFBB94109FB122FF17801D202F-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2012-01-19 13:10   ` Thomas Abraham
2012-01-19 16:56     ` Tony Lindgren
     [not found]       ` <20120119165607.GG22818-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2012-01-19 17:38         ` Thomas Abraham
     [not found]           ` <CAJuYYwQB1pDu-JS5o3XPA1D8WbVcwbdtD43M4y7PeJNWeNXxQQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-01-19 18:20             ` Tony Lindgren
2012-01-19 18:38               ` Thomas Abraham
2012-01-20 10:05                 ` Tony Lindgren
     [not found]                   ` <20120120100528.GJ22818-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2012-01-20 16:17                     ` Thomas Abraham
2012-01-20 17:53                       ` Tony Lindgren
     [not found]                         ` <20120120175351.GL7807-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
2012-01-21  1:38                           ` Thomas Abraham
2012-01-20 21:15         ` Stephen Warren
     [not found]     ` <CAJuYYwQoh4_SnA9wmy4x+cG0w0hGukxTkODWtcSw_2QHYuDsrg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
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=20120116182808.GG4223@ponder.secretlab.ca \
    --to=grant.likely@secretlab.ca \
    --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 \
    /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).