xref: /freebsd/sys/contrib/device-tree/Bindings/gpio/gpio-xgene-sb.txt (revision dd41de95a84d979615a2ef11df6850622bf6184e)
1APM X-Gene Standby GPIO controller bindings
2
3This is a gpio controller in the standby domain. It also supports interrupt in
4some particular pins which are sourced to its parent interrupt controller
5as diagram below:
6                            +-----------------+
7                            | X-Gene standby  |
8                            | GPIO controller +------ GPIO_0
9+------------+              |                 | ...
10| Parent IRQ | EXT_INT_0    |                 +------ GPIO_8/EXT_INT_0
11| controller | (SPI40)      |                 | ...
12| (GICv2)    +--------------+                 +------ GPIO_[N+8]/EXT_INT_N
13|            |   ...        |                 |
14|            | EXT_INT_N    |                 +------ GPIO_[N+9]
15|            | (SPI[40 + N])|                 | ...
16|            +--------------+                 +------ GPIO_MAX
17+------------+              +-----------------+
18
19Required properties:
20- compatible: "apm,xgene-gpio-sb" for the X-Gene Standby GPIO controller
21- reg: Physical base address and size of the controller's registers
22- #gpio-cells: Should be two.
23	- first cell is the pin number
24	- second cell is used to specify the gpio polarity:
25		0 = active high
26		1 = active low
27- gpio-controller: Marks the device node as a GPIO controller.
28- interrupts: The EXT_INT_0 parent interrupt resource must be listed first.
29- interrupt-cells: Should be two.
30       - first cell is 0-N coresponding for EXT_INT_0 to EXT_INT_N.
31       - second cell is used to specify flags.
32- interrupt-controller: Marks the device node as an interrupt controller.
33- apm,nr-gpios: Optional, specify number of gpios pin.
34- apm,nr-irqs: Optional, specify number of interrupt pins.
35- apm,irq-start: Optional, specify lowest gpio pin support interrupt.
36
37Example:
38	sbgpio: gpio@17001000{
39		compatible = "apm,xgene-gpio-sb";
40		reg = <0x0 0x17001000 0x0 0x400>;
41		#gpio-cells = <2>;
42		gpio-controller;
43		interrupts = 	<0x0 0x28 0x1>,
44				<0x0 0x29 0x1>,
45				<0x0 0x2a 0x1>,
46				<0x0 0x2b 0x1>,
47				<0x0 0x2c 0x1>,
48				<0x0 0x2d 0x1>;
49		interrupt-parent = <&gic>;
50		#interrupt-cells = <2>;
51		interrupt-controller;
52		apm,nr-gpios = <22>;
53		apm,nr-irqs = <6>;
54		apm,irq-start = <8>;
55	};
56
57	testuser {
58		compatible = "example,testuser";
59		/* Use the GPIO_13/EXT_INT_5 line as an active high triggered
60		 * level interrupt
61		 */
62		interrupts = <5 4>;
63		interrupt-parent = <&sbgpio>;
64	};
65