Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / serial / serial.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: "http://devicetree.org/schemas/serial/serial.yaml#"
5 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
6
7 title: Serial Interface Generic DT Bindings
8
9 maintainers:
10   - Rob Herring <robh@kernel.org>
11   - Greg Kroah-Hartman <gregkh@linuxfoundation.org>
12
13 description:
14   This document lists a set of generic properties for describing UARTs in a
15   device tree.  Whether these properties apply to a particular device depends
16   on the DT bindings for the actual device.
17
18   Each enabled UART may have an optional "serialN" alias in the "aliases" node,
19   where N is the port number (non-negative decimal integer) as printed on the
20   label next to the physical port.
21
22 properties:
23   $nodename:
24     pattern: "^serial(@.*)?$"
25
26   cts-gpios:
27     maxItems: 1
28     description:
29       Must contain a GPIO specifier, referring to the GPIO pin to be used as
30       the UART's CTS line.
31
32   dcd-gpios:
33     maxItems: 1
34     description:
35       Must contain a GPIO specifier, referring to the GPIO pin to be used as
36       the UART's DCD line.
37
38   dsr-gpios:
39     maxItems: 1
40     description:
41       Must contain a GPIO specifier, referring to the GPIO pin to be used as
42       the UART's DSR line.
43
44   dtr-gpios:
45     maxItems: 1
46     description:
47       Must contain a GPIO specifier, referring to the GPIO pin to be used as
48       the UART's DTR line.
49
50   rng-gpios:
51     maxItems: 1
52     description:
53       Must contain a GPIO specifier, referring to the GPIO pin to be used as
54       the UART's RNG line.
55
56   rts-gpios:
57     maxItems: 1
58     description:
59       Must contain a GPIO specifier, referring to the GPIO pin to be used as
60       the UART's RTS line.
61
62   uart-has-rtscts:
63     $ref: /schemas/types.yaml#/definitions/flag
64     description:
65       The presence of this property indicates that the UART has dedicated lines
66       for RTS/CTS hardware flow control, and that they are available for use
67       (wired and enabled by pinmux configuration).  This depends on both the
68       UART hardware and the board wiring.
69
70   rx-tx-swap:
71     type: boolean
72     description: RX and TX pins are swapped.
73
74   cts-rts-swap:
75     type: boolean
76     description: CTS and RTS pins are swapped.
77
78   rx-threshold:
79     $ref: /schemas/types.yaml#/definitions/uint32
80     description:
81       RX FIFO threshold configuration (in bytes).
82
83   tx-threshold:
84     $ref: /schemas/types.yaml#/definitions/uint32
85     description:
86       TX FIFO threshold configuration (in bytes).
87
88 if:
89   required:
90     - uart-has-rtscts
91 then:
92   properties:
93     cts-gpios: false
94     rts-gpios: false
95
96 patternProperties:
97   ".*":
98     if:
99       type: object
100     then:
101       description:
102         Serial attached devices shall be a child node of the host UART device
103         the slave device is attached to. It is expected that the attached
104         device is the only child node of the UART device. The slave device node
105         name shall reflect the generic type of device for the node.
106
107       properties:
108         compatible:
109           description:
110             Compatible of the device connected to the serial port.
111
112         max-speed:
113           $ref: /schemas/types.yaml#/definitions/uint32
114           description:
115             The maximum baud rate the device operates at.
116             This should only be present if the maximum is less than the slave
117             device can support.  For example, a particular board has some
118             signal quality issue or the host processor can't support higher
119             baud rates.
120
121         current-speed:
122           $ref: /schemas/types.yaml#/definitions/uint32
123           description: |
124             The current baud rate the device operates at.
125             This should only be present in case a driver has no chance to know
126             the baud rate of the slave device.
127             Examples:
128               * device supports auto-baud
129               * the rate is setup by a bootloader and there is no way to reset
130                 the device
131               * device baud rate is configured by its firmware but there is no
132                 way to request the actual settings
133
134       required:
135         - compatible
136
137 additionalProperties: true
138
139 examples:
140   - |
141     serial@1234 {
142             compatible = "ns16550a";
143             reg = <0x1234 0x20>;
144             interrupts = <1>;
145
146             bluetooth {
147                     compatible = "brcm,bcm4330-bt";
148                     interrupt-parent = <&gpio>;
149                     interrupts = <10>;
150             };
151     };