[PATCH 01/16] ARM: dts: exynos4210: Replace legacy GPIO bank nodes with pinctrl bank nodes
From: Tomasz Figa <hidden>
Date: 2012-10-10 18:26:25
Also in:
linux-devicetree, linux-samsung-soc
Dnia ?roda, 10 pa?dziernika 2012 11:12:53 Tony Lindgren pisze:
* Stephen Warren [off-list ref] [121010 09:36]:quoted
On 10/10/2012 01:26 AM, Linus Walleij wrote:quoted
On Mon, Oct 8, 2012 at 10:39 AM, Tomasz Figa [off-list ref]
wrote:
quoted
quoted
quoted
Seuqential patches from this series introduce SoC-specific data parsing from device tree. This patch removes legacy GPIO bank nodes from exynos4210.dtsi and replaces them with nodes and properties required for these patches.So to be clear:quoted
+ pinctrl-bank-types { + bank_off: bank-off { + samsung,reg-names = "func", "dat", "pud", + "drv", "conpdn", "pudpdn"; + samsung,reg-params = <0x00 4>, <0x04 1>, <0x08 2>, + <0x0C 2>, <0x10 2>, <0x14 2>; + };This is starting to look like a firmware language, I have mixed feelings about this. Shall this be read: "Poke 4 into 0x00, poke 1 into 0x04, poke 2 into 0x08" etc? We really need to discuss this, Grant has already NACK:ed such approaches once.Well, I don't think he NACK'd Tony Lindgren's generic pinctrl driver, which is doing this exact same thing. I did raise the same point about Tony's driver when he posted it, but nobody seemed inclined to NACK it based on that at the time, IIRC...To summarize, using reg value pairs in DT makes sense if the amount of data is huge. Otherwise we'll be describing indidual hardware bits as properties in DT, or have to have huge amounts of static data in the kernel. Where it does not make sense is if there's a sequence of reads and writes with test loops in between.. But that's does not look to be the case here. The reg value pairs will be readable when the DT preprocessing is available, and that allows the values to be orred together while DT properties don't. The alternative is to describe hardware register bits as DT properties, which is very bloated. But considering all this.. Are the samsung,reg-names really needed by the kernel?
They are used to specify which registers are defined in reg-params property and in which order. Most of the registers are not mandatory and this is needed to be able to specify only those that are present. At least I couldn't think of a better solution for this. Do you have some suggestions? Best regards, Tomasz Figa