[meta-xilinx] gpio export from device tree
alan.levy at plextek.com
Thu Mar 2 07:46:29 PST 2017
The following DTS example fragment defines the EMIO pins used to control an external 8-way Mux:
* Provide a set of aliases describing the GPIOs that are exported via sysfs for use by applications.
* The format of each signal entry is as follows:
* <name> = "<pin_no>,INPUT | OUTPUT, ACTIVE_HIGH | ACTIVE_LOW"
* pin1 = "10,OUTPUT,ACTIVE_HIGH";
* pin2 = "25,INPUT,ACTIVE_LOW";
* To make it easy to maintain this data, pin numbers are as seen by the EMIO GPIO controller,
* not as known to SysFs, hence the need for GPIO_OFFSET so that application code knows
* how to calculate the correct number to pass to SysFs.
GPIO_OFFSET = "960"; /* = 1024 - 64 - due to the way that Linux allocates GPIO pin numbering for use with Sysfs. */
/* Outputs - all EMIO pins */
MUX_ADDR0 = "30,OUTPUT,ACTIVE_HIGH"; /* Schematic Pin: MUX_SEL0 */
MUX_ADDR1 = "31,OUTPUT,ACTIVE_HIGH"; /* Schematic Pin: MUX _SEL1 */
MUX_ADDR2 = "32,OUTPUT,ACTIVE_HIGH"; /* Schematic Pin: MUX _SEL2 */
MUX_ENABLE = "29,OUTPUT,ACTIVE_LOW"; /* Schematic Pin: MUX _SEL_N */
Apps read the value of GPIO_OFFSET and parse the individual MUX_xxx strings to extract the settings. The GPIO numbers are then GPIO_OFFSET + pin number. So for example MUX_ENABLE is on GPIO 989 (960 + 29).
From: Jean-Francois Dagenais [mailto:jeff.dagenais at gmail.com]
Sent: 02 March 2017 15:19
To: Alan Levy
Cc: Mike Looijmans; meta-xilinx at yoctoproject.org
Subject: Re: [meta-xilinx] gpio export from device tree
Thanks for this insight.
> On Mar 1, 2017, at 05:16, Alan Levy <alan.levy at plextek.com> wrote:
> In order to give userspace GPIOs sane names I use devicetree aliases which application code can access from /proc/device-tree/aliases. Each GPIO has an alias with a sensible name and the string I assign to it supplies the GPIO pin number and any other relevant info such as whether it's an input or an output and whether it's active high or active low.
> This technique can also be used to tell application the base pin numbers for MIO/EMIO if you wish.
Can you point to an example? Or copy/paste a bit of it here?
More information about the meta-xilinx