devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: Christian Ruppert <christian.ruppert@abilis.com>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	Patrice CHOTARD <patrice.chotard@st.com>,
	linux-kernel@vger.kernel.org,
	Grant Likely <grant.likely@secretlab.ca>,
	Rob Herring <rob.herring@calxeda.com>,
	Rob Landley <rob@landley.net>,
	Sascha Leuenberger <sascha.leuenberger@abilis.com>,
	Pierrick Hascoet <pierrick.hascoet@abilis.com>,
	devicetree-discuss@lists.ozlabs.org, linux-doc@vger.kernel.org,
	Alexandre Courbot <acourbot@nvidia.com>
Subject: Re: [PATCH 2/2] Make non-linear GPIO ranges accesible from gpiolib
Date: Tue, 25 Jun 2013 09:59:11 -0600	[thread overview]
Message-ID: <51C9BE4F.80200@wwwdotorg.org> (raw)
In-Reply-To: <20130625115950.GB30827@ab42.lan>

On 06/25/2013 05:59 AM, Christian Ruppert wrote:
> On Fri, Jun 21, 2013 at 03:17:33PM -0600, Stephen Warren wrote:

...
> To define some terminology, let's call a set of pins affected by the
> same register / bit field a "port".

Well, the terminology "group" already exists for this really, but I
suppose we can call it a port instead...

...
>> 4) Depending on HW design, all register fields might be of type
>> described at (2) above, or all of the type described at (3) above, or a
>> mixture of both. Tegra is a mixture.
> 
> TB10x is all (3).
> 
>> 5) I expect the concept of a pin group to solely represent the various
>> groups of pins affected by each register field; in (2) above one pin per
>> group, in (3) above many pins per group.
> 
> In our example above, TB10x would have two ports, i.e. two bit fields in
> its pinctrl register. Each of those bit fields would allow selecting one
> of the configurations for grp1 and grp2 respectively.
>
> Do I understand your explanation correctly: You would implement the TB10x
> pinctrl exactly like the example above, two pin groups with three and
> five configurations?

Assuming there's a register field for grp1 that takes one of 3 values,
and a register field for grp2 that takes one of 5 values, then yes.

...
>> Consider a pin group in HW that encompasses 10 pins, but you've selected
>> a function onto it that only actually uses 6 pins for that logical
>> function. The other 4 pins aren't used, and can be GPIO. However, all
>> pins in the group are "claimed" because some mux function has been
>> selected onto the group that includes those 10 pins. In order to allow
>> some of those pins to be claimed as a GPIO, the pinctrl core simply
>> allows GPIO usage and mux function usage to be claimed on each
>> individual pin without regard for each-other.
> 
> This might be the main source of confusion. I admit that I hadn't
> understood (and still think it is at least unorthogonal if not
> semantically wrong) that an entire port must be claimed if just one
> interface inside the port is required. Probably many other driver
> authors (those you mention above) didn't understand this either.

It's not that the "entire port /must/ be claimed", it's that there's
choice in the matter; no concept of claiming anything (other than GPIO)
at a level less than a port. The port (group in pinctrl terminology)
*is* the level of granularity at which pinctrl claims pins.

>> Now, it would indeed be possible for each combination of (pin group, mux
>> function) to be associated with a list of pins from the group that could
>> be used as GPIO, and then for the pinctrl core to additionally enforce
>> that only those pins be claimed for GPIO usage. However, the pinctrl
>> core does not do this at present.
> 
> This is why it is implemented inside the TB10x driver.

OK.

If that concept ends up being more generally applicable, then it might
make sense to move the validation into the pinctrl core. I don't know if
this level of detail makes sense there or not though.

>>> When writing our pinctrl driver, my understanding was slightly
>>> different: I define seven pin groups:
>>> spi1 = {A5, A6, A7, A8};
>>> i2c = {A5, B5};
>>> mmc2 = {A1, B1};
>>> mmc4 = {A1, B1, C1, D1};
>>> mmc8 = {A1, B1, C1, D1, E1, F1, G1, H1};
>>> spi2 = {G1, G2, G3, G4};
>>> gpios = {A1, A5, A6, A7, A8, B1, B5, C1, D1, E1, F1, G1, G2, G3, G4, H1};
> 
> Do I understand your explanation on the very top correctly that this is
> actually the strategy you said was wrongly employed in several other
> drivers?

It looks like it on the surface. I'd have to look at the HW register
specs to say for sure.

...
>> In that case, the pinctrl driver or DT binding really shouldn't define
>> pin groups to help define that mapping, since the mapping is something
>> that exists outside the realm of the pinctrl HW block itself.
> 
> I agree. This is why the proposed pinctrl driver defines mux-side pin
> controller interfaces as pingroups (these are actual hardware interfaces
> of the pinctrl RTL module). GPIOs (and any other interfaces) are
> connected at the top level to those interfaces.

Pingroup definitions for "actual HW interfaces of the RTL module" make
sense to me.

  reply	other threads:[~2013-06-25 15:59 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-10 15:45 [PATCH 1/2] pinmux: Add TB10x pinmux driver Christian Ruppert
2013-04-10 15:45 ` [PATCH 2/2] GPIO: Add TB10x GPIO driver Christian Ruppert
2013-04-17 15:13   ` Linus Walleij
2013-04-17 18:37   ` Stephen Warren
2013-04-17 14:48 ` [PATCH 1/2] pinmux: Add TB10x pinmux driver Linus Walleij
2013-04-17 18:32 ` Stephen Warren
2013-04-18  9:03   ` Christian Ruppert
2013-04-26  7:47     ` Linus Walleij
2013-04-29 16:17       ` Christian Ruppert
     [not found]         ` <20130429161725.GB30136-7oYq3qWSd+k@public.gmane.org>
2013-05-02 18:49           ` Stephen Warren
2013-05-03 18:03             ` Linus Walleij
2013-05-08 16:41               ` Christian Ruppert
2013-05-08 20:01                 ` Stephen Warren
2013-05-10  8:25                   ` Christian Ruppert
2013-05-14 12:29                     ` Linus Walleij
2013-05-15  9:41                       ` Christian Ruppert
2013-05-20  8:03                         ` Linus Walleij
2013-05-22  9:49                           ` Christian Ruppert
2013-06-12 16:44                             ` [RFC] Allow GPIO ranges based on pinctl pin groups Christian Ruppert
     [not found]                               ` <1371055449-15828-1-git-send-email-christian.ruppert-ux6zf3SgZrrQT0dZR+AlfA@public.gmane.org>
2013-06-13  9:00                                 ` Linus Walleij
2013-06-13 12:55                                   ` [PATCH 1/2] Add pin list based GPIO ranges Christian Ruppert
     [not found]                                     ` <1371128132-18266-1-git-send-email-christian.ruppert-ux6zf3SgZrrQT0dZR+AlfA@public.gmane.org>
2013-06-13 18:30                                       ` Linus Walleij
2013-06-14  7:17                                     ` Patrice CHOTARD
2013-06-14  8:24                                       ` [PATCH] Fix comment on pinctrl_gpio_range.pin_base Christian Ruppert
2013-06-16 10:19                                         ` Linus Walleij
2013-06-13 12:55                                   ` [PATCH 2/2] Make non-linear GPIO ranges accesible from gpiolib Christian Ruppert
2013-06-13 18:36                                     ` Linus Walleij
2013-06-13 21:38                                     ` Stephen Warren
2013-06-14  9:12                                       ` Christian Ruppert
2013-06-19 18:10                                         ` Stephen Warren
2013-06-19 18:27                                           ` Stephen Warren
2013-06-20 11:57                                             ` Christian Ruppert
2013-06-21 21:17                                               ` Stephen Warren
2013-06-25 11:59                                                 ` Christian Ruppert
2013-06-25 15:59                                                   ` Stephen Warren [this message]
2013-06-25 14:27                                                 ` Linus Walleij
2013-06-25 15:19                                                   ` Stephen Warren
2013-06-25 14:32                                                 ` Linus Walleij
2013-06-25 15:22                                                   ` Stephen Warren
2013-06-25 14:56                                                 ` Linus Walleij
2013-06-25 15:31                                                   ` Stephen Warren
2013-06-25 15:47                                                     ` Linus Walleij
2013-06-25 15:28                                                 ` Linus Walleij
2013-06-25 15:39                                                   ` Stephen Warren
2013-06-25 15:53                                                     ` Linus Walleij
2013-06-17 16:03                                       ` Christian Ruppert
2013-06-17 16:04                                         ` [PATCH 1/4] " Christian Ruppert
2013-06-18  8:09                                           ` Linus Walleij
2013-06-18  9:25                                             ` Christian Ruppert
2013-06-18  9:29                                               ` Christian Ruppert
2013-06-19 12:03                                                 ` Linus Walleij
2013-06-19 18:15                                                   ` Stephen Warren
2013-06-26 11:42                                                     ` Christian Ruppert
2013-06-26 17:33                                                       ` Stephen Warren
2013-06-19 22:27                                                 ` Stephen Warren
2013-06-26 11:46                                                   ` Christian Ruppert
2013-06-26 17:34                                                     ` Stephen Warren
2013-06-18  9:29                                               ` [PATCH 2/4] pinmux: Add TB10x pinmux driver Christian Ruppert
2013-06-19 22:35                                                 ` Stephen Warren
2013-06-26 11:50                                                   ` Christian Ruppert
2013-06-26 17:40                                                     ` Stephen Warren
2013-07-05  9:49                                                       ` Christian Ruppert
2013-07-05 18:40                                                         ` Stephen Warren
2013-07-08 13:02                                                           ` Christian Ruppert
2013-07-10 19:27                                                             ` Stephen Warren
2013-07-16  8:47                                                               ` Christian Ruppert
2013-07-16 16:04                                                                 ` Stephen Warren
2013-07-18 16:07                                                                   ` Christian Ruppert
2013-07-18 19:54                                                                     ` Stephen Warren
2013-07-26  9:42                                                                       ` Christian Ruppert
2013-07-26 16:05                                                                         ` Stephen Warren
2013-07-29 22:35                                                 ` Linus Walleij
2013-08-05 11:51                                                   ` Christian Ruppert
2013-08-14 16:53                                                     ` Linus Walleij
2013-08-21 15:57                                                       ` Christian Ruppert
2013-08-22 20:10                                                         ` Stephen Warren
2013-08-28 14:47                                                           ` Christian Ruppert
2013-10-08 12:21                                                             ` Christian Ruppert
2013-10-08 12:25                                                               ` [PATCH 01/03] Make non-linear GPIO ranges accesible from gpiolib Christian Ruppert
2013-10-09 11:58                                                                 ` Linus Walleij
2013-10-09 13:28                                                                   ` Christian Ruppert
2013-10-09 14:01                                                                     ` Linus Walleij
2013-10-10 20:49                                                                       ` Stephen Warren
2013-10-11  7:53                                                                         ` Linus Walleij
2013-10-15 13:36                                                                       ` Christian Ruppert
2013-10-15 13:37                                                                         ` [PATCH V2] " Christian Ruppert
2013-10-16 11:19                                                                           ` Linus Walleij
2013-10-16 12:56                                                                             ` [PATCH] Add a short note on pinctrl_get_group_pins to pinctrl.txt Christian Ruppert
2013-10-16 13:36                                                                               ` Linus Walleij
2013-10-10 20:47                                                                   ` [PATCH 01/03] Make non-linear GPIO ranges accesible from gpiolib Stephen Warren
2013-10-08 12:25                                                               ` [PATCH 02/03] pinmux: Add TB10x pinmux driver Christian Ruppert
2013-10-09 12:30                                                                 ` Linus Walleij
     [not found]                                                                   ` <CACRpkdZdELan7OyMjt4KOi=q-v1xkSaNZNyZ7AnOBY1R=SoW3w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-10-15 13:39                                                                     ` [PATCH V2] " Christian Ruppert
2013-10-16 11:25                                                                       ` Linus Walleij
2013-10-08 12:25                                                               ` [PATCH 03/03] GPIO: Add TB10x GPIO driver Christian Ruppert
2013-10-09 12:19                                                                 ` Linus Walleij
2013-10-15 13:45                                                                   ` Christian Ruppert
2013-10-16 11:29                                                                     ` Linus Walleij
2013-10-16 12:58                                                                       ` Christian Ruppert
2013-10-24 16:23                                                                         ` Christian Ruppert
2013-10-25 21:44                                                                           ` Linus Walleij
2013-10-25  3:27                                                                 ` Kumar Gala
2013-08-28 18:49                                                         ` [PATCH 2/4] pinmux: Add TB10x pinmux driver Linus Walleij
2013-08-29  7:35                                                           ` Christian Ruppert
2013-08-29  8:24                                                             ` Linus Walleij
2013-08-30  8:19                                                               ` Christian Ruppert
2013-06-18  9:29                                               ` [PATCH 3/4] GPIO: Add TB10x GPIO driver Christian Ruppert
2013-06-19 22:37                                                 ` Stephen Warren
2013-06-18  9:29                                               ` [PATCH 4/4] Add Abilis Systems Sarl to device tree vendor prefixes Christian Ruppert
2013-06-17 16:04                                         ` [PATCH 2/4] pinmux: Add TB10x pinmux driver Christian Ruppert
2013-06-17 16:04                                         ` [PATCH 3/4] GPIO: Add TB10x GPIO driver Christian Ruppert
2013-06-17 16:04                                         ` [PATCH 4/4] Add Abilis Systems Sarl to device tree vendor prefixes Christian Ruppert
2013-05-16  0:12                     ` [PATCH 1/2] pinmux: Add TB10x pinmux driver Stephen Warren
2013-05-20  8:10                       ` Linus Walleij
2013-05-22 14:28                         ` Christian Ruppert
2013-05-23  7:43                           ` Haojian Zhuang
2013-05-24 11:50                             ` Christian Ruppert
2013-05-26 15:49                               ` Haojian Zhuang
2013-06-03 12:30                                 ` Christian Ruppert
     [not found]                                   ` <20130603123001.GD31808-7oYq3qWSd+k@public.gmane.org>
2013-06-05  1:44                                     ` Haojian Zhuang
2013-06-06 14:11                                       ` Christian Ruppert
2013-06-06 14:32                                         ` Haojian Zhuang
2013-06-06 15:30                                           ` Christian Ruppert
2013-06-07  0:00                                             ` Haojian Zhuang
2013-06-07 11:32                                               ` Christian Ruppert
     [not found]                                                 ` <20130607113207.GE11875-7oYq3qWSd+k@public.gmane.org>
2013-06-07 14:57                                                   ` Haojian Zhuang
2013-06-07 19:18                                             ` Stephen Warren
2013-06-08  8:31                                               ` Haojian Zhuang
2013-06-09  2:47                                                 ` Stephen Warren
2013-06-11  7:27                                               ` Christian Ruppert
2013-06-16 11:11                                                 ` Linus Walleij
2013-05-29 12:21                               ` Linus Walleij
2013-06-03  9:42                                 ` Christian Ruppert
     [not found]                                   ` <20130603094204.GC31808-7oYq3qWSd+k@public.gmane.org>
2013-06-07 11:36                                     ` Linus Walleij
2013-06-07 13:34                                       ` Christian Ruppert
2013-05-24  9:20                           ` Linus Walleij
2013-05-24 12:03                             ` Christian Ruppert
     [not found]     ` <20130418090310.GA17636-7oYq3qWSd+k@public.gmane.org>
2013-05-02 18:52       ` 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=51C9BE4F.80200@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=acourbot@nvidia.com \
    --cc=christian.ruppert@abilis.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --cc=linus.walleij@linaro.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patrice.chotard@st.com \
    --cc=pierrick.hascoet@abilis.com \
    --cc=rob.herring@calxeda.com \
    --cc=rob@landley.net \
    --cc=sascha.leuenberger@abilis.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).