xref: /linux/Documentation/devicetree/bindings/serial/serial.yaml (revision 9e56ff53b4115875667760445b028357848b4748)
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
7title: Serial Interface Generic
8
9maintainers:
10  - Rob Herring <robh@kernel.org>
11  - Greg Kroah-Hartman <gregkh@linuxfoundation.org>
12
13description:
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
22properties:
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
90patternProperties:
91  "^(bluetooth|bluetooth-gnss|gnss|gps|mcu)$":
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
131if:
132  required:
133    - uart-has-rtscts
134then:
135  properties:
136    cts-gpios: false
137    rts-gpios: false
138
139additionalProperties: true
140
141examples:
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    };
154