1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/serial/st,stm32-uart.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7maintainers:
8  - Erwan Le Ray <erwan.leray@foss.st.com>
9
10title: STMicroelectronics STM32 USART bindings
11
12properties:
13  compatible:
14    enum:
15      - st,stm32-uart
16      - st,stm32f7-uart
17      - st,stm32h7-uart
18
19  reg:
20    maxItems: 1
21
22  interrupts:
23    maxItems: 1
24
25  clocks:
26    maxItems: 1
27
28  resets:
29    maxItems: 1
30
31  label:
32    description: label associated with this uart
33
34  st,hw-flow-ctrl:
35    description: enable hardware flow control (deprecated)
36    $ref: /schemas/types.yaml#/definitions/flag
37
38  uart-has-rtscts: true
39
40  rx-tx-swap: true
41
42  dmas:
43    minItems: 1
44    maxItems: 2
45
46  dma-names:
47    items:
48      enum: [ rx, tx ]
49    minItems: 1
50    maxItems: 2
51
52# cts-gpios and rts-gpios properties can be used instead of 'uart-has-rtscts'
53# or 'st,hw-flow-ctrl' (deprecated) for making use of any gpio pins for flow
54# control instead of dedicated pins.
55#
56# It should be noted that both cts-gpios/rts-gpios and 'uart-has-rtscts' or
57# 'st,hw-flow-ctrl' (deprecated) properties cannot co-exist in a design.
58  cts-gpios: true
59  rts-gpios: true
60
61  wakeup-source: true
62
63  rs485-rts-delay: true
64  rs485-rts-active-low: true
65  linux,rs485-enabled-at-boot-time: true
66  rs485-rx-during-tx: true
67
68  rx-threshold:
69    description:
70      If value is set to 1, RX FIFO threshold is disabled.
71    enum: [1, 2, 4, 8, 12, 14, 16]
72    default: 8
73
74  tx-threshold:
75    description:
76      If value is set to 1, TX FIFO threshold is disabled.
77    enum: [1, 2, 4, 8, 12, 14, 16]
78    default: 8
79
80allOf:
81  - $ref: rs485.yaml#
82  - $ref: serial.yaml#
83  - if:
84      required:
85        - st,hw-flow-ctrl
86    then:
87      properties:
88        cts-gpios: false
89        rts-gpios: false
90  - if:
91      properties:
92        compatible:
93          const: st,stm32-uart
94    then:
95      properties:
96        rx-tx-swap: false
97  - if:
98      properties:
99        compatible:
100          contains:
101            enum:
102              - st,stm32-uart
103              - st,stm32f7-uart
104    then:
105      properties:
106        rx-threshold: false
107        tx-threshold: false
108
109required:
110  - compatible
111  - reg
112  - interrupts
113  - clocks
114
115unevaluatedProperties: false
116
117examples:
118  - |
119    #include <dt-bindings/clock/stm32mp1-clks.h>
120    usart1: serial@40011000 {
121      compatible = "st,stm32h7-uart";
122      reg = <0x40011000 0x400>;
123      interrupts = <37>;
124      clocks = <&rcc 0 164>;
125      dmas = <&dma2 2 4 0x414 0x0>,
126             <&dma2 7 4 0x414 0x0>;
127      dma-names = "rx", "tx";
128      rx-threshold = <4>;
129      tx-threshold = <4>;
130      rs485-rts-active-low;
131    };
132
133...
134