GPIO - marking individual pins (not) available in device tree
Anton Vorontsov
avorontsov at ru.mvista.com
Sat Oct 25 03:41:20 EST 2008
On Thu, Oct 23, 2008 at 04:32:49PM -0500, Matt Sealey wrote:
> Hi guys,
>
> I'm a little perplexed as to how I would define a GPIO controller in a
> device tree but mark off pins as available or not, so users can geek
> around in their own drivers without defining in a device tree exactly
> what they intend to use it for (especially if it's something really
> weird).
>
> Easiest example - the Efika runs an MPC5200B has 3 GPIO pins on the
> board. It's not much, but they're there for use. All the other GPIOs are
> absolutely out of bounds, off limits and probably dangerous to touch, but
> since each GPIO block has a 32-bit register to handle them, you can
> twiddle any bit you like with impunity and cause all the damage you want.
> A simple thought comes to mind in that the gpiolib should not allow a
> request for one of these "bad" GPIO pins to succeed.
Well, the same applies to the IRQ controllers. I bet you can request a
reserved IRQ on some particular board/CPU, but results would be
unpredictable (the driver would touch reserved bits etc). The device
tree should be sane for this particular platform and not specify bogus
gpios/irqs/regs/sizes/etc.
> So, how do we define in a bank of GPIOs, which ones are free for use,
> without them being attached to a device and given as a "gpios" property?
>
> Would we suggest a node;
>
> gpio-header {
> compatible = "bplan,efika-gpio";
> gpios = <&gpio-standard 16 0 17 0>;
> };
>
> gpio-header2 {
> compatible = "bplan,efika-gpio-wkup";
> gpios = <&gpio-wkup 18 0>;
> };
IMO this looks very reasonable. You properly describe the hardware:
physical device (header) and its resources.
--
Anton Vorontsov
email: cbouatmailru at gmail.com
irc://irc.freenode.net/bd2
More information about the Linuxppc-dev
mailing list