1e69f5dc6SLubomir Rintel# Copyright 2020 Lubomir Rintel <lkundrak@v3.sk>
2e69f5dc6SLubomir Rintel%YAML 1.2
3e69f5dc6SLubomir Rintel---
4e69f5dc6SLubomir Rintel$id: http://devicetree.org/schemas/serial/8250.yaml#
5e69f5dc6SLubomir Rintel$schema: http://devicetree.org/meta-schemas/core.yaml#
6e69f5dc6SLubomir Rintel
784e85359SKrzysztof Kozlowskititle: UART (Universal Asynchronous Receiver/Transmitter)
8e69f5dc6SLubomir Rintel
9e69f5dc6SLubomir Rintelmaintainers:
10e69f5dc6SLubomir Rintel  - devicetree@vger.kernel.org
11e69f5dc6SLubomir Rintel
12e69f5dc6SLubomir RintelallOf:
138f082dcfSZhen Lei  - $ref: serial.yaml#
14*770ba14bSKrzysztof Kozlowski  - $ref: /schemas/memory-controllers/mc-peripheral-props.yaml#
15e69f5dc6SLubomir Rintel  - if:
16845766b6SZev Weiss      anyOf:
17845766b6SZev Weiss        - required:
18845766b6SZev Weiss            - aspeed,lpc-io-reg
19845766b6SZev Weiss        - required:
20845766b6SZev Weiss            - aspeed,lpc-interrupts
21845766b6SZev Weiss        - required:
22e69f5dc6SLubomir Rintel            - aspeed,sirq-polarity-sense
23e69f5dc6SLubomir Rintel    then:
24e69f5dc6SLubomir Rintel      properties:
25e69f5dc6SLubomir Rintel        compatible:
26e69f5dc6SLubomir Rintel          const: aspeed,ast2500-vuart
27e69f5dc6SLubomir Rintel  - if:
28e69f5dc6SLubomir Rintel      properties:
29e69f5dc6SLubomir Rintel        compatible:
30e69f5dc6SLubomir Rintel          const: mrvl,mmp-uart
31e69f5dc6SLubomir Rintel    then:
32e69f5dc6SLubomir Rintel      properties:
33e69f5dc6SLubomir Rintel        reg-shift:
34e69f5dc6SLubomir Rintel          const: 2
35e69f5dc6SLubomir Rintel      required:
36e69f5dc6SLubomir Rintel        - reg-shift
37e69f5dc6SLubomir Rintel  - if:
38e69f5dc6SLubomir Rintel      not:
39e69f5dc6SLubomir Rintel        properties:
40e69f5dc6SLubomir Rintel          compatible:
41e69f5dc6SLubomir Rintel            items:
42e69f5dc6SLubomir Rintel              - enum:
43e69f5dc6SLubomir Rintel                  - ns8250
44e69f5dc6SLubomir Rintel                  - ns16450
45e69f5dc6SLubomir Rintel                  - ns16550
46e69f5dc6SLubomir Rintel                  - ns16550a
47e69f5dc6SLubomir Rintel    then:
48e69f5dc6SLubomir Rintel      anyOf:
49e69f5dc6SLubomir Rintel        - required: [ clock-frequency ]
50e69f5dc6SLubomir Rintel        - required: [ clocks ]
51e69f5dc6SLubomir Rintel
52e69f5dc6SLubomir Rintelproperties:
53e69f5dc6SLubomir Rintel  compatible:
54e69f5dc6SLubomir Rintel    oneOf:
55e69f5dc6SLubomir Rintel      - const: ns8250
56e69f5dc6SLubomir Rintel      - const: ns16450
57e69f5dc6SLubomir Rintel      - const: ns16550
58e69f5dc6SLubomir Rintel      - const: ns16550a
59e69f5dc6SLubomir Rintel      - const: ns16850
60e69f5dc6SLubomir Rintel      - const: aspeed,ast2400-vuart
61e69f5dc6SLubomir Rintel      - const: aspeed,ast2500-vuart
62e69f5dc6SLubomir Rintel      - const: intel,xscale-uart
63e69f5dc6SLubomir Rintel      - const: mrvl,pxa-uart
643ece873eSJonathan Neuschäfer      - const: nuvoton,wpcm450-uart
65e69f5dc6SLubomir Rintel      - const: nuvoton,npcm750-uart
66c8177f90STomer Maimon      - const: nvidia,tegra20-uart
67e69f5dc6SLubomir Rintel      - const: nxp,lpc3220-uart
68e69f5dc6SLubomir Rintel      - items:
69e69f5dc6SLubomir Rintel          - enum:
70e69f5dc6SLubomir Rintel              - exar,xr16l2552
71f444f34bSLinus Walleij              - exar,xr16l2551
72f444f34bSLinus Walleij              - exar,xr16l2550
73f444f34bSLinus Walleij          - const: ns8250
74f444f34bSLinus Walleij      - items:
75f444f34bSLinus Walleij          - enum:
76f444f34bSLinus Walleij              - altr,16550-FIFO32
77e69f5dc6SLubomir Rintel              - altr,16550-FIFO64
78e69f5dc6SLubomir Rintel              - altr,16550-FIFO128
79e69f5dc6SLubomir Rintel              - fsl,16550-FIFO64
80e69f5dc6SLubomir Rintel              - fsl,ns16550
81e69f5dc6SLubomir Rintel              - andestech,uart16550
82e69f5dc6SLubomir Rintel              - nxp,lpc1850-uart
83e69f5dc6SLubomir Rintel              - opencores,uart16550-rtlsvn105
84e69f5dc6SLubomir Rintel              - ti,da830-uart
85e69f5dc6SLubomir Rintel          - const: ns16550a
86e69f5dc6SLubomir Rintel      - items:
87e69f5dc6SLubomir Rintel          - enum:
88e69f5dc6SLubomir Rintel              - ns16750
89e69f5dc6SLubomir Rintel              - cavium,octeon-3860-uart
90e69f5dc6SLubomir Rintel              - xlnx,xps-uart16550-2.00.b
91e69f5dc6SLubomir Rintel              - ralink,rt2880-uart
92e69f5dc6SLubomir Rintel          - enum:
93e69f5dc6SLubomir Rintel              - ns16550 # Deprecated, unless the FIFO really is broken
94e69f5dc6SLubomir Rintel              - ns16550a
95e69f5dc6SLubomir Rintel      - items:
96e69f5dc6SLubomir Rintel          - enum:
97e69f5dc6SLubomir Rintel              - nuvoton,npcm845-uart
98e69f5dc6SLubomir Rintel          - const: nuvoton,npcm750-uart
99e69f5dc6SLubomir Rintel      - items:
100e69f5dc6SLubomir Rintel          - enum:
101e69f5dc6SLubomir Rintel              - ralink,mt7620a-uart
102e69f5dc6SLubomir Rintel              - ralink,rt3052-uart
103e69f5dc6SLubomir Rintel              - ralink,rt3883-uart
104e69f5dc6SLubomir Rintel          - const: ralink,rt2880-uart
105e69f5dc6SLubomir Rintel          - enum:
106e69f5dc6SLubomir Rintel              - ns16550 # Deprecated, unless the FIFO really is broken
107e69f5dc6SLubomir Rintel              - ns16550a
108e69f5dc6SLubomir Rintel      - items:
109e69f5dc6SLubomir Rintel          - enum:
110e69f5dc6SLubomir Rintel              - mediatek,mt7622-btif
111e69f5dc6SLubomir Rintel              - mediatek,mt7623-btif
112e69f5dc6SLubomir Rintel          - const: mediatek,mtk-btif
113e69f5dc6SLubomir Rintel      - items:
114e69f5dc6SLubomir Rintel          - const: mrvl,mmp-uart
115e69f5dc6SLubomir Rintel          - const: intel,xscale-uart
116e69f5dc6SLubomir Rintel      - items:
117e69f5dc6SLubomir Rintel          - enum:
11896b594d2SThierry Reding              - nvidia,tegra30-uart
119e69f5dc6SLubomir Rintel              - nvidia,tegra114-uart
120e69f5dc6SLubomir Rintel              - nvidia,tegra124-uart
12196b594d2SThierry Reding              - nvidia,tegra210-uart
122e69f5dc6SLubomir Rintel              - nvidia,tegra186-uart
123e69f5dc6SLubomir Rintel              - nvidia,tegra194-uart
124e69f5dc6SLubomir Rintel              - nvidia,tegra234-uart
125e69f5dc6SLubomir Rintel          - const: nvidia,tegra20-uart
126e69f5dc6SLubomir Rintel
127e69f5dc6SLubomir Rintel  reg:
128e69f5dc6SLubomir Rintel    maxItems: 1
129e69f5dc6SLubomir Rintel
130e69f5dc6SLubomir Rintel  interrupts:
131e69f5dc6SLubomir Rintel    maxItems: 1
132e69f5dc6SLubomir Rintel
133e69f5dc6SLubomir Rintel  clock-frequency: true
134e69f5dc6SLubomir Rintel
135e69f5dc6SLubomir Rintel  clocks:
136e69f5dc6SLubomir Rintel    maxItems: 1
137e69f5dc6SLubomir Rintel
138e69f5dc6SLubomir Rintel  resets:
139d69c6dddSRob Herring    maxItems: 1
140e69f5dc6SLubomir Rintel
141e69f5dc6SLubomir Rintel  current-speed:
142e69f5dc6SLubomir Rintel    $ref: /schemas/types.yaml#/definitions/uint32
1434e71ed98SRob Herring    description: The current active speed of the UART.
144e69f5dc6SLubomir Rintel
145e69f5dc6SLubomir Rintel  reg-offset:
146e69f5dc6SLubomir Rintel    $ref: /schemas/types.yaml#/definitions/uint32
147e69f5dc6SLubomir Rintel    description: |
148e69f5dc6SLubomir Rintel      Offset to apply to the mapbase from the start of the registers.
149e69f5dc6SLubomir Rintel
150e69f5dc6SLubomir Rintel  reg-shift:
151e69f5dc6SLubomir Rintel    description: Quantity to shift the register offsets by.
152e69f5dc6SLubomir Rintel
153e69f5dc6SLubomir Rintel  reg-io-width:
154e69f5dc6SLubomir Rintel    description: |
155e69f5dc6SLubomir Rintel      The size (in bytes) of the IO accesses that should be performed on the
156e69f5dc6SLubomir Rintel      device. There are some systems that require 32-bit accesses to the
157e69f5dc6SLubomir Rintel      UART (e.g. TI davinci).
158e69f5dc6SLubomir Rintel
159e69f5dc6SLubomir Rintel  used-by-rtas:
160e69f5dc6SLubomir Rintel    type: boolean
161e69f5dc6SLubomir Rintel    description: |
162e69f5dc6SLubomir Rintel      Set to indicate that the port is in use by the OpenFirmware RTAS and
163e69f5dc6SLubomir Rintel      should not be registered.
164e69f5dc6SLubomir Rintel
165e69f5dc6SLubomir Rintel  no-loopback-test:
166e69f5dc6SLubomir Rintel    type: boolean
167e69f5dc6SLubomir Rintel    description: |
168d69c6dddSRob Herring      Set to indicate that the port does not implement loopback test mode.
169e69f5dc6SLubomir Rintel
170e69f5dc6SLubomir Rintel  fifo-size:
171e69f5dc6SLubomir Rintel    $ref: /schemas/types.yaml#/definitions/uint32
172e69f5dc6SLubomir Rintel    description: The fifo size of the UART.
173e69f5dc6SLubomir Rintel
174e69f5dc6SLubomir Rintel  auto-flow-control:
175e69f5dc6SLubomir Rintel    type: boolean
176e69f5dc6SLubomir Rintel    description: |
177e69f5dc6SLubomir Rintel      One way to enable automatic flow control support. The driver is
178e69f5dc6SLubomir Rintel      allowed to detect support for the capability even without this
179e69f5dc6SLubomir Rintel      property.
180e69f5dc6SLubomir Rintel
181e69f5dc6SLubomir Rintel  tx-threshold:
182e69f5dc6SLubomir Rintel    description: |
183e69f5dc6SLubomir Rintel      Specify the TX FIFO low water indication for parts with programmable
184e69f5dc6SLubomir Rintel      TX FIFO thresholds.
185e69f5dc6SLubomir Rintel
186e69f5dc6SLubomir Rintel  overrun-throttle-ms:
187e69f5dc6SLubomir Rintel    description: |
188e69f5dc6SLubomir Rintel      How long to pause uart rx when input overrun is encountered.
189e69f5dc6SLubomir Rintel
190e69f5dc6SLubomir Rintel  rts-gpios: true
191e69f5dc6SLubomir Rintel  cts-gpios: true
192e69f5dc6SLubomir Rintel  dtr-gpios: true
193e69f5dc6SLubomir Rintel  dsr-gpios: true
194e69f5dc6SLubomir Rintel  rng-gpios: true
195e69f5dc6SLubomir Rintel  dcd-gpios: true
196e69f5dc6SLubomir Rintel
197e69f5dc6SLubomir Rintel  aspeed,sirq-polarity-sense:
198e69f5dc6SLubomir Rintel    $ref: /schemas/types.yaml#/definitions/phandle-array
199e69f5dc6SLubomir Rintel    description: |
200e69f5dc6SLubomir Rintel      Phandle to aspeed,ast2500-scu compatible syscon alongside register
201a13df3beSZev Weiss      offset and bit number to identify how the SIRQ polarity should be
202e69f5dc6SLubomir Rintel      configured. One possible data source is the LPC/eSPI mode bit. Only
203845766b6SZev Weiss      applicable to aspeed,ast2500-vuart.
204845766b6SZev Weiss    deprecated: true
205845766b6SZev Weiss
206845766b6SZev Weiss  aspeed,lpc-io-reg:
207845766b6SZev Weiss    $ref: /schemas/types.yaml#/definitions/uint32-array
208845766b6SZev Weiss    maxItems: 1
209845766b6SZev Weiss    description: |
210845766b6SZev Weiss      The VUART LPC address.  Only applicable to aspeed,ast2500-vuart.
211845766b6SZev Weiss
212845766b6SZev Weiss  aspeed,lpc-interrupts:
213845766b6SZev Weiss    $ref: /schemas/types.yaml#/definitions/uint32-array
214845766b6SZev Weiss    minItems: 2
215845766b6SZev Weiss    maxItems: 2
216845766b6SZev Weiss    description: |
217e69f5dc6SLubomir Rintel      A 2-cell property describing the VUART SIRQ number and SIRQ
218e69f5dc6SLubomir Rintel      polarity (IRQ_TYPE_LEVEL_LOW or IRQ_TYPE_LEVEL_HIGH).  Only
219e69f5dc6SLubomir Rintel      applicable to aspeed,ast2500-vuart.
220e69f5dc6SLubomir Rintel
221e69f5dc6SLubomir Rintelrequired:
222e69f5dc6SLubomir Rintel  - reg
223e69f5dc6SLubomir Rintel  - interrupts
224e69f5dc6SLubomir Rintel
225e69f5dc6SLubomir RintelunevaluatedProperties: false
226e69f5dc6SLubomir Rintel
227e69f5dc6SLubomir Rintelexamples:
228e69f5dc6SLubomir Rintel  - |
229e69f5dc6SLubomir Rintel    serial@80230000 {
230e69f5dc6SLubomir Rintel        compatible = "ns8250";
231e69f5dc6SLubomir Rintel        reg = <0x80230000 0x100>;
232e69f5dc6SLubomir Rintel        interrupts = <10>;
233e69f5dc6SLubomir Rintel        reg-shift = <2>;
234e69f5dc6SLubomir Rintel        clock-frequency = <48000000>;
235e69f5dc6SLubomir Rintel    };
236e69f5dc6SLubomir Rintel  - |
237e69f5dc6SLubomir Rintel    #include <dt-bindings/gpio/gpio.h>
238e69f5dc6SLubomir Rintel    serial@49042000 {
239e69f5dc6SLubomir Rintel        compatible = "andestech,uart16550", "ns16550a";
240e69f5dc6SLubomir Rintel        reg = <0x49042000 0x400>;
241e69f5dc6SLubomir Rintel        interrupts = <80>;
242e69f5dc6SLubomir Rintel        clock-frequency = <48000000>;
243e69f5dc6SLubomir Rintel        cts-gpios = <&gpio3 5 GPIO_ACTIVE_LOW>;
244e69f5dc6SLubomir Rintel        rts-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
245e69f5dc6SLubomir Rintel        dtr-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
246e69f5dc6SLubomir Rintel        dsr-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
247e69f5dc6SLubomir Rintel        dcd-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
248845766b6SZev Weiss        rng-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
249e69f5dc6SLubomir Rintel    };
250e69f5dc6SLubomir Rintel  - |
251e69f5dc6SLubomir Rintel    #include <dt-bindings/clock/aspeed-clock.h>
252e69f5dc6SLubomir Rintel    #include <dt-bindings/interrupt-controller/irq.h>
253e69f5dc6SLubomir Rintel    serial@1e787000 {
254e69f5dc6SLubomir Rintel        compatible = "aspeed,ast2500-vuart";
255e69f5dc6SLubomir Rintel        reg = <0x1e787000 0x40>;
256845766b6SZev Weiss        reg-shift = <2>;
257845766b6SZev Weiss        interrupts = <8>;
258e69f5dc6SLubomir Rintel        clocks = <&syscon ASPEED_CLK_APB>;
259e69f5dc6SLubomir Rintel        no-loopback-test;
260e69f5dc6SLubomir Rintel        aspeed,lpc-io-reg = <0x3f8>;
261        aspeed,lpc-interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
262    };
263
264...
265