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