summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/serial/st,stm32-uart.yaml
blob: 71a6426bc558a1cbca2fd764acb931d08333410f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/serial/st,stm32-uart.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

maintainers:
  - Erwan Le Ray <erwan.leray@st.com>

title: STMicroelectronics STM32 USART bindings

properties:
  compatible:
    enum:
      - st,stm32-uart
      - st,stm32f7-uart
      - st,stm32h7-uart

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 1

  resets:
    maxItems: 1

  label:
    description: label associated with this uart

  st,hw-flow-ctrl:
    description: enable hardware flow control (deprecated)
    $ref: /schemas/types.yaml#/definitions/flag

  uart-has-rtscts: true

  rx-tx-swap: true

  dmas:
    minItems: 1
    maxItems: 2

  dma-names:
    items:
      enum: [ rx, tx ]
    minItems: 1
    maxItems: 2

# cts-gpios and rts-gpios properties can be used instead of 'uart-has-rtscts'
# or 'st,hw-flow-ctrl' (deprecated) for making use of any gpio pins for flow
# control instead of dedicated pins.
#
# It should be noted that both cts-gpios/rts-gpios and 'uart-has-rtscts' or
# 'st,hw-flow-ctrl' (deprecated) properties cannot co-exist in a design.
  cts-gpios: true
  rts-gpios: true

  wakeup-source: true

  rs485-rts-delay: true
  rs485-rts-active-low: true
  linux,rs485-enabled-at-boot-time: true
  rs485-rx-during-tx: true

  rx-threshold:
    description:
      If value is set to 1, RX FIFO threshold is disabled.
    enum: [1, 2, 4, 8, 12, 14, 16]
    default: 8

  tx-threshold:
    description:
      If value is set to 1, TX FIFO threshold is disabled.
    enum: [1, 2, 4, 8, 12, 14, 16]
    default: 8

allOf:
  - $ref: rs485.yaml#
  - $ref: serial.yaml#
  - if:
      required:
        - st,hw-flow-ctrl
    then:
      properties:
        cts-gpios: false
        rts-gpios: false
  - if:
      properties:
        compatible:
          const: st,stm32-uart
    then:
      properties:
        rx-tx-swap: false
  - if:
      properties:
        compatible:
          contains:
            enum:
              - st,stm32-uart
              - st,stm32f7-uart
    then:
      properties:
        rx-threshold: false
        tx-threshold: false

required:
  - compatible
  - reg
  - interrupts
  - clocks

additionalProperties:
  type: object

examples:
  - |
    #include <dt-bindings/clock/stm32mp1-clks.h>
    usart1: serial@40011000 {
      compatible = "st,stm32h7-uart";
      reg = <0x40011000 0x400>;
      interrupts = <37>;
      clocks = <&rcc 0 164>;
      dmas = <&dma2 2 4 0x414 0x0>,
             <&dma2 7 4 0x414 0x0>;
      dma-names = "rx", "tx";
      rx-threshold = <4>;
      tx-threshold = <4>;
      rs485-rts-active-low;
    };

...