xref: /freebsd/sys/dts/bindings-gpio.txt (revision e8d8bef961a50d4dc22501cde4fb9fb0be1b2532)
1$FreeBSD$
2
3GPIO configuration.
4===================
5
61. Properties for GPIO Controllers
7
81.1 #gpio-cells
9
10Property:	#gpio-cells
11
12Value type:	<u32>
13
14Description:	The #gpio-cells property defines the number of cells required
15		to encode a gpio specifier.
16
17
181.2 gpio-controller
19
20Property:	gpio-controller
21
22Value type:	<empty>
23
24Description:	The presence of a gpio-controller property defines a node as a
25		GPIO controller node.
26
27
281.3 pin-count
29
30Property:	pin-count
31
32Value type:	<u32>
33
34Description:	The pin-count property defines the number of GPIO pins.
35
36
371.4 Example
38
39	GPIO: gpio@10100 {
40		#gpio-cells = <3>;
41		compatible = "mrvl,gpio";
42		reg = <0x10100 0x20>;
43		gpio-controller;
44		interrupts = <6 7 8 9>;
45		interrupt-parent = <&PIC>;
46		pin-count = <50>
47	};
48
492. Properties for GPIO consumer nodes.
50
512.1 gpios
52
53Property:	gpios
54
55Value type:	<prop-encoded-array> encoded as arbitrary number of GPIO
56		specifiers.
57
58Description:	The gpios property of a device node defines the GPIO or GPIOs
59		that are used by the device. The value of the gpios property
60		consists of an arbitrary number of GPIO specifiers.
61
62		The first cell of the GPIO specifier is phandle of the node's
63		parent GPIO controller and remaining cells are defined by the
64		binding describing the GPIO parent, typically include
65		information like pin number, direction and various flags.
66
67Example:
68		gpios = <&GPIO 0 1		/* GPIO[0]:  FLAGS */
69			 &GPIO 1 2>;		/* GPIO[1]:  FLAGS */
70
71
723. GPIO controller specifier
73
74	<phandle pin dir flags>
75
76
77pin:	0-MAX				GPIO pin number.
78
79flags:
80	Available flags are listed in sys/conf.h. Following combination
81	can be supported by the controller. For details please refer
82	to controller's GPIO reference manual.
83
84	GPIO_PIN_INPUT		0x0001	Input direction
85	GPIO_PIN_OUTPUT		0x0002	Output direction
86	GPIO_PIN_OPENDRAIN	0x0004	Open-drain output
87	GPIO_PIN_OPENSOURCE	0x0008	Open-source output
88	GPIO_PIN_PUSHPULL	0x0010	Push-pull output
89	GPIO_PIN_TRISTATE	0x0020	Output disabled
90	GPIO_PIN_PULLUP		0x0040	Internal pull-up enabled
91	GPIO_PIN_PULLDOWN	0x0080	Internal pull-down enabled
92	GPIO_PIN_INVIN		0x0100	Invert input
93	GPIO_PIN_INVOUT		0x0200	Invert output
94	GPIO_PIN_PULSATE	0x0400	Pulsate in hardware
95	GPIO_PIN_IRQ_POL_EDG	0x0800	IRQ active single edge
96	GPIO_PIN_IRQ_POL_DBL	0x1000	IRQ active double edge
97	GPIO_PIN_IRQ_POL_LVL	0x2000	IRQ active level
98	GPIO_PIN_IRQ_DEBOUNCE	0x4000	Debounce on IRQ pin
99
100Example:
101	gpios = <&GPIO 0  0x00000001	/* GPIO[0]:   IN */
102		 &GPIO 1  0x00000002	/* GPIO[1]:   OUT */
103		 &GPIO 2  0x00000801	/* GPIO[2]:   IN, IRQ (edge) */
104		 &GPIO 3  0x00004001	/* GPIO[3]:   IN, IRQ (level) */
105		 ...
106		 &GPIO 10 0x00000401>;	/* GPIO[10]:  OUT, blink */
107