Re: [RFC PATCH v2 00/13] arm/tegra: Initialize GPIO & pinmux from DT

Linus Walleij
2011-08-16T14:45:45Z

On Tue, Aug 16, 2011 at 4:37 PM, Arnd Bergmann <arnd@arndb.de> wrote:
> On Tuesday 16 August 2011, Linus Walleij wrote:
>> Say mmc instance 0 need pingroup foo on pincontroller bar
>> means that there must be a specific reference from mmc.0:s
>> struct device * to pinctrl bar:s struct device *. Maybe this is
>> peanuts in DT, sorry not enough insight.
>
> I think what you are looking for is the equivalent of the
> interrupt-parent property for pinmux. The idea is that each
> node in the device tree can point to a device managing the
> pinmux, so reference would point to a local number in that
> space. We have discussed this for the GPIO case already, and
> I suspect that the two should be identical (gpio-controller
> and pinmux-controller using the same device node and same
> property to refer to them).

Yes. I discussed with Grant and his idea is for e.g.
advanced combined pincontrol + GPIO blocks that handle
a lot of stuff like muxing, biasing and GPIO, to expose
a single pinctrl device that in turn provide also a gpio_chip
in addition to the pinctrl interfaces so tehy should be
all on the same struct device *

> Since the pinmux-parent
> (gpio-parent, ...) property gets inherited by all child
> devices, you only need to set it once at the root of the
> device tree for the simple case where there is only one
> controller.

This will likely be the case for most of the advanced muxes
I know of, OMAP, Tegra and Nomadik.

Thanks,
Linus Walleij