Linux 6.9-rc1
[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
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   label: true
27
28   cts-gpios:
29     maxItems: 1
30     description:
31       Must contain a GPIO specifier, referring to the GPIO pin to be used as
32       the UART's CTS line.
33
34   dcd-gpios:
35     maxItems: 1
36     description:
37       Must contain a GPIO specifier, referring to the GPIO pin to be used as
38       the UART's DCD line.
39
40   dsr-gpios:
41     maxItems: 1
42     description:
43       Must contain a GPIO specifier, referring to the GPIO pin to be used as
44       the UART's DSR line.
45
46   dtr-gpios:
47     maxItems: 1
48     description:
49       Must contain a GPIO specifier, referring to the GPIO pin to be used as
50       the UART's DTR line.
51
52   rng-gpios:
53     maxItems: 1
54     description:
55       Must contain a GPIO specifier, referring to the GPIO pin to be used as
56       the UART's RNG line.
57
58   rts-gpios:
59     maxItems: 1
60     description:
61       Must contain a GPIO specifier, referring to the GPIO pin to be used as
62       the UART's RTS line.
63
64   uart-has-rtscts:
65     $ref: /schemas/types.yaml#/definitions/flag
66     description:
67       The presence of this property indicates that the UART has dedicated lines
68       for RTS/CTS hardware flow control, and that they are available for use
69       (wired and enabled by pinmux configuration).  This depends on both the
70       UART hardware and the board wiring.
71
72   rx-tx-swap:
73     type: boolean
74     description: RX and TX pins are swapped.
75
76   cts-rts-swap:
77     type: boolean
78     description: CTS and RTS pins are swapped.
79
80   rx-threshold:
81     $ref: /schemas/types.yaml#/definitions/uint32
82     description:
83       RX FIFO threshold configuration (in bytes).
84
85   tx-threshold:
86     $ref: /schemas/types.yaml#/definitions/uint32
87     description:
88       TX FIFO threshold configuration (in bytes).
89
90 patternProperties:
91   "^(bluetooth|bluetooth-gnss|gnss|gps|mcu|onewire)$":
92     if:
93       type: object
94     then:
95       description:
96         Serial attached devices shall be a child node of the host UART device
97         the slave device is attached to. It is expected that the attached
98         device is the only child node of the UART device. The slave device node
99         name shall reflect the generic type of device for the node.
100
101       properties:
102         compatible:
103           description:
104             Compatible of the device connected to the serial port.
105
106         max-speed:
107           $ref: /schemas/types.yaml#/definitions/uint32
108           description:
109             The maximum baud rate the device operates at.
110             This should only be present if the maximum is less than the slave
111             device can support.  For example, a particular board has some
112             signal quality issue or the host processor can't support higher
113             baud rates.
114
115         current-speed:
116           $ref: /schemas/types.yaml#/definitions/uint32
117           description: |
118             The current baud rate the device operates at.
119             This should only be present in case a driver has no chance to know
120             the baud rate of the slave device.
121             Examples:
122               * device supports auto-baud
123               * the rate is setup by a bootloader and there is no way to reset
124                 the device
125               * device baud rate is configured by its firmware but there is no
126                 way to request the actual settings
127
128       required:
129         - compatible
130
131 if:
132   required:
133     - uart-has-rtscts
134 then:
135   properties:
136     cts-gpios: false
137     rts-gpios: false
138
139 additionalProperties: true
140
141 examples:
142   - |
143     serial@1234 {
144         compatible = "ns16550a";
145         reg = <0x1234 0x20>;
146         interrupts = <1>;
147
148         bluetooth {
149             compatible = "brcm,bcm4330-bt";
150             interrupt-parent = <&gpio>;
151             interrupts = <10>;
152         };
153     };