mirror of
https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
synced 2025-09-05 16:07:46 -04:00
Fixed MTP to work with TWRP
This commit is contained in:
commit
f6dfaef42e
50820 changed files with 20846062 additions and 0 deletions
74
Documentation/devicetree/bindings/gpio/8xxx_gpio.txt
Normal file
74
Documentation/devicetree/bindings/gpio/8xxx_gpio.txt
Normal file
|
@ -0,0 +1,74 @@
|
|||
GPIO controllers on MPC8xxx SoCs
|
||||
|
||||
This is for the non-QE/CPM/GUTs GPIO controllers as found on
|
||||
8349, 8572, 8610 and compatible.
|
||||
|
||||
Every GPIO controller node must have #gpio-cells property defined,
|
||||
this information will be used to translate gpio-specifiers.
|
||||
See bindings/gpio/gpio.txt for details of how to specify GPIO
|
||||
information for devices.
|
||||
|
||||
The GPIO module usually is connected to the SoC's internal interrupt
|
||||
controller, see bindings/interrupt-controller/interrupts.txt (the
|
||||
interrupt client nodes section) for details how to specify this GPIO
|
||||
module's interrupt.
|
||||
|
||||
The GPIO module may serve as another interrupt controller (cascaded to
|
||||
the SoC's internal interrupt controller). See the interrupt controller
|
||||
nodes section in bindings/interrupt-controller/interrupts.txt for
|
||||
details.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,<chip>-gpio" followed by "fsl,mpc8349-gpio"
|
||||
for 83xx, "fsl,mpc8572-gpio" for 85xx, or
|
||||
"fsl,mpc8610-gpio" for 86xx.
|
||||
- #gpio-cells: Should be two. The first cell is the pin number
|
||||
and the second cell is used to specify optional
|
||||
parameters (currently unused).
|
||||
- interrupt-parent: Phandle for the interrupt controller that
|
||||
services interrupts for this device.
|
||||
- interrupts: Interrupt mapping for GPIO IRQ.
|
||||
- gpio-controller: Marks the port as GPIO controller.
|
||||
|
||||
Optional properties:
|
||||
- interrupt-controller: Empty boolean property which marks the GPIO
|
||||
module as an IRQ controller.
|
||||
- #interrupt-cells: Should be two. Defines the number of integer
|
||||
cells required to specify an interrupt within
|
||||
this interrupt controller. The first cell
|
||||
defines the pin number, the second cell
|
||||
defines additional flags (trigger type,
|
||||
trigger polarity). Note that the available
|
||||
set of trigger conditions supported by the
|
||||
GPIO module depends on the actual SoC.
|
||||
|
||||
Example of gpio-controller nodes for a MPC8347 SoC:
|
||||
|
||||
gpio1: gpio-controller@c00 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "fsl,mpc8347-gpio", "fsl,mpc8349-gpio";
|
||||
reg = <0xc00 0x100>;
|
||||
interrupt-parent = <&ipic>;
|
||||
interrupts = <74 0x8>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio2: gpio-controller@d00 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "fsl,mpc8347-gpio", "fsl,mpc8349-gpio";
|
||||
reg = <0xd00 0x100>;
|
||||
interrupt-parent = <&ipic>;
|
||||
interrupts = <75 0x8>;
|
||||
gpio-controller;
|
||||
};
|
||||
|
||||
Example of a peripheral using the GPIO module as an IRQ controller:
|
||||
|
||||
funkyfpga@0 {
|
||||
compatible = "funky-fpga";
|
||||
...
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <4 3>;
|
||||
};
|
36
Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt
Normal file
36
Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt
Normal file
|
@ -0,0 +1,36 @@
|
|||
* Abilis TB10x GPIO controller
|
||||
|
||||
Required Properties:
|
||||
- compatible: Should be "abilis,tb10x-gpio"
|
||||
- reg: Address and length of the register set for the device
|
||||
- gpio-controller: Marks the device node as a gpio controller.
|
||||
- #gpio-cells: Should be <2>. The first cell is the pin number and the
|
||||
second cell is used to specify optional parameters:
|
||||
- bit 0 specifies polarity (0 for normal, 1 for inverted).
|
||||
- abilis,ngpio: the number of GPIO pins this driver controls.
|
||||
|
||||
Optional Properties:
|
||||
- interrupt-controller: Marks the device node as an interrupt controller.
|
||||
- #interrupt-cells: Should be <1>. Interrupts are triggered on both edges.
|
||||
- interrupts: Defines the interrupt line connecting this GPIO controller to
|
||||
its parent interrupt controller.
|
||||
- interrupt-parent: Defines the parent interrupt controller.
|
||||
|
||||
GPIO ranges are specified as described in
|
||||
Documentation/devicetree/bindings/gpio/gpio.txt
|
||||
|
||||
Example:
|
||||
|
||||
gpioa: gpio@FF140000 {
|
||||
compatible = "abilis,tb10x-gpio";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-parent = <&tb10x_ictl>;
|
||||
interrupts = <27 2>;
|
||||
reg = <0xFF140000 0x1000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
abilis,ngpio = <3>;
|
||||
gpio-ranges = <&iomux 0 0 0>;
|
||||
gpio-ranges-group-names = "gpioa_pins";
|
||||
};
|
|
@ -0,0 +1,49 @@
|
|||
* General Purpose Input Output (GPIO) bus.
|
||||
|
||||
Properties:
|
||||
- compatible: "cavium,octeon-3860-gpio"
|
||||
|
||||
Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
|
||||
|
||||
- reg: The base address of the GPIO unit's register bank.
|
||||
|
||||
- gpio-controller: This is a GPIO controller.
|
||||
|
||||
- #gpio-cells: Must be <2>. The first cell is the GPIO pin.
|
||||
|
||||
- interrupt-controller: The GPIO controller is also an interrupt
|
||||
controller, many of its pins may be configured as an interrupt
|
||||
source.
|
||||
|
||||
- #interrupt-cells: Must be <2>. The first cell is the GPIO pin
|
||||
connected to the interrupt source. The second cell is the interrupt
|
||||
triggering protocol and may have one of four values:
|
||||
1 - edge triggered on the rising edge.
|
||||
2 - edge triggered on the falling edge
|
||||
4 - level triggered active high.
|
||||
8 - level triggered active low.
|
||||
|
||||
- interrupts: Interrupt routing for each pin.
|
||||
|
||||
Example:
|
||||
|
||||
gpio-controller@1070000000800 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "cavium,octeon-3860-gpio";
|
||||
reg = <0x10700 0x00000800 0x0 0x100>;
|
||||
gpio-controller;
|
||||
/* Interrupts are specified by two parts:
|
||||
* 1) GPIO pin number (0..15)
|
||||
* 2) Triggering (1 - edge rising
|
||||
* 2 - edge falling
|
||||
* 4 - level active high
|
||||
* 8 - level active low)
|
||||
*/
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
/* The GPIO pin connect to 16 consecutive CUI bits */
|
||||
interrupts = <0 16>, <0 17>, <0 18>, <0 19>,
|
||||
<0 20>, <0 21>, <0 22>, <0 23>,
|
||||
<0 24>, <0 25>, <0 26>, <0 27>,
|
||||
<0 28>, <0 29>, <0 30>, <0 31>;
|
||||
};
|
|
@ -0,0 +1,17 @@
|
|||
* ARM Cirrus Logic CLPS711X SYSFLG1 MCTRL GPIOs
|
||||
|
||||
Required properties:
|
||||
- compatible: Should contain "cirrus,clps711x-mctrl-gpio".
|
||||
- gpio-controller: Marks the device node as a gpio controller.
|
||||
- #gpio-cells: Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify the gpio polarity:
|
||||
0 = Active high,
|
||||
1 = Active low.
|
||||
|
||||
Example:
|
||||
sysgpio: sysgpio {
|
||||
compatible = "cirrus,ep7312-mctrl-gpio",
|
||||
"cirrus,clps711x-mctrl-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
32
Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt
Normal file
32
Documentation/devicetree/bindings/gpio/fsl-imx-gpio.txt
Normal file
|
@ -0,0 +1,32 @@
|
|||
* Freescale i.MX/MXC GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "fsl,<soc>-gpio"
|
||||
- reg : Address and length of the register set for the device
|
||||
- interrupts : Should be the port interrupt shared by all 32 pins, if
|
||||
one number. If two numbers, the first one is the interrupt shared
|
||||
by low 16 pins and the second one is for high 16 pins.
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify the gpio polarity:
|
||||
0 = active high
|
||||
1 = active low
|
||||
- interrupt-controller: Marks the device node as an interrupt controller.
|
||||
- #interrupt-cells : Should be 2. The first cell is the GPIO number.
|
||||
The second cell bits[3:0] is used to specify trigger type and level flags:
|
||||
1 = low-to-high edge triggered.
|
||||
2 = high-to-low edge triggered.
|
||||
4 = active high level-sensitive.
|
||||
8 = active low level-sensitive.
|
||||
|
||||
Example:
|
||||
|
||||
gpio0: gpio@73f84000 {
|
||||
compatible = "fsl,imx51-gpio", "fsl,imx35-gpio";
|
||||
reg = <0x73f84000 0x4000>;
|
||||
interrupts = <50 51>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
22
Documentation/devicetree/bindings/gpio/gpio-74x164.txt
Normal file
22
Documentation/devicetree/bindings/gpio/gpio-74x164.txt
Normal file
|
@ -0,0 +1,22 @@
|
|||
* Generic 8-bits shift register GPIO driver
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "fairchild,74hc595"
|
||||
- reg : chip select number
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify the gpio polarity:
|
||||
0 = active high
|
||||
1 = active low
|
||||
- registers-number: Number of daisy-chained shift registers
|
||||
|
||||
Example:
|
||||
|
||||
gpio5: gpio5@0 {
|
||||
compatible = "fairchild,74hc595";
|
||||
reg = <0>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
registers-number = <4>;
|
||||
spi-max-frequency = <100000>;
|
||||
};
|
34
Documentation/devicetree/bindings/gpio/gpio-adnp.txt
Normal file
34
Documentation/devicetree/bindings/gpio/gpio-adnp.txt
Normal file
|
@ -0,0 +1,34 @@
|
|||
Avionic Design N-bit GPIO expander bindings
|
||||
|
||||
Required properties:
|
||||
- compatible: should be "ad,gpio-adnp"
|
||||
- reg: The I2C slave address for this device.
|
||||
- interrupt-parent: phandle of the parent interrupt controller.
|
||||
- interrupts: Interrupt specifier for the controllers interrupt.
|
||||
- #gpio-cells: Should be 2. The first cell is the GPIO number and the
|
||||
second cell is used to specify optional parameters:
|
||||
- bit 0: polarity (0: normal, 1: inverted)
|
||||
- gpio-controller: Marks the device as a GPIO controller
|
||||
- nr-gpios: The number of pins supported by the controller.
|
||||
|
||||
The GPIO expander can optionally be used as an interrupt controller, in
|
||||
which case it uses the default two cell specifier as described in
|
||||
Documentation/devicetree/bindings/interrupt-controller/interrupts.txt.
|
||||
|
||||
Example:
|
||||
|
||||
gpioext: gpio-controller@41 {
|
||||
compatible = "ad,gpio-adnp";
|
||||
reg = <0x41>;
|
||||
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <160 1>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
nr-gpios = <64>;
|
||||
};
|
52
Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt
Normal file
52
Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt
Normal file
|
@ -0,0 +1,52 @@
|
|||
Broadcom Kona Family GPIO
|
||||
=========================
|
||||
|
||||
This GPIO driver is used in the following Broadcom SoCs:
|
||||
BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
|
||||
|
||||
The Broadcom GPIO Controller IP can be configured prior to synthesis to
|
||||
support up to 8 banks of 32 GPIOs where each bank has its own IRQ. The
|
||||
GPIO controller only supports edge, not level, triggering of interrupts.
|
||||
|
||||
Required properties
|
||||
-------------------
|
||||
|
||||
- compatible: "brcm,bcm11351-gpio", "brcm,kona-gpio"
|
||||
- reg: Physical base address and length of the controller's registers.
|
||||
- interrupts: The interrupt outputs from the controller. There is one GPIO
|
||||
interrupt per GPIO bank. The number of interrupts listed depends on the
|
||||
number of GPIO banks on the SoC. The interrupts must be ordered by bank,
|
||||
starting with bank 0. There is always a 1:1 mapping between banks and
|
||||
IRQs.
|
||||
- #gpio-cells: Should be <2>. The first cell is the pin number, the second
|
||||
cell is used to specify optional parameters:
|
||||
- bit 0 specifies polarity (0 for normal, 1 for inverted)
|
||||
See also "gpio-specifier" in .../devicetree/bindings/gpio/gpio.txt.
|
||||
- #interrupt-cells: Should be <2>. The first cell is the GPIO number. The
|
||||
second cell is used to specify flags. The following subset of flags is
|
||||
supported:
|
||||
- trigger type (bits[1:0]):
|
||||
1 = low-to-high edge triggered.
|
||||
2 = high-to-low edge triggered.
|
||||
3 = low-to-high or high-to-low edge triggered
|
||||
Valid values are 1, 2, 3
|
||||
See also .../devicetree/bindings/interrupt-controller/interrupts.txt.
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
- interrupt-controller: Marks the device node as an interrupt controller.
|
||||
|
||||
Example:
|
||||
gpio: gpio@35003000 {
|
||||
compatible = "brcm,bcm11351-gpio", "brcm,kona-gpio";
|
||||
reg = <0x35003000 0x800>;
|
||||
interrupts =
|
||||
<GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH
|
||||
GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH
|
||||
GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH
|
||||
GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH
|
||||
GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH
|
||||
GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
};
|
28
Documentation/devicetree/bindings/gpio/gpio-clps711x.txt
Normal file
28
Documentation/devicetree/bindings/gpio/gpio-clps711x.txt
Normal file
|
@ -0,0 +1,28 @@
|
|||
Cirrus Logic CLPS711X GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "cirrus,clps711x-gpio"
|
||||
- reg: Physical base GPIO controller registers location and length.
|
||||
There should be two registers, first is DATA register, the second
|
||||
is DIRECTION.
|
||||
- gpio-controller: Marks the device node as a gpio controller.
|
||||
- #gpio-cells: Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify the gpio polarity:
|
||||
0 = active high
|
||||
1 = active low
|
||||
|
||||
Note: Each GPIO port should have an alias correctly numbered in "aliases"
|
||||
node.
|
||||
|
||||
Example:
|
||||
|
||||
aliases {
|
||||
gpio0 = &porta;
|
||||
};
|
||||
|
||||
porta: gpio@80000000 {
|
||||
compatible = "cirrus,clps711x-gpio";
|
||||
reg = <0x80000000 0x1>, <0x80000040 0x1>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
62
Documentation/devicetree/bindings/gpio/gpio-davinci.txt
Normal file
62
Documentation/devicetree/bindings/gpio/gpio-davinci.txt
Normal file
|
@ -0,0 +1,62 @@
|
|||
Davinci/Keystone GPIO controller bindings
|
||||
|
||||
Required Properties:
|
||||
- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio"
|
||||
|
||||
- reg: Physical base address of the controller and the size of memory mapped
|
||||
registers.
|
||||
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
|
||||
- #gpio-cells : Should be two.
|
||||
- first cell is the pin number
|
||||
- second cell is used to specify optional parameters (unused)
|
||||
|
||||
- interrupt-parent: phandle of the parent interrupt controller.
|
||||
|
||||
- interrupts: Array of GPIO interrupt number. Only banked or unbanked IRQs are
|
||||
supported at a time.
|
||||
|
||||
- ti,ngpio: The number of GPIO pins supported.
|
||||
|
||||
- ti,davinci-gpio-unbanked: The number of GPIOs that have an individual interrupt
|
||||
line to processor.
|
||||
|
||||
The GPIO controller also acts as an interrupt controller. It uses the default
|
||||
two cells specifier as described in Documentation/devicetree/bindings/
|
||||
interrupt-controller/interrupts.txt.
|
||||
|
||||
Example:
|
||||
|
||||
gpio: gpio@1e26000 {
|
||||
compatible = "ti,dm6441-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x226000 0x1000>;
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <42 IRQ_TYPE_EDGE_BOTH 43 IRQ_TYPE_EDGE_BOTH
|
||||
44 IRQ_TYPE_EDGE_BOTH 45 IRQ_TYPE_EDGE_BOTH
|
||||
46 IRQ_TYPE_EDGE_BOTH 47 IRQ_TYPE_EDGE_BOTH
|
||||
48 IRQ_TYPE_EDGE_BOTH 49 IRQ_TYPE_EDGE_BOTH
|
||||
50 IRQ_TYPE_EDGE_BOTH>;
|
||||
ti,ngpio = <144>;
|
||||
ti,davinci-gpio-unbanked = <0>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led1 {
|
||||
label = "davinci:green:usr1";
|
||||
gpios = <&gpio 10 GPIO_ACTIVE_HIGH>;
|
||||
...
|
||||
};
|
||||
|
||||
led2 {
|
||||
label = "davinci:red:debug1";
|
||||
gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
|
||||
...
|
||||
};
|
||||
};
|
39
Documentation/devicetree/bindings/gpio/gpio-dsp-keystone.txt
Normal file
39
Documentation/devicetree/bindings/gpio/gpio-dsp-keystone.txt
Normal file
|
@ -0,0 +1,39 @@
|
|||
Keystone 2 DSP GPIO controller bindings
|
||||
|
||||
HOST OS userland running on ARM can send interrupts to DSP cores using
|
||||
the DSP GPIO controller IP. It provides 28 IRQ signals per each DSP core.
|
||||
This is one of the component used by the IPC mechanism used on Keystone SOCs.
|
||||
|
||||
For example TCI6638K2K SoC has 8 DSP GPIO controllers:
|
||||
- 8 for C66x CorePacx CPUs 0-7
|
||||
|
||||
Keystone 2 DSP GPIO controller has specific features:
|
||||
- each GPIO can be configured only as output pin;
|
||||
- setting GPIO value to 1 causes IRQ generation on target DSP core;
|
||||
- reading pin value returns 0 - if IRQ was handled or 1 - IRQ is still
|
||||
pending.
|
||||
|
||||
Required Properties:
|
||||
- compatible: should be "ti,keystone-dsp-gpio"
|
||||
- ti,syscon-dev: phandle/offset pair. The phandle to syscon used to
|
||||
access device state control registers and the offset of device's specific
|
||||
registers within device state control registers range.
|
||||
- gpio-controller: Marks the device node as a gpio controller.
|
||||
- #gpio-cells: Should be 2.
|
||||
|
||||
Please refer to gpio.txt in this directory for details of the common GPIO
|
||||
bindings used by client devices.
|
||||
|
||||
Example:
|
||||
dspgpio0: keystone_dsp_gpio@02620240 {
|
||||
compatible = "ti,keystone-dsp-gpio";
|
||||
ti,syscon-dev = <&devctrl 0x240>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
dsp0: dsp0 {
|
||||
compatible = "linux,rproc-user";
|
||||
...
|
||||
kick-gpio = <&dspgpio0 27>;
|
||||
};
|
25
Documentation/devicetree/bindings/gpio/gpio-fan.txt
Normal file
25
Documentation/devicetree/bindings/gpio/gpio-fan.txt
Normal file
|
@ -0,0 +1,25 @@
|
|||
Bindings for fan connected to GPIO lines
|
||||
|
||||
Required properties:
|
||||
- compatible : "gpio-fan"
|
||||
- gpios: Specifies the pins that map to bits in the control value,
|
||||
ordered MSB-->LSB.
|
||||
- gpio-fan,speed-map: A mapping of possible fan RPM speeds and the
|
||||
control value that should be set to achieve them. This array
|
||||
must have the RPM values in ascending order.
|
||||
|
||||
Optional properties:
|
||||
- alarm-gpios: This pin going active indicates something is wrong with
|
||||
the fan, and a udev event will be fired.
|
||||
|
||||
Examples:
|
||||
|
||||
gpio_fan {
|
||||
compatible = "gpio-fan";
|
||||
gpios = <&gpio1 14 1
|
||||
&gpio1 13 1>;
|
||||
gpio-fan,speed-map = <0 0
|
||||
3000 1
|
||||
6000 2>;
|
||||
alarm-gpios = <&gpio1 15 1>;
|
||||
};
|
26
Documentation/devicetree/bindings/gpio/gpio-grgpio.txt
Normal file
26
Documentation/devicetree/bindings/gpio/gpio-grgpio.txt
Normal file
|
@ -0,0 +1,26 @@
|
|||
Aeroflex Gaisler GRGPIO General Purpose I/O cores.
|
||||
|
||||
The GRGPIO GPIO core is available in the GRLIB VHDL IP core library.
|
||||
|
||||
Note: In the ordinary environment for the GRGPIO core, a Leon SPARC system,
|
||||
these properties are built from information in the AMBA plug&play.
|
||||
|
||||
Required properties:
|
||||
|
||||
- name : Should be "GAISLER_GPIO" or "01_01a"
|
||||
|
||||
- reg : Address and length of the register set for the device
|
||||
|
||||
- interrupts : Interrupt numbers for this device
|
||||
|
||||
Optional properties:
|
||||
|
||||
- nbits : The number of gpio lines. If not present driver assumes 32 lines.
|
||||
|
||||
- irqmap : An array with an index for each gpio line. An index is either a valid
|
||||
index into the interrupts property array, or 0xffffffff that indicates
|
||||
no irq for that line. Driver provides no interrupt support if not
|
||||
present.
|
||||
|
||||
For further information look in the documentation for the GLIB IP core library:
|
||||
http://www.gaisler.com/products/grlib/grip.pdf
|
37
Documentation/devicetree/bindings/gpio/gpio-lp3943.txt
Normal file
37
Documentation/devicetree/bindings/gpio/gpio-lp3943.txt
Normal file
|
@ -0,0 +1,37 @@
|
|||
TI/National Semiconductor LP3943 GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible: "ti,lp3943-gpio"
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
- #gpio-cells: Should be 2. See gpio.txt in this directory for a
|
||||
description of the cells format.
|
||||
|
||||
Example:
|
||||
Simple LED controls with LP3943 GPIO controller
|
||||
|
||||
&i2c4 {
|
||||
lp3943@60 {
|
||||
compatible = "ti,lp3943";
|
||||
reg = <0x60>;
|
||||
|
||||
gpioex: gpio {
|
||||
compatible = "ti,lp3943-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
indicator1 {
|
||||
label = "indi1";
|
||||
gpios = <&gpioex 9 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
indicator2 {
|
||||
label = "indi2";
|
||||
gpios = <&gpioex 10 GPIO_ACTIVE_LOW>;
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
83
Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt
Normal file
83
Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt
Normal file
|
@ -0,0 +1,83 @@
|
|||
Microchip MCP2308/MCP23S08/MCP23017/MCP23S17 driver for
|
||||
8-/16-bit I/O expander with serial interface (I2C/SPI)
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be
|
||||
- "mcp,mcp23s08" (DEPRECATED) for 8 GPIO SPI version
|
||||
- "mcp,mcp23s17" (DEPRECATED) for 16 GPIO SPI version
|
||||
- "mcp,mcp23008" (DEPRECATED) for 8 GPIO I2C version or
|
||||
- "mcp,mcp23017" (DEPRECATED) for 16 GPIO I2C version of the chip
|
||||
|
||||
- "microchip,mcp23s08" for 8 GPIO SPI version
|
||||
- "microchip,mcp23s17" for 16 GPIO SPI version
|
||||
- "microchip,mcp23008" for 8 GPIO I2C version or
|
||||
- "microchip,mcp23017" for 16 GPIO I2C version of the chip
|
||||
NOTE: Do not use the old mcp prefix any more. It is deprecated and will be
|
||||
removed.
|
||||
- #gpio-cells : Should be two.
|
||||
- first cell is the pin number
|
||||
- second cell is used to specify flags. Flags are currently unused.
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- reg : For an address on its bus. I2C uses this a the I2C address of the chip.
|
||||
SPI uses this to specify the chipselect line which the chip is
|
||||
connected to. The driver and the SPI variant of the chip support
|
||||
multiple chips on the same chipselect. Have a look at
|
||||
microchip,spi-present-mask below.
|
||||
|
||||
Required device specific properties (only for SPI chips):
|
||||
- mcp,spi-present-mask (DEPRECATED)
|
||||
- microchip,spi-present-mask : This is a present flag, that makes only sense for SPI
|
||||
chips - as the name suggests. Multiple SPI chips can share the same
|
||||
SPI chipselect. Set a bit in bit0-7 in this mask to 1 if there is a
|
||||
chip connected with the corresponding spi address set. For example if
|
||||
you have a chip with address 3 connected, you have to set bit3 to 1,
|
||||
which is 0x08. mcp23s08 chip variant only supports bits 0-3. It is not
|
||||
possible to mix mcp23s08 and mcp23s17 on the same chipselect. Set at
|
||||
least one bit to 1 for SPI chips.
|
||||
NOTE: Do not use the old mcp prefix any more. It is deprecated and will be
|
||||
removed.
|
||||
- spi-max-frequency = The maximum frequency this chip is able to handle
|
||||
|
||||
Optional properties:
|
||||
- #interrupt-cells : Should be two.
|
||||
- first cell is the pin number
|
||||
- second cell is used to specify flags.
|
||||
- interrupt-controller: Marks the device node as a interrupt controller.
|
||||
NOTE: The interrupt functionality is only supported for i2c versions of the
|
||||
chips. The spi chips can also do the interrupts, but this is not supported by
|
||||
the linux driver yet.
|
||||
|
||||
Optional device specific properties:
|
||||
- microchip,irq-mirror: Sets the mirror flag in the IOCON register. Devices
|
||||
with two interrupt outputs (these are the devices ending with 17 and
|
||||
those that have 16 IOs) have two IO banks: IO 0-7 form bank 1 and
|
||||
IO 8-15 are bank 2. These chips have two different interrupt outputs:
|
||||
One for bank 1 and another for bank 2. If irq-mirror is set, both
|
||||
interrupts are generated regardless of the bank that an input change
|
||||
occurred on. If it is not set, the interrupt are only generated for the
|
||||
bank they belong to.
|
||||
On devices with only one interrupt output this property is useless.
|
||||
|
||||
Example I2C (with interrupt):
|
||||
gpiom1: gpio@20 {
|
||||
compatible = "microchip,mcp23017";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x20>;
|
||||
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells=<2>;
|
||||
microchip,irq-mirror;
|
||||
};
|
||||
|
||||
Example SPI:
|
||||
gpiom1: gpio@0 {
|
||||
compatible = "microchip,mcp23s17";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
spi-present-mask = <0x01>;
|
||||
reg = <0>;
|
||||
spi-max-frequency = <1000000>;
|
||||
};
|
38
Documentation/devicetree/bindings/gpio/gpio-mm-lantiq.txt
Normal file
38
Documentation/devicetree/bindings/gpio/gpio-mm-lantiq.txt
Normal file
|
@ -0,0 +1,38 @@
|
|||
Lantiq SoC External Bus memory mapped GPIO controller
|
||||
|
||||
By attaching hardware latches to the EBU it is possible to create output
|
||||
only gpios. This driver configures a special memory address, which when
|
||||
written to outputs 16 bit to the latches.
|
||||
|
||||
The node describing the memory mapped GPIOs needs to be a child of the node
|
||||
describing the "lantiq,localbus".
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "lantiq,gpio-mm-lantiq"
|
||||
- reg : Address and length of the register set for the device
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify optional parameters (currently
|
||||
unused).
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
|
||||
Optional properties:
|
||||
- lantiq,shadow : The default value that we shall assume as already set on the
|
||||
shift register cascade.
|
||||
|
||||
Example:
|
||||
|
||||
localbus@0 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0 0x0 0x3ffffff /* addrsel0 */
|
||||
1 0 0x4000000 0x4000010>; /* addsel1 */
|
||||
compatible = "lantiq,localbus", "simple-bus";
|
||||
|
||||
gpio_mm0: gpio@4000000 {
|
||||
compatible = "lantiq,gpio-mm";
|
||||
reg = <1 0x0 0x10>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
lantiq,shadow = <0x77f>
|
||||
};
|
||||
}
|
26
Documentation/devicetree/bindings/gpio/gpio-msm.txt
Normal file
26
Documentation/devicetree/bindings/gpio/gpio-msm.txt
Normal file
|
@ -0,0 +1,26 @@
|
|||
MSM GPIO controller bindings
|
||||
|
||||
Required properties:
|
||||
- compatible:
|
||||
- "qcom,msm-gpio" for MSM controllers
|
||||
- #gpio-cells : Should be two.
|
||||
- first cell is the pin number
|
||||
- second cell is used to specify optional parameters (unused)
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- #interrupt-cells : Should be 2.
|
||||
- interrupt-controller: Mark the device node as an interrupt controller
|
||||
- interrupts : Specify the TLMM summary interrupt number
|
||||
- ngpio : Specify the number of MSM GPIOs
|
||||
|
||||
Example:
|
||||
|
||||
msmgpio: gpio@fd510000 {
|
||||
compatible = "qcom,msm-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0xfd510000 0x4000>;
|
||||
interrupts = <0 208 0>;
|
||||
ngpio = <150>;
|
||||
};
|
53
Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
Normal file
53
Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
Normal file
|
@ -0,0 +1,53 @@
|
|||
* Marvell EBU GPIO controller
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible : Should be "marvell,orion-gpio", "marvell,mv78200-gpio"
|
||||
or "marvell,armadaxp-gpio". "marvell,orion-gpio" should be used for
|
||||
Orion, Kirkwood, Dove, Discovery (except MV78200) and Armada
|
||||
370. "marvell,mv78200-gpio" should be used for the Discovery
|
||||
MV78200. "marvel,armadaxp-gpio" should be used for all Armada XP
|
||||
SoCs (MV78230, MV78260, MV78460).
|
||||
|
||||
- reg: Address and length of the register set for the device. Only one
|
||||
entry is expected, except for the "marvell,armadaxp-gpio" variant
|
||||
for which two entries are expected: one for the general registers,
|
||||
one for the per-cpu registers.
|
||||
|
||||
- interrupts: The list of interrupts that are used for all the pins
|
||||
managed by this GPIO bank. There can be more than one interrupt
|
||||
(example: 1 interrupt per 8 pins on Armada XP, which means 4
|
||||
interrupts per bank of 32 GPIOs).
|
||||
|
||||
- interrupt-controller: identifies the node as an interrupt controller
|
||||
|
||||
- #interrupt-cells: specifies the number of cells needed to encode an
|
||||
interrupt source. Should be two.
|
||||
The first cell is the GPIO number.
|
||||
The second cell is used to specify flags:
|
||||
bits[3:0] trigger type and level flags:
|
||||
1 = low-to-high edge triggered.
|
||||
2 = high-to-low edge triggered.
|
||||
4 = active high level-sensitive.
|
||||
8 = active low level-sensitive.
|
||||
|
||||
- gpio-controller: marks the device node as a gpio controller
|
||||
|
||||
- ngpios: number of GPIOs this controller has
|
||||
|
||||
- #gpio-cells: Should be two. The first cell is the pin number. The
|
||||
second cell is reserved for flags, unused at the moment.
|
||||
|
||||
Example:
|
||||
|
||||
gpio0: gpio@d0018100 {
|
||||
compatible = "marvell,armadaxp-gpio";
|
||||
reg = <0xd0018100 0x40>,
|
||||
<0xd0018800 0x30>;
|
||||
ngpios = <32>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <16>, <17>, <18>, <19>;
|
||||
};
|
88
Documentation/devicetree/bindings/gpio/gpio-mxs.txt
Normal file
88
Documentation/devicetree/bindings/gpio/gpio-mxs.txt
Normal file
|
@ -0,0 +1,88 @@
|
|||
* Freescale MXS GPIO controller
|
||||
|
||||
The Freescale MXS GPIO controller is part of MXS PIN controller. The
|
||||
GPIOs are organized in port/bank. Each port consists of 32 GPIOs.
|
||||
|
||||
As the GPIO controller is embedded in the PIN controller and all the
|
||||
GPIO ports share the same IO space with PIN controller, the GPIO node
|
||||
will be represented as sub-nodes of MXS pinctrl node.
|
||||
|
||||
Required properties for GPIO node:
|
||||
- compatible : Should be "fsl,<soc>-gpio". The supported SoCs include
|
||||
imx23 and imx28.
|
||||
- interrupts : Should be the port interrupt shared by all 32 pins.
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify the gpio polarity:
|
||||
0 = active high
|
||||
1 = active low
|
||||
- interrupt-controller: Marks the device node as an interrupt controller.
|
||||
- #interrupt-cells : Should be 2. The first cell is the GPIO number.
|
||||
The second cell bits[3:0] is used to specify trigger type and level flags:
|
||||
1 = low-to-high edge triggered.
|
||||
2 = high-to-low edge triggered.
|
||||
4 = active high level-sensitive.
|
||||
8 = active low level-sensitive.
|
||||
|
||||
Note: Each GPIO port should have an alias correctly numbered in "aliases"
|
||||
node.
|
||||
|
||||
Examples:
|
||||
|
||||
aliases {
|
||||
gpio0 = &gpio0;
|
||||
gpio1 = &gpio1;
|
||||
gpio2 = &gpio2;
|
||||
gpio3 = &gpio3;
|
||||
gpio4 = &gpio4;
|
||||
};
|
||||
|
||||
pinctrl@80018000 {
|
||||
compatible = "fsl,imx28-pinctrl", "simple-bus";
|
||||
reg = <0x80018000 2000>;
|
||||
|
||||
gpio0: gpio@0 {
|
||||
compatible = "fsl,imx28-gpio";
|
||||
interrupts = <127>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio1: gpio@1 {
|
||||
compatible = "fsl,imx28-gpio";
|
||||
interrupts = <126>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio2: gpio@2 {
|
||||
compatible = "fsl,imx28-gpio";
|
||||
interrupts = <125>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio3: gpio@3 {
|
||||
compatible = "fsl,imx28-gpio";
|
||||
interrupts = <124>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio4: gpio@4 {
|
||||
compatible = "fsl,imx28-gpio";
|
||||
interrupts = <123>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
};
|
31
Documentation/devicetree/bindings/gpio/gpio-nmk.txt
Normal file
31
Documentation/devicetree/bindings/gpio/gpio-nmk.txt
Normal file
|
@ -0,0 +1,31 @@
|
|||
Nomadik GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "st,nomadik-gpio".
|
||||
- reg : Physical base address and length of the controller's registers.
|
||||
- interrupts : The interrupt outputs from the controller.
|
||||
- #gpio-cells : Should be two:
|
||||
The first cell is the pin number.
|
||||
The second cell is used to specify optional parameters:
|
||||
- bits[3:0] trigger type and level flags:
|
||||
1 = low-to-high edge triggered.
|
||||
2 = high-to-low edge triggered.
|
||||
4 = active high level-sensitive.
|
||||
8 = active low level-sensitive.
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- interrupt-controller : Marks the device node as an interrupt controller.
|
||||
- gpio-bank : Specifies which bank a controller owns.
|
||||
- st,supports-sleepmode : Specifies whether controller can sleep or not
|
||||
|
||||
Example:
|
||||
|
||||
gpio1: gpio@8012e080 {
|
||||
compatible = "st,nomadik-gpio";
|
||||
reg = <0x8012e080 0x80>;
|
||||
interrupts = <0 120 0x4>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
st,supports-sleepmode;
|
||||
gpio-bank = <1>;
|
||||
};
|
39
Documentation/devicetree/bindings/gpio/gpio-omap.txt
Normal file
39
Documentation/devicetree/bindings/gpio/gpio-omap.txt
Normal file
|
@ -0,0 +1,39 @@
|
|||
OMAP GPIO controller bindings
|
||||
|
||||
Required properties:
|
||||
- compatible:
|
||||
- "ti,omap2-gpio" for OMAP2 controllers
|
||||
- "ti,omap3-gpio" for OMAP3 controllers
|
||||
- "ti,omap4-gpio" for OMAP4 controllers
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- #gpio-cells : Should be two.
|
||||
- first cell is the pin number
|
||||
- second cell is used to specify optional parameters (unused)
|
||||
- interrupt-controller: Mark the device node as an interrupt controller.
|
||||
- #interrupt-cells : Should be 2.
|
||||
The first cell is the GPIO number.
|
||||
The second cell is used to specify flags:
|
||||
bits[3:0] trigger type and level flags:
|
||||
1 = low-to-high edge triggered.
|
||||
2 = high-to-low edge triggered.
|
||||
4 = active high level-sensitive.
|
||||
8 = active low level-sensitive.
|
||||
|
||||
OMAP specific properties:
|
||||
- ti,hwmods: Name of the hwmod associated to the GPIO:
|
||||
"gpio<X>", <X> being the 1-based instance number
|
||||
from the HW spec.
|
||||
- ti,gpio-always-on: Indicates if a GPIO bank is always powered and
|
||||
so will never lose its logic state.
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
gpio4: gpio4 {
|
||||
compatible = "ti,omap4-gpio";
|
||||
ti,hwmods = "gpio4";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
27
Documentation/devicetree/bindings/gpio/gpio-palmas.txt
Normal file
27
Documentation/devicetree/bindings/gpio/gpio-palmas.txt
Normal file
|
@ -0,0 +1,27 @@
|
|||
Palmas GPIO controller bindings
|
||||
|
||||
Required properties:
|
||||
- compatible:
|
||||
- "ti,palams-gpio" for palma series of the GPIO controller
|
||||
- "ti,tps80036-gpio" for Palma series device TPS80036.
|
||||
- "ti,tps65913-gpio" for palma series device TPS65913.
|
||||
- "ti,tps65914-gpio" for palma series device TPS65914.
|
||||
- #gpio-cells : Should be two.
|
||||
- first cell is the gpio pin number
|
||||
- second cell is used to specify the gpio polarity:
|
||||
0 = active high
|
||||
1 = active low
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
|
||||
Note: This gpio node will be sub node of palmas node.
|
||||
|
||||
Example:
|
||||
palmas: tps65913@58 {
|
||||
:::::::::::
|
||||
palmas_gpio: palmas_gpio {
|
||||
compatible = "ti,palmas-gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
:::::::::::
|
||||
};
|
39
Documentation/devicetree/bindings/gpio/gpio-pca953x.txt
Normal file
39
Documentation/devicetree/bindings/gpio/gpio-pca953x.txt
Normal file
|
@ -0,0 +1,39 @@
|
|||
* NXP PCA953x I2C GPIO multiplexer
|
||||
|
||||
Required properties:
|
||||
- compatible: Has to contain one of the following:
|
||||
nxp,pca9505
|
||||
nxp,pca9534
|
||||
nxp,pca9535
|
||||
nxp,pca9536
|
||||
nxp,pca9537
|
||||
nxp,pca9538
|
||||
nxp,pca9539
|
||||
nxp,pca9554
|
||||
nxp,pca9555
|
||||
nxp,pca9556
|
||||
nxp,pca9557
|
||||
nxp,pca9574
|
||||
nxp,pca9575
|
||||
nxp,pca9698
|
||||
maxim,max7310
|
||||
maxim,max7312
|
||||
maxim,max7313
|
||||
maxim,max7315
|
||||
ti,pca6107
|
||||
ti,tca6408
|
||||
ti,tca6416
|
||||
ti,tca6424
|
||||
exar,xra1202
|
||||
|
||||
Example:
|
||||
|
||||
|
||||
gpio@20 {
|
||||
compatible = "nxp,pca9505";
|
||||
reg = <0x20>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pca9505>;
|
||||
interrupt-parent = <&gpio3>;
|
||||
interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
|
||||
};
|
71
Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt
Normal file
71
Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt
Normal file
|
@ -0,0 +1,71 @@
|
|||
* PCF857x-compatible I/O expanders
|
||||
|
||||
The PCF857x-compatible chips have "quasi-bidirectional" I/O lines that can be
|
||||
driven high by a pull-up current source or driven low to ground. This combines
|
||||
the direction and output level into a single bit per line, which can't be read
|
||||
back. We can't actually know at initialization time whether a line is configured
|
||||
(a) as output and driving the signal low/high, or (b) as input and reporting a
|
||||
low/high value, without knowing the last value written since the chip came out
|
||||
of reset (if any). The only reliable solution for setting up line direction is
|
||||
thus to do it explicitly.
|
||||
|
||||
Required Properties:
|
||||
|
||||
- compatible: should be one of the following.
|
||||
- "maxim,max7328": For the Maxim MAX7378
|
||||
- "maxim,max7329": For the Maxim MAX7329
|
||||
- "nxp,pca8574": For the NXP PCA8574
|
||||
- "nxp,pca8575": For the NXP PCA8575
|
||||
- "nxp,pca9670": For the NXP PCA9670
|
||||
- "nxp,pca9671": For the NXP PCA9671
|
||||
- "nxp,pca9672": For the NXP PCA9672
|
||||
- "nxp,pca9673": For the NXP PCA9673
|
||||
- "nxp,pca9674": For the NXP PCA9674
|
||||
- "nxp,pca9675": For the NXP PCA9675
|
||||
- "nxp,pcf8574": For the NXP PCF8574
|
||||
- "nxp,pcf8574a": For the NXP PCF8574A
|
||||
- "nxp,pcf8575": For the NXP PCF8575
|
||||
- "ti,tca9554": For the TI TCA9554
|
||||
|
||||
- reg: I2C slave address.
|
||||
|
||||
- gpio-controller: Marks the device node as a gpio controller.
|
||||
- #gpio-cells: Should be 2. The first cell is the GPIO number and the second
|
||||
cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. Only the
|
||||
GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported.
|
||||
|
||||
Optional Properties:
|
||||
|
||||
- lines-initial-states: Bitmask that specifies the initial state of each
|
||||
line. When a bit is set to zero, the corresponding line will be initialized to
|
||||
the input (pulled-up) state. When the bit is set to one, the line will be
|
||||
initialized the the low-level output state. If the property is not specified
|
||||
all lines will be initialized to the input state.
|
||||
|
||||
The I/O expander can detect input state changes, and thus optionally act as
|
||||
an interrupt controller. When the expander interrupt line is connected all the
|
||||
following properties must be set. For more information please see the
|
||||
interrupt controller device tree bindings documentation available at
|
||||
Documentation/devicetree/bindings/interrupt-controller/interrupts.txt.
|
||||
|
||||
- interrupt-controller: Identifies the node as an interrupt controller.
|
||||
- #interrupt-cells: Number of cells to encode an interrupt source, shall be 2.
|
||||
- interrupt-parent: phandle of the parent interrupt controller.
|
||||
- interrupts: Interrupt specifier for the controllers interrupt.
|
||||
|
||||
|
||||
Please refer to gpio.txt in this directory for details of the common GPIO
|
||||
bindings used by client devices.
|
||||
|
||||
Example: PCF8575 I/O expander node
|
||||
|
||||
pcf8575: gpio@20 {
|
||||
compatible = "nxp,pcf8575";
|
||||
reg = <0x20>;
|
||||
interrupt-parent = <&irqpin2>;
|
||||
interrupts = <3 0>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
36
Documentation/devicetree/bindings/gpio/gpio-poweroff.txt
Normal file
36
Documentation/devicetree/bindings/gpio/gpio-poweroff.txt
Normal file
|
@ -0,0 +1,36 @@
|
|||
Driver a GPIO line that can be used to turn the power off.
|
||||
|
||||
The driver supports both level triggered and edge triggered power off.
|
||||
At driver load time, the driver will request the given gpio line and
|
||||
install a pm_power_off handler. If the optional properties 'input' is
|
||||
not found, the GPIO line will be driven in the inactive
|
||||
state. Otherwise its configured as an input.
|
||||
|
||||
When the pm_power_off is called, the gpio is configured as an output,
|
||||
and drive active, so triggering a level triggered power off
|
||||
condition. This will also cause an inactive->active edge condition, so
|
||||
triggering positive edge triggered power off. After a delay of 100ms,
|
||||
the GPIO is set to inactive, thus causing an active->inactive edge,
|
||||
triggering negative edge triggered power off. After another 100ms
|
||||
delay the GPIO is driver active again. If the power is still on and
|
||||
the CPU still running after a 3000ms delay, a WARN_ON(1) is emitted.
|
||||
|
||||
Required properties:
|
||||
- compatible : should be "gpio-poweroff".
|
||||
- gpios : The GPIO to set high/low, see "gpios property" in
|
||||
Documentation/devicetree/bindings/gpio/gpio.txt. If the pin should be
|
||||
low to power down the board set it to "Active Low", otherwise set
|
||||
gpio to "Active High".
|
||||
|
||||
Optional properties:
|
||||
- input : Initially configure the GPIO line as an input. Only reconfigure
|
||||
it to an output when the pm_power_off function is called. If this optional
|
||||
property is not specified, the GPIO is initialized as an output in its
|
||||
inactive state.
|
||||
|
||||
Examples:
|
||||
|
||||
gpio-poweroff {
|
||||
compatible = "gpio-poweroff";
|
||||
gpios = <&gpio 4 0>;
|
||||
};
|
54
Documentation/devicetree/bindings/gpio/gpio-restart.txt
Normal file
54
Documentation/devicetree/bindings/gpio/gpio-restart.txt
Normal file
|
@ -0,0 +1,54 @@
|
|||
Drive a GPIO line that can be used to restart the system from a restart
|
||||
handler.
|
||||
|
||||
This binding supports level and edge triggered reset. At driver load
|
||||
time, the driver will request the given gpio line and install a restart
|
||||
handler. If the optional properties 'open-source' is not found, the GPIO line
|
||||
will be driven in the inactive state. Otherwise its not driven until
|
||||
the restart is initiated.
|
||||
|
||||
When the system is restarted, the restart handler will be invoked in
|
||||
priority order. The gpio is configured as an output, and driven active,
|
||||
triggering a level triggered reset condition. This will also cause an
|
||||
inactive->active edge condition, triggering positive edge triggered
|
||||
reset. After a delay specified by active-delay, the GPIO is set to
|
||||
inactive, thus causing an active->inactive edge, triggering negative edge
|
||||
triggered reset. After a delay specified by inactive-delay, the GPIO
|
||||
is driven active again. After a delay specified by wait-delay, the
|
||||
restart handler completes allowing other restart handlers to be attempted.
|
||||
|
||||
Required properties:
|
||||
- compatible : should be "gpio-restart".
|
||||
- gpios : The GPIO to set high/low, see "gpios property" in
|
||||
Documentation/devicetree/bindings/gpio/gpio.txt. If the pin should be
|
||||
low to reset the board set it to "Active Low", otherwise set
|
||||
gpio to "Active High".
|
||||
|
||||
Optional properties:
|
||||
- open-source : Treat the GPIO as being open source and defer driving
|
||||
it to when the restart is initiated. If this optional property is not
|
||||
specified, the GPIO is initialized as an output in its inactive state.
|
||||
- priority : A priority ranging from 0 to 255 (default 128) according to
|
||||
the following guidelines:
|
||||
0: Restart handler of last resort, with limited restart
|
||||
capabilities
|
||||
128: Default restart handler; use if no other restart handler is
|
||||
expected to be available, and/or if restart functionality is
|
||||
sufficient to restart the entire system
|
||||
255: Highest priority restart handler, will preempt all other
|
||||
restart handlers
|
||||
- active-delay: Delay (default 100) to wait after driving gpio active [ms]
|
||||
- inactive-delay: Delay (default 100) to wait after driving gpio inactive [ms]
|
||||
- wait-delay: Delay (default 3000) to wait after completing restart
|
||||
sequence [ms]
|
||||
|
||||
Examples:
|
||||
|
||||
gpio-restart {
|
||||
compatible = "gpio-restart";
|
||||
gpios = <&gpio 4 0>;
|
||||
priority = <128>;
|
||||
active-delay = <100>;
|
||||
inactive-delay = <100>;
|
||||
wait-delay = <3000>;
|
||||
};
|
41
Documentation/devicetree/bindings/gpio/gpio-samsung.txt
Normal file
41
Documentation/devicetree/bindings/gpio/gpio-samsung.txt
Normal file
|
@ -0,0 +1,41 @@
|
|||
Samsung Exynos4 GPIO Controller
|
||||
|
||||
Required properties:
|
||||
- compatible: Compatible property value should be "samsung,exynos4-gpio>".
|
||||
|
||||
- reg: Physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
|
||||
- #gpio-cells: Should be 4. The syntax of the gpio specifier used by client nodes
|
||||
should be the following with values derived from the SoC user manual.
|
||||
<[phandle of the gpio controller node]
|
||||
[pin number within the gpio controller]
|
||||
[mux function]
|
||||
[flags and pull up/down]
|
||||
[drive strength]>
|
||||
|
||||
Values for gpio specifier:
|
||||
- Pin number: is a value between 0 to 7.
|
||||
- Flags and Pull Up/Down: 0 - Pull Up/Down Disabled.
|
||||
1 - Pull Down Enabled.
|
||||
3 - Pull Up Enabled.
|
||||
Bit 16 (0x00010000) - Input is active low.
|
||||
- Drive Strength: 0 - 1x,
|
||||
1 - 3x,
|
||||
2 - 2x,
|
||||
3 - 4x
|
||||
|
||||
- gpio-controller: Specifies that the node is a gpio controller.
|
||||
- #address-cells: should be 1.
|
||||
- #size-cells: should be 1.
|
||||
|
||||
Example:
|
||||
|
||||
gpa0: gpio-controller@11400000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "samsung,exynos4-gpio";
|
||||
reg = <0x11400000 0x20>;
|
||||
#gpio-cells = <4>;
|
||||
gpio-controller;
|
||||
};
|
|
@ -0,0 +1,7 @@
|
|||
ST-Ericsson COH 901 571/3 GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible: Compatible property value should be "stericsson,gpio-coh901"
|
||||
- reg: Physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
- interrupts: the 0...n interrupts assigned to the different GPIO ports/banks.
|
18
Documentation/devicetree/bindings/gpio/gpio-stmpe.txt
Normal file
18
Documentation/devicetree/bindings/gpio/gpio-stmpe.txt
Normal file
|
@ -0,0 +1,18 @@
|
|||
STMPE gpio
|
||||
----------
|
||||
|
||||
Required properties:
|
||||
- compatible: "st,stmpe-gpio"
|
||||
|
||||
Optional properties:
|
||||
- st,norequest-mask: bitmask specifying which GPIOs should _not_ be requestable
|
||||
due to different usage (e.g. touch, keypad)
|
||||
|
||||
Node name must be stmpe_gpio and should be child node of stmpe node to which it
|
||||
belongs.
|
||||
|
||||
Example:
|
||||
stmpe_gpio {
|
||||
compatible = "st,stmpe-gpio";
|
||||
st,norequest-mask = <0x20>; //gpio 5 can't be used
|
||||
};
|
42
Documentation/devicetree/bindings/gpio/gpio-stp-xway.txt
Normal file
42
Documentation/devicetree/bindings/gpio/gpio-stp-xway.txt
Normal file
|
@ -0,0 +1,42 @@
|
|||
Lantiq SoC Serial To Parallel (STP) GPIO controller
|
||||
|
||||
The Serial To Parallel (STP) is found on MIPS based Lantiq socs. It is a
|
||||
peripheral controller used to drive external shift register cascades. At most
|
||||
3 groups of 8 bits can be driven. The hardware is able to allow the DSL modem
|
||||
to drive the 2 LSBs of the cascade automatically.
|
||||
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "lantiq,gpio-stp-xway"
|
||||
- reg : Address and length of the register set for the device
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify optional parameters (currently
|
||||
unused).
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
|
||||
Optional properties:
|
||||
- lantiq,shadow : The default value that we shall assume as already set on the
|
||||
shift register cascade.
|
||||
- lantiq,groups : Set the 3 bit mask to select which of the 3 groups are enabled
|
||||
in the shift register cascade.
|
||||
- lantiq,dsl : The dsl core can control the 2 LSBs of the gpio cascade. This 2 bit
|
||||
property can enable this feature.
|
||||
- lantiq,phy1 : The gphy1 core can control 3 bits of the gpio cascade.
|
||||
- lantiq,phy2 : The gphy2 core can control 3 bits of the gpio cascade.
|
||||
- lantiq,rising : use rising instead of falling edge for the shift register
|
||||
|
||||
Example:
|
||||
|
||||
gpio1: stp@E100BB0 {
|
||||
compatible = "lantiq,gpio-stp-xway";
|
||||
reg = <0xE100BB0 0x40>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
|
||||
lantiq,shadow = <0xffff>;
|
||||
lantiq,groups = <0x7>;
|
||||
lantiq,dsl = <0x3>;
|
||||
lantiq,phy1 = <0x7>;
|
||||
lantiq,phy2 = <0x7>;
|
||||
/* lantiq,rising; */
|
||||
};
|
29
Documentation/devicetree/bindings/gpio/gpio-twl4030.txt
Normal file
29
Documentation/devicetree/bindings/gpio/gpio-twl4030.txt
Normal file
|
@ -0,0 +1,29 @@
|
|||
twl4030 GPIO controller bindings
|
||||
|
||||
Required properties:
|
||||
- compatible:
|
||||
- "ti,twl4030-gpio" for twl4030 GPIO controller
|
||||
- #gpio-cells : Should be two.
|
||||
- first cell is the pin number
|
||||
- second cell is used to specify optional parameters (unused)
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- #interrupt-cells : Should be 2.
|
||||
- interrupt-controller: Mark the device node as an interrupt controller
|
||||
The first cell is the GPIO number.
|
||||
The second cell is not used.
|
||||
- ti,use-leds : Enables LEDA and LEDB outputs if set
|
||||
- ti,debounce : if n-th bit is set, debounces GPIO-n
|
||||
- ti,mmc-cd : if n-th bit is set, GPIO-n controls VMMC(n+1)
|
||||
- ti,pullups : if n-th bit is set, set a pullup on GPIO-n
|
||||
- ti,pulldowns : if n-th bit is set, set a pulldown on GPIO-n
|
||||
|
||||
Example:
|
||||
|
||||
twl_gpio: gpio {
|
||||
compatible = "ti,twl4030-gpio";
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
ti,use-leds;
|
||||
};
|
45
Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt
Normal file
45
Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt
Normal file
|
@ -0,0 +1,45 @@
|
|||
ImgTec TZ1090 PDC GPIO Controller
|
||||
|
||||
Required properties:
|
||||
- compatible: Compatible property value should be "img,tz1090-pdc-gpio".
|
||||
|
||||
- reg: Physical base address of the controller and length of memory mapped
|
||||
region. This starts at and cover the SOC_GPIO_CONTROL registers.
|
||||
|
||||
- gpio-controller: Specifies that the node is a gpio controller.
|
||||
|
||||
- #gpio-cells: Should be 2. The syntax of the gpio specifier used by client
|
||||
nodes should have the following values.
|
||||
<[phandle of the gpio controller node]
|
||||
[PDC gpio number]
|
||||
[gpio flags]>
|
||||
|
||||
Values for gpio specifier:
|
||||
- GPIO number: a value in the range 0 to 6.
|
||||
- GPIO flags: bit field of flags, as defined in <dt-bindings/gpio/gpio.h>.
|
||||
Only the following flags are supported:
|
||||
GPIO_ACTIVE_HIGH
|
||||
GPIO_ACTIVE_LOW
|
||||
|
||||
Optional properties:
|
||||
- gpio-ranges: Mapping to pin controller pins (as described in
|
||||
Documentation/devicetree/bindings/gpio/gpio.txt)
|
||||
|
||||
- interrupts: Individual syswake interrupts (other GPIOs cannot interrupt)
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
pdc_gpios: gpio-controller@02006500 {
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
compatible = "img,tz1090-pdc-gpio";
|
||||
reg = <0x02006500 0x100>;
|
||||
|
||||
interrupt-parent = <&pdc>;
|
||||
interrupts = <8 IRQ_TYPE_NONE>, /* Syswake 0 */
|
||||
<9 IRQ_TYPE_NONE>, /* Syswake 1 */
|
||||
<10 IRQ_TYPE_NONE>; /* Syswake 2 */
|
||||
gpio-ranges = <&pdc_pinctrl 0 0 7>;
|
||||
};
|
88
Documentation/devicetree/bindings/gpio/gpio-tz1090.txt
Normal file
88
Documentation/devicetree/bindings/gpio/gpio-tz1090.txt
Normal file
|
@ -0,0 +1,88 @@
|
|||
ImgTec TZ1090 GPIO Controller
|
||||
|
||||
Required properties:
|
||||
- compatible: Compatible property value should be "img,tz1090-gpio".
|
||||
|
||||
- reg: Physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
|
||||
- #address-cells: Should be 1 (for bank subnodes)
|
||||
|
||||
- #size-cells: Should be 0 (for bank subnodes)
|
||||
|
||||
- Each bank of GPIOs should have a subnode to represent it.
|
||||
|
||||
Bank subnode required properties:
|
||||
- reg: Index of bank in the range 0 to 2.
|
||||
|
||||
- gpio-controller: Specifies that the node is a gpio controller.
|
||||
|
||||
- #gpio-cells: Should be 2. The syntax of the gpio specifier used by client
|
||||
nodes should have the following values.
|
||||
<[phandle of the gpio controller node]
|
||||
[gpio number within the gpio bank]
|
||||
[gpio flags]>
|
||||
|
||||
Values for gpio specifier:
|
||||
- GPIO number: a value in the range 0 to 29.
|
||||
- GPIO flags: bit field of flags, as defined in <dt-bindings/gpio/gpio.h>.
|
||||
Only the following flags are supported:
|
||||
GPIO_ACTIVE_HIGH
|
||||
GPIO_ACTIVE_LOW
|
||||
|
||||
Bank subnode optional properties:
|
||||
- gpio-ranges: Mapping to pin controller pins (as described in
|
||||
Documentation/devicetree/bindings/gpio/gpio.txt)
|
||||
|
||||
- interrupts: Interrupt for the entire bank
|
||||
|
||||
- interrupt-controller: Specifies that the node is an interrupt controller
|
||||
|
||||
- #interrupt-cells: Should be 2. The syntax of the interrupt specifier used by
|
||||
client nodes should have the following values.
|
||||
<[phandle of the interurupt controller]
|
||||
[gpio number within the gpio bank]
|
||||
[irq flags]>
|
||||
|
||||
Values for irq specifier:
|
||||
- GPIO number: a value in the range 0 to 29
|
||||
- IRQ flags: value to describe edge and level triggering, as defined in
|
||||
<dt-bindings/interrupt-controller/irq.h>. Only the following flags are
|
||||
supported:
|
||||
IRQ_TYPE_EDGE_RISING
|
||||
IRQ_TYPE_EDGE_FALLING
|
||||
IRQ_TYPE_EDGE_BOTH
|
||||
IRQ_TYPE_LEVEL_HIGH
|
||||
IRQ_TYPE_LEVEL_LOW
|
||||
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
gpios: gpio-controller@02005800 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "img,tz1090-gpio";
|
||||
reg = <0x02005800 0x90>;
|
||||
|
||||
/* bank 0 with an interrupt */
|
||||
gpios0: bank@0 {
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0>;
|
||||
interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pinctrl 0 0 30>;
|
||||
interrupt-controller;
|
||||
};
|
||||
|
||||
/* bank 2 without interrupt */
|
||||
gpios2: bank@2 {
|
||||
#gpio-cells = <2>;
|
||||
reg = <2>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pinctrl 0 60 30>;
|
||||
};
|
||||
};
|
||||
|
||||
|
22
Documentation/devicetree/bindings/gpio/gpio-xgene.txt
Normal file
22
Documentation/devicetree/bindings/gpio/gpio-xgene.txt
Normal file
|
@ -0,0 +1,22 @@
|
|||
APM X-Gene SoC GPIO controller bindings
|
||||
|
||||
This is a gpio controller that is part of the flash controller.
|
||||
This gpio controller controls a total of 48 gpios.
|
||||
|
||||
Required properties:
|
||||
- compatible: "apm,xgene-gpio" for X-Gene GPIO controller
|
||||
- reg: Physical base address and size of the controller's registers
|
||||
- #gpio-cells: Should be two.
|
||||
- first cell is the pin number
|
||||
- second cell is used to specify the gpio polarity:
|
||||
0 = active high
|
||||
1 = active low
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
|
||||
Example:
|
||||
gpio0: gpio0@1701c000 {
|
||||
compatible = "apm,xgene-gpio";
|
||||
reg = <0x0 0x1701c000 0x0 0x40>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
48
Documentation/devicetree/bindings/gpio/gpio-xilinx.txt
Normal file
48
Documentation/devicetree/bindings/gpio/gpio-xilinx.txt
Normal file
|
@ -0,0 +1,48 @@
|
|||
Xilinx plb/axi GPIO controller
|
||||
|
||||
Dual channel GPIO controller with configurable number of pins
|
||||
(from 1 to 32 per channel). Every pin can be configured as
|
||||
input/output/tristate. Both channels share the same global IRQ but
|
||||
local interrupts can be enabled on channel basis.
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "xlnx,xps-gpio-1.00.a"
|
||||
- reg : Address and length of the register set for the device
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and the
|
||||
second cell is used to specify optional parameters (currently unused).
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
|
||||
Optional properties:
|
||||
- interrupts : Interrupt mapping for GPIO IRQ.
|
||||
- interrupt-parent : Phandle for the interrupt controller that
|
||||
services interrupts for this device.
|
||||
- xlnx,all-inputs : if n-th bit is setup, GPIO-n is input
|
||||
- xlnx,dout-default : if n-th bit is 1, GPIO-n default value is 1
|
||||
- xlnx,gpio-width : gpio width
|
||||
- xlnx,tri-default : if n-th bit is 1, GPIO-n is in tristate mode
|
||||
- xlnx,is-dual : if 1, controller also uses the second channel
|
||||
- xlnx,all-inputs-2 : as above but for the second channel
|
||||
- xlnx,dout-default-2 : as above but the second channel
|
||||
- xlnx,gpio2-width : as above but for the second channel
|
||||
- xlnx,tri-default-2 : as above but for the second channel
|
||||
|
||||
|
||||
Example:
|
||||
gpio: gpio@40000000 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "xlnx,xps-gpio-1.00.a";
|
||||
gpio-controller ;
|
||||
interrupt-parent = <µblaze_0_intc>;
|
||||
interrupts = < 6 2 >;
|
||||
reg = < 0x40000000 0x10000 >;
|
||||
xlnx,all-inputs = <0x0>;
|
||||
xlnx,all-inputs-2 = <0x0>;
|
||||
xlnx,dout-default = <0x0>;
|
||||
xlnx,dout-default-2 = <0x0>;
|
||||
xlnx,gpio-width = <0x2>;
|
||||
xlnx,gpio2-width = <0x2>;
|
||||
xlnx,interrupt-present = <0x1>;
|
||||
xlnx,is-dual = <0x1>;
|
||||
xlnx,tri-default = <0xffffffff>;
|
||||
xlnx,tri-default-2 = <0xffffffff>;
|
||||
} ;
|
16
Documentation/devicetree/bindings/gpio/gpio-zevio.txt
Normal file
16
Documentation/devicetree/bindings/gpio/gpio-zevio.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
Zevio GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "lsi,zevio-gpio"
|
||||
- reg: Address and length of the register set for the device
|
||||
- #gpio-cells: Should be two. The first cell is the pin number and the
|
||||
second cell is used to specify optional parameters (currently unused).
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
|
||||
Example:
|
||||
gpio: gpio@90000000 {
|
||||
compatible = "lsi,zevio-gpio";
|
||||
reg = <0x90000000 0x1000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
26
Documentation/devicetree/bindings/gpio/gpio-zynq.txt
Normal file
26
Documentation/devicetree/bindings/gpio/gpio-zynq.txt
Normal file
|
@ -0,0 +1,26 @@
|
|||
Xilinx Zynq GPIO controller Device Tree Bindings
|
||||
-------------------------------------------
|
||||
|
||||
Required properties:
|
||||
- #gpio-cells : Should be two
|
||||
- First cell is the GPIO line number
|
||||
- Second cell is used to specify optional
|
||||
parameters (unused)
|
||||
- compatible : Should be "xlnx,zynq-gpio-1.0"
|
||||
- clocks : Clock specifier (see clock bindings for details)
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- interrupts : Interrupt specifier (see interrupt bindings for
|
||||
details)
|
||||
- interrupt-parent : Must be core interrupt controller
|
||||
- reg : Address and length of the register set for the device
|
||||
|
||||
Example:
|
||||
gpio@e000a000 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "xlnx,zynq-gpio-1.0";
|
||||
clocks = <&clkc 42>;
|
||||
gpio-controller;
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <0 20 4>;
|
||||
reg = <0xe000a000 0x1000>;
|
||||
};
|
199
Documentation/devicetree/bindings/gpio/gpio.txt
Normal file
199
Documentation/devicetree/bindings/gpio/gpio.txt
Normal file
|
@ -0,0 +1,199 @@
|
|||
Specifying GPIO information for devices
|
||||
============================================
|
||||
|
||||
1) gpios property
|
||||
-----------------
|
||||
|
||||
Nodes that makes use of GPIOs should specify them using one or more
|
||||
properties, each containing a 'gpio-list':
|
||||
|
||||
gpio-list ::= <single-gpio> [gpio-list]
|
||||
single-gpio ::= <gpio-phandle> <gpio-specifier>
|
||||
gpio-phandle : phandle to gpio controller node
|
||||
gpio-specifier : Array of #gpio-cells specifying specific gpio
|
||||
(controller specific)
|
||||
|
||||
GPIO properties should be named "[<name>-]gpios". The exact
|
||||
meaning of each gpios property must be documented in the device tree
|
||||
binding for each device.
|
||||
|
||||
For example, the following could be used to describe GPIO pins used
|
||||
as chip select lines; with chip selects 0, 1 and 3 populated, and chip
|
||||
select 2 left empty:
|
||||
|
||||
gpio1: gpio1 {
|
||||
gpio-controller
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
gpio2: gpio2 {
|
||||
gpio-controller
|
||||
#gpio-cells = <1>;
|
||||
};
|
||||
[...]
|
||||
chipsel-gpios = <&gpio1 12 0>,
|
||||
<&gpio1 13 0>,
|
||||
<0>, /* holes are permitted, means no GPIO 2 */
|
||||
<&gpio2 2>;
|
||||
|
||||
Note that gpio-specifier length is controller dependent. In the
|
||||
above example, &gpio1 uses 2 cells to specify a gpio, while &gpio2
|
||||
only uses one.
|
||||
|
||||
gpio-specifier may encode: bank, pin position inside the bank,
|
||||
whether pin is open-drain and whether pin is logically inverted.
|
||||
Exact meaning of each specifier cell is controller specific, and must
|
||||
be documented in the device tree binding for the device.
|
||||
|
||||
Example of a node using GPIOs:
|
||||
|
||||
node {
|
||||
gpios = <&qe_pio_e 18 0>;
|
||||
};
|
||||
|
||||
In this example gpio-specifier is "18 0" and encodes GPIO pin number,
|
||||
and GPIO flags as accepted by the "qe_pio_e" gpio-controller.
|
||||
|
||||
1.1) GPIO specifier best practices
|
||||
----------------------------------
|
||||
|
||||
A gpio-specifier should contain a flag indicating the GPIO polarity; active-
|
||||
high or active-low. If it does, the follow best practices should be followed:
|
||||
|
||||
The gpio-specifier's polarity flag should represent the physical level at the
|
||||
GPIO controller that achieves (or represents, for inputs) a logically asserted
|
||||
value at the device. The exact definition of logically asserted should be
|
||||
defined by the binding for the device. If the board inverts the signal between
|
||||
the GPIO controller and the device, then the gpio-specifier will represent the
|
||||
opposite physical level than the signal at the device's pin.
|
||||
|
||||
When the device's signal polarity is configurable, the binding for the
|
||||
device must either:
|
||||
|
||||
a) Define a single static polarity for the signal, with the expectation that
|
||||
any software using that binding would statically program the device to use
|
||||
that signal polarity.
|
||||
|
||||
The static choice of polarity may be either:
|
||||
|
||||
a1) (Preferred) Dictated by a binding-specific DT property.
|
||||
|
||||
or:
|
||||
|
||||
a2) Defined statically by the DT binding itself.
|
||||
|
||||
In particular, the polarity cannot be derived from the gpio-specifier, since
|
||||
that would prevent the DT from separately representing the two orthogonal
|
||||
concepts of configurable signal polarity in the device, and possible board-
|
||||
level signal inversion.
|
||||
|
||||
or:
|
||||
|
||||
b) Pick a single option for device signal polarity, and document this choice
|
||||
in the binding. The gpio-specifier should represent the polarity of the signal
|
||||
(at the GPIO controller) assuming that the device is configured for this
|
||||
particular signal polarity choice. If software chooses to program the device
|
||||
to generate or receive a signal of the opposite polarity, software will be
|
||||
responsible for correctly interpreting (inverting) the GPIO signal at the GPIO
|
||||
controller.
|
||||
|
||||
2) gpio-controller nodes
|
||||
------------------------
|
||||
|
||||
Every GPIO controller node must contain both an empty "gpio-controller"
|
||||
property, and a #gpio-cells integer property, which indicates the number of
|
||||
cells in a gpio-specifier.
|
||||
|
||||
Example of two SOC GPIO banks defined as gpio-controller nodes:
|
||||
|
||||
qe_pio_a: gpio-controller@1400 {
|
||||
compatible = "fsl,qe-pario-bank-a", "fsl,qe-pario-bank";
|
||||
reg = <0x1400 0x18>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
qe_pio_e: gpio-controller@1460 {
|
||||
compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
|
||||
reg = <0x1460 0x18>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
2.1) gpio- and pin-controller interaction
|
||||
-----------------------------------------
|
||||
|
||||
Some or all of the GPIOs provided by a GPIO controller may be routed to pins
|
||||
on the package via a pin controller. This allows muxing those pins between
|
||||
GPIO and other functions.
|
||||
|
||||
It is useful to represent which GPIOs correspond to which pins on which pin
|
||||
controllers. The gpio-ranges property described below represents this, and
|
||||
contains information structures as follows:
|
||||
|
||||
gpio-range-list ::= <single-gpio-range> [gpio-range-list]
|
||||
single-gpio-range ::= <numeric-gpio-range> | <named-gpio-range>
|
||||
numeric-gpio-range ::=
|
||||
<pinctrl-phandle> <gpio-base> <pinctrl-base> <count>
|
||||
named-gpio-range ::= <pinctrl-phandle> <gpio-base> '<0 0>'
|
||||
gpio-phandle : phandle to pin controller node.
|
||||
gpio-base : Base GPIO ID in the GPIO controller
|
||||
pinctrl-base : Base pinctrl pin ID in the pin controller
|
||||
count : The number of GPIOs/pins in this range
|
||||
|
||||
The "pin controller node" mentioned above must conform to the bindings
|
||||
described in ../pinctrl/pinctrl-bindings.txt.
|
||||
|
||||
In case named gpio ranges are used (ranges with both <pinctrl-base> and
|
||||
<count> set to 0), the property gpio-ranges-group-names contains one string
|
||||
for every single-gpio-range in gpio-ranges:
|
||||
gpiorange-names-list ::= <gpiorange-name> [gpiorange-names-list]
|
||||
gpiorange-name : Name of the pingroup associated to the GPIO range in
|
||||
the respective pin controller.
|
||||
|
||||
Elements of gpiorange-names-list corresponding to numeric ranges contain
|
||||
the empty string. Elements of gpiorange-names-list corresponding to named
|
||||
ranges contain the name of a pin group defined in the respective pin
|
||||
controller. The number of pins/GPIOs in the range is the number of pins in
|
||||
that pin group.
|
||||
|
||||
Previous versions of this binding required all pin controller nodes that
|
||||
were referenced by any gpio-ranges property to contain a property named
|
||||
#gpio-range-cells with value <3>. This requirement is now deprecated.
|
||||
However, that property may still exist in older device trees for
|
||||
compatibility reasons, and would still be required even in new device
|
||||
trees that need to be compatible with older software.
|
||||
|
||||
Example 1:
|
||||
|
||||
qe_pio_e: gpio-controller@1460 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
|
||||
reg = <0x1460 0x18>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>;
|
||||
};
|
||||
|
||||
Here, a single GPIO controller has GPIOs 0..9 routed to pin controller
|
||||
pinctrl1's pins 20..29, and GPIOs 10..19 routed to pin controller pinctrl2's
|
||||
pins 50..59.
|
||||
|
||||
Example 2:
|
||||
|
||||
gpio_pio_i: gpio-controller@14B0 {
|
||||
#gpio-cells = <2>;
|
||||
compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";
|
||||
reg = <0x1480 0x18>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pinctrl1 0 20 10>,
|
||||
<&pinctrl2 10 0 0>,
|
||||
<&pinctrl1 15 0 10>,
|
||||
<&pinctrl2 25 0 0>;
|
||||
gpio-ranges-group-names = "",
|
||||
"foo",
|
||||
"",
|
||||
"bar";
|
||||
};
|
||||
|
||||
Here, three GPIO ranges are defined wrt. two pin controllers. pinctrl1 GPIO
|
||||
ranges are defined using pin numbers whereas the GPIO ranges wrt. pinctrl2
|
||||
are named "foo" and "bar".
|
25
Documentation/devicetree/bindings/gpio/gpio_atmel.txt
Normal file
25
Documentation/devicetree/bindings/gpio/gpio_atmel.txt
Normal file
|
@ -0,0 +1,25 @@
|
|||
* Atmel GPIO controller (PIO)
|
||||
|
||||
Required properties:
|
||||
- compatible: "atmel,<chip>-gpio", where <chip> is at91rm9200 or at91sam9x5.
|
||||
- reg: Should contain GPIO controller registers location and length
|
||||
- interrupts: Should be the port interrupt shared by all the pins.
|
||||
- #gpio-cells: Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify optional parameters (currently
|
||||
unused).
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
|
||||
optional properties:
|
||||
- #gpio-lines: Number of gpio if absent 32.
|
||||
|
||||
|
||||
Example:
|
||||
pioA: gpio@fffff200 {
|
||||
compatible = "atmel,at91rm9200-gpio";
|
||||
reg = <0xfffff200 0x100>;
|
||||
interrupts = <2 4>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#gpio-lines = <19>;
|
||||
};
|
||||
|
43
Documentation/devicetree/bindings/gpio/gpio_lpc32xx.txt
Normal file
43
Documentation/devicetree/bindings/gpio/gpio_lpc32xx.txt
Normal file
|
@ -0,0 +1,43 @@
|
|||
NXP LPC32xx SoC GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "nxp,lpc3220-gpio"
|
||||
- reg: Physical base address and length of the controller's registers.
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
- #gpio-cells: Should be 3:
|
||||
1) bank:
|
||||
0: GPIO P0
|
||||
1: GPIO P1
|
||||
2: GPIO P2
|
||||
3: GPIO P3
|
||||
4: GPI P3
|
||||
5: GPO P3
|
||||
2) pin number
|
||||
3) optional parameters:
|
||||
- bit 0 specifies polarity (0 for normal, 1 for inverted)
|
||||
- reg: Index of the GPIO group
|
||||
|
||||
Example:
|
||||
|
||||
gpio: gpio@40028000 {
|
||||
compatible = "nxp,lpc3220-gpio";
|
||||
reg = <0x40028000 0x1000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <3>; /* bank, pin, flags */
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led0 {
|
||||
gpios = <&gpio 5 1 1>; /* GPO_P3 1, active low */
|
||||
linux,default-trigger = "heartbeat";
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led1 {
|
||||
gpios = <&gpio 5 14 1>; /* GPO_P3 14, active low */
|
||||
linux,default-trigger = "timer";
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
19
Documentation/devicetree/bindings/gpio/moxa,moxart-gpio.txt
Normal file
19
Documentation/devicetree/bindings/gpio/moxa,moxart-gpio.txt
Normal file
|
@ -0,0 +1,19 @@
|
|||
MOXA ART GPIO Controller
|
||||
|
||||
Required properties:
|
||||
|
||||
- #gpio-cells : Should be 2, The first cell is the pin number,
|
||||
the second cell is used to specify polarity:
|
||||
0 = active high
|
||||
1 = active low
|
||||
- compatible : Must be "moxa,moxart-gpio"
|
||||
- reg : Should contain registers location and length
|
||||
|
||||
Example:
|
||||
|
||||
gpio: gpio@98700000 {
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
compatible = "moxa,moxart-gpio";
|
||||
reg = <0x98700000 0xC>;
|
||||
};
|
69
Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
Normal file
69
Documentation/devicetree/bindings/gpio/mrvl-gpio.txt
Normal file
|
@ -0,0 +1,69 @@
|
|||
* Marvell PXA GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "intel,pxa25x-gpio", "intel,pxa26x-gpio",
|
||||
"intel,pxa27x-gpio", "intel,pxa3xx-gpio",
|
||||
"marvell,pxa93x-gpio", "marvell,mmp-gpio" or
|
||||
"marvell,mmp2-gpio".
|
||||
- reg : Address and length of the register set for the device
|
||||
- interrupts : Should be the port interrupt shared by all gpio pins.
|
||||
There're three gpio interrupts in arch-pxa, and they're gpio0,
|
||||
gpio1 and gpio_mux. There're only one gpio interrupt in arch-mmp,
|
||||
gpio_mux.
|
||||
- interrupt-names : Should be the names of irq resources. Each interrupt
|
||||
uses its own interrupt name, so there should be as many interrupt names
|
||||
as referenced interrups.
|
||||
- interrupt-controller : Identifies the node as an interrupt controller.
|
||||
- #interrupt-cells: Specifies the number of cells needed to encode an
|
||||
interrupt source.
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
- #gpio-cells : Should be one. It is the pin number.
|
||||
|
||||
Example for a MMP platform:
|
||||
|
||||
gpio: gpio@d4019000 {
|
||||
compatible = "marvell,mmp-gpio";
|
||||
reg = <0xd4019000 0x1000>;
|
||||
interrupts = <49>;
|
||||
interrupt-names = "gpio_mux";
|
||||
gpio-controller;
|
||||
#gpio-cells = <1>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
};
|
||||
|
||||
Example for a PXA3xx platform:
|
||||
|
||||
gpio: gpio@40e00000 {
|
||||
compatible = "intel,pxa3xx-gpio";
|
||||
reg = <0x40e00000 0x10000>;
|
||||
interrupt-names = "gpio0", "gpio1", "gpio_mux";
|
||||
interrupts = <8 9 10>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <0x2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <0x2>;
|
||||
};
|
||||
|
||||
* Marvell Orion GPIO Controller
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "marvell,orion-gpio"
|
||||
- reg : Address and length of the register set for controller.
|
||||
- gpio-controller : So we know this is a gpio controller.
|
||||
- ngpio : How many gpios this controller has.
|
||||
- interrupts : Up to 4 Interrupts for the controller.
|
||||
|
||||
Optional properties:
|
||||
- mask-offset : For SMP Orions, offset for Nth CPU
|
||||
|
||||
Example:
|
||||
|
||||
gpio0: gpio@10100 {
|
||||
compatible = "marvell,orion-gpio";
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
reg = <0x10100 0x40>;
|
||||
ngpio = <32>;
|
||||
interrupts = <35>, <36>, <37>, <38>;
|
||||
};
|
|
@ -0,0 +1,40 @@
|
|||
NVIDIA Tegra GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible : "nvidia,tegra<chip>-gpio"
|
||||
- reg : Physical base address and length of the controller's registers.
|
||||
- interrupts : The interrupt outputs from the controller. For Tegra20,
|
||||
there should be 7 interrupts specified, and for Tegra30, there should
|
||||
be 8 interrupts specified.
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and the
|
||||
second cell is used to specify optional parameters:
|
||||
- bit 0 specifies polarity (0 for normal, 1 for inverted)
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- #interrupt-cells : Should be 2.
|
||||
The first cell is the GPIO number.
|
||||
The second cell is used to specify flags:
|
||||
bits[3:0] trigger type and level flags:
|
||||
1 = low-to-high edge triggered.
|
||||
2 = high-to-low edge triggered.
|
||||
4 = active high level-sensitive.
|
||||
8 = active low level-sensitive.
|
||||
Valid combinations are 1, 2, 3, 4, 8.
|
||||
- interrupt-controller : Marks the device node as an interrupt controller.
|
||||
|
||||
Example:
|
||||
|
||||
gpio: gpio@6000d000 {
|
||||
compatible = "nvidia,tegra20-gpio";
|
||||
reg = < 0x6000d000 0x1000 >;
|
||||
interrupts = < 0 32 0x04
|
||||
0 33 0x04
|
||||
0 34 0x04
|
||||
0 35 0x04
|
||||
0 55 0x04
|
||||
0 87 0x04
|
||||
0 89 0x04 >;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
};
|
10
Documentation/devicetree/bindings/gpio/pl061-gpio.txt
Normal file
10
Documentation/devicetree/bindings/gpio/pl061-gpio.txt
Normal file
|
@ -0,0 +1,10 @@
|
|||
ARM PL061 GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible : "arm,pl061", "arm,primecell"
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and the
|
||||
second cell is used to specify optional parameters:
|
||||
- bit 0 specifies polarity (0 for normal, 1 for inverted)
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- interrupts : Interrupt mapping for GPIO IRQ.
|
||||
|
61
Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt
Normal file
61
Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt
Normal file
|
@ -0,0 +1,61 @@
|
|||
* Renesas R-Car GPIO Controller
|
||||
|
||||
Required Properties:
|
||||
|
||||
- compatible: should contain one of the following.
|
||||
- "renesas,gpio-r8a7778": for R8A7778 (R-Mobile M1) compatible GPIO controller.
|
||||
- "renesas,gpio-r8a7779": for R8A7779 (R-Car H1) compatible GPIO controller.
|
||||
- "renesas,gpio-r8a7790": for R8A7790 (R-Car H2) compatible GPIO controller.
|
||||
- "renesas,gpio-r8a7791": for R8A7791 (R-Car M2) compatible GPIO controller.
|
||||
- "renesas,gpio-rcar": for generic R-Car GPIO controller.
|
||||
|
||||
- reg: Base address and length of each memory resource used by the GPIO
|
||||
controller hardware module.
|
||||
|
||||
- interrupt-parent: phandle of the parent interrupt controller.
|
||||
- interrupts: Interrupt specifier for the controllers interrupt.
|
||||
|
||||
- gpio-controller: Marks the device node as a gpio controller.
|
||||
- #gpio-cells: Should be 2. The first cell is the GPIO number and the second
|
||||
cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. Only the
|
||||
GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported.
|
||||
- gpio-ranges: Range of pins managed by the GPIO controller.
|
||||
|
||||
Optional properties:
|
||||
|
||||
- clocks: Must contain a reference to the functional clock. The property is
|
||||
mandatory if the hardware implements a controllable functional clock for
|
||||
the GPIO instance.
|
||||
|
||||
Please refer to gpio.txt in this directory for details of gpio-ranges property
|
||||
and the common GPIO bindings used by client devices.
|
||||
|
||||
The GPIO controller also acts as an interrupt controller. It uses the default
|
||||
two cells specifier as described in Documentation/devicetree/bindings/
|
||||
interrupt-controller/interrupts.txt.
|
||||
|
||||
Example: R8A7779 (R-Car H1) GPIO controller nodes
|
||||
|
||||
gpio0: gpio@ffc40000 {
|
||||
compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
|
||||
reg = <0xffc40000 0x2c>;
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <0 141 0x4>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pfc 0 0 32>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
...
|
||||
gpio6: gpio@ffc46000 {
|
||||
compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
|
||||
reg = <0xffc46000 0x2c>;
|
||||
interrupt-parent = <&gic>;
|
||||
interrupts = <0 147 0x4>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pfc 0 192 9>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
60
Documentation/devicetree/bindings/gpio/snps-dwapb-gpio.txt
Normal file
60
Documentation/devicetree/bindings/gpio/snps-dwapb-gpio.txt
Normal file
|
@ -0,0 +1,60 @@
|
|||
* Synopsys DesignWare APB GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible : Should contain "snps,dw-apb-gpio"
|
||||
- reg : Address and length of the register set for the device.
|
||||
- #address-cells : should be 1 (for addressing port subnodes).
|
||||
- #size-cells : should be 0 (port subnodes).
|
||||
|
||||
The GPIO controller has a configurable number of ports, each of which are
|
||||
represented as child nodes with the following properties:
|
||||
|
||||
Required properties:
|
||||
- compatible : "snps,dw-apb-gpio-port"
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify the gpio polarity:
|
||||
0 = active high
|
||||
1 = active low
|
||||
- reg : The integer port index of the port, a single cell.
|
||||
|
||||
Optional properties:
|
||||
- interrupt-controller : The first port may be configured to be an interrupt
|
||||
controller.
|
||||
- #interrupt-cells : Specifies the number of cells needed to encode an
|
||||
interrupt. Shall be set to 2. The first cell defines the interrupt number,
|
||||
the second encodes the triger flags encoded as described in
|
||||
Documentation/devicetree/bindings/interrupts.txt
|
||||
- interrupt-parent : The parent interrupt controller.
|
||||
- interrupts : The interrupt to the parent controller raised when GPIOs
|
||||
generate the interrupts.
|
||||
- snps,nr-gpios : The number of pins in the port, a single cell.
|
||||
|
||||
Example:
|
||||
|
||||
gpio: gpio@20000 {
|
||||
compatible = "snps,dw-apb-gpio";
|
||||
reg = <0x20000 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
porta: gpio-controller@0 {
|
||||
compatible = "snps,dw-apb-gpio-port";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
snps,nr-gpios = <8>;
|
||||
reg = <0>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&vic1>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
|
||||
portb: gpio-controller@1 {
|
||||
compatible = "snps,dw-apb-gpio-port";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
snps,nr-gpios = <8>;
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
48
Documentation/devicetree/bindings/gpio/sodaville.txt
Normal file
48
Documentation/devicetree/bindings/gpio/sodaville.txt
Normal file
|
@ -0,0 +1,48 @@
|
|||
GPIO controller on CE4100 / Sodaville SoCs
|
||||
==========================================
|
||||
|
||||
The bindings for CE4100's GPIO controller match the generic description
|
||||
which is covered by the gpio.txt file in this folder.
|
||||
|
||||
The only additional property is the intel,muxctl property which holds the
|
||||
value which is written into the MUXCNTL register.
|
||||
|
||||
There is no compatible property for now because the driver is probed via
|
||||
PCI id (vendor 0x8086 device 0x2e67).
|
||||
|
||||
The interrupt specifier consists of two cells encoded as follows:
|
||||
- <1st cell>: The interrupt-number that identifies the interrupt source.
|
||||
- <2nd cell>: The level-sense information, encoded as follows:
|
||||
4 - active high level-sensitive
|
||||
8 - active low level-sensitive
|
||||
|
||||
Example of the GPIO device and one user:
|
||||
|
||||
pcigpio: gpio@b,1 {
|
||||
/* two cells for GPIO and interrupt */
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
compatible = "pci8086,2e67.2",
|
||||
"pci8086,2e67",
|
||||
"pciclassff0000",
|
||||
"pciclassff00";
|
||||
|
||||
reg = <0x15900 0x0 0x0 0x0 0x0>;
|
||||
/* Interrupt line of the gpio device */
|
||||
interrupts = <15 1>;
|
||||
/* It is an interrupt and GPIO controller itself */
|
||||
interrupt-controller;
|
||||
gpio-controller;
|
||||
intel,muxctl = <0>;
|
||||
};
|
||||
|
||||
testuser@20 {
|
||||
compatible = "example,testuser";
|
||||
/* User the 11th GPIO line as an active high triggered
|
||||
* level interrupt
|
||||
*/
|
||||
interrupts = <11 8>;
|
||||
interrupt-parent = <&pcigpio>;
|
||||
/* Use this GPIO also with the gpio functions */
|
||||
gpios = <&pcigpio 11 0>;
|
||||
};
|
50
Documentation/devicetree/bindings/gpio/spear_spics.txt
Normal file
50
Documentation/devicetree/bindings/gpio/spear_spics.txt
Normal file
|
@ -0,0 +1,50 @@
|
|||
=== ST Microelectronics SPEAr SPI CS Driver ===
|
||||
|
||||
SPEAr platform provides a provision to control chipselects of ARM PL022 Prime
|
||||
Cell spi controller through its system registers, which otherwise remains under
|
||||
PL022 control. If chipselect remain under PL022 control then they would be
|
||||
released as soon as transfer is over and TxFIFO becomes empty. This is not
|
||||
desired by some of the device protocols above spi which expect (multiple)
|
||||
transfers without releasing their chipselects.
|
||||
|
||||
Chipselects can be controlled by software by turning them as GPIOs. SPEAr
|
||||
provides another interface through system registers through which software can
|
||||
directly control each PL022 chipselect. Hence, it is natural for SPEAr to export
|
||||
the control of this interface as gpio.
|
||||
|
||||
Required properties:
|
||||
|
||||
* compatible: should be defined as "st,spear-spics-gpio"
|
||||
* reg: mentioning address range of spics controller
|
||||
* st-spics,peripcfg-reg: peripheral configuration register offset
|
||||
* st-spics,sw-enable-bit: bit offset to enable sw control
|
||||
* st-spics,cs-value-bit: bit offset to drive chipselect low or high
|
||||
* st-spics,cs-enable-mask: chip select number bit mask
|
||||
* st-spics,cs-enable-shift: chip select number program offset
|
||||
* gpio-controller: Marks the device node as gpio controller
|
||||
* #gpio-cells: should be 1 and will mention chip select number
|
||||
|
||||
All the above bit offsets are within peripcfg register.
|
||||
|
||||
Example:
|
||||
-------
|
||||
spics: spics@e0700000{
|
||||
compatible = "st,spear-spics-gpio";
|
||||
reg = <0xe0700000 0x1000>;
|
||||
st-spics,peripcfg-reg = <0x3b0>;
|
||||
st-spics,sw-enable-bit = <12>;
|
||||
st-spics,cs-value-bit = <11>;
|
||||
st-spics,cs-enable-mask = <3>;
|
||||
st-spics,cs-enable-shift = <8>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
|
||||
spi0: spi@e0100000 {
|
||||
status = "okay";
|
||||
num-cs = <3>;
|
||||
cs-gpios = <&gpio1 7 0>, <&spics 0>,
|
||||
<&spics 1>;
|
||||
...
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue