[PATCH 1/2] Documentation/gpio.txt: Explain expected pinctrl interaction
From: Linus Walleij <hidden>
Date: 2012-02-21 13:08:29
Also in:
linux-mmc, linux-tegra, lkml
On Tue, Feb 21, 2012 at 1:44 PM, Russell King - ARM Linux [off-list ref] wrote:
quoted
(It'd probably need the SA1100 to be a bit more strict in using gpiolib in place for the direct assignments though, else the abstractions get a bit pointless anyway.)That's mostly happened through my recent set of 100 or so patches. There's a few areas where that's not quite as easy as it should be, but on the whole, it's mostly complete.
Excellent!
The other thing I forgot to mention, and I suspect it's particular to SA11x0, is that the GPDR must be set correctly according to the special function as well as GAFR. ?So, if a special function involves driving a pin, the pin must be set as an output in GPDR. ?Conversely, if the special function involves input only, the pin must be set as an input in GPDR. So, on SA11x0, gpio and pin configuration are intimately linked.
It's quite common I think, many platforms have an intimate relation between GPIO and muxes/altfunctions. For example it is common that the hardware engineer doesn't helpfully enable on-die pull-ups on the I2C bus even though the I2C block is muxed in, you have to go in and set the pull-up bits separately from muxing the I2C in... Basically it's expected from a generic pad I/O cell being arrayed into a GPIO block to expose these things in the same set of registers. I made some presentation last week partly describing how some hardware engineers I know go about creating GPIO controllers from simpler I/O pad cells: http://www.df.lth.se/~triad/papers/pincontrol.pdf Yours, Linus Walleij