xref: /linux/Documentation/devicetree/bindings/serial/serial.yaml (revision 40286d6379aacfcc053253ef78dc78b09addffda)
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
90  port:
91    $ref: /schemas/graph.yaml#/properties/port
92
93patternProperties:
94  "^(bluetooth|bluetooth-gnss|embedded-controller|gnss|gps|mcu|onewire)$":
95    if:
96      type: object
97    then:
98      additionalProperties: true
99      $ref: serial-peripheral-props.yaml#
100      description:
101        Serial attached devices shall be a child node of the host UART device
102        the slave device is attached to. It is expected that the attached
103        device is the only child node of the UART device. The slave device node
104        name shall reflect the generic type of device for the node.
105
106      properties:
107        compatible:
108          description:
109            Compatible of the device connected to the serial port.
110
111      required:
112        - compatible
113
114if:
115  required:
116    - uart-has-rtscts
117then:
118  properties:
119    cts-gpios: false
120    rts-gpios: false
121
122additionalProperties: true
123
124examples:
125  - |
126    serial@1234 {
127        compatible = "ns16550a";
128        reg = <0x1234 0x20>;
129        interrupts = <1>;
130
131        bluetooth {
132            compatible = "brcm,bcm4330-bt";
133            interrupt-parent = <&gpio>;
134            interrupts = <10>;
135        };
136    };
137