162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/serial/mediatek,uart.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: MediaTek Universal Asynchronous Receiver/Transmitter (UART)
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Matthias Brugger <matthias.bgg@gmail.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciallOf:
1362306a36Sopenharmony_ci  - $ref: serial.yaml#
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cidescription: |
1662306a36Sopenharmony_ci  The MediaTek UART is based on the basic 8250 UART and compatible
1762306a36Sopenharmony_ci  with 16550A, with enhancements for high speed baud rates and
1862306a36Sopenharmony_ci  support for DMA.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciproperties:
2162306a36Sopenharmony_ci  compatible:
2262306a36Sopenharmony_ci    oneOf:
2362306a36Sopenharmony_ci      - const: mediatek,mt6577-uart
2462306a36Sopenharmony_ci      - items:
2562306a36Sopenharmony_ci          - enum:
2662306a36Sopenharmony_ci              - mediatek,mt2701-uart
2762306a36Sopenharmony_ci              - mediatek,mt2712-uart
2862306a36Sopenharmony_ci              - mediatek,mt6580-uart
2962306a36Sopenharmony_ci              - mediatek,mt6582-uart
3062306a36Sopenharmony_ci              - mediatek,mt6589-uart
3162306a36Sopenharmony_ci              - mediatek,mt6755-uart
3262306a36Sopenharmony_ci              - mediatek,mt6765-uart
3362306a36Sopenharmony_ci              - mediatek,mt6779-uart
3462306a36Sopenharmony_ci              - mediatek,mt6795-uart
3562306a36Sopenharmony_ci              - mediatek,mt6797-uart
3662306a36Sopenharmony_ci              - mediatek,mt7622-uart
3762306a36Sopenharmony_ci              - mediatek,mt7623-uart
3862306a36Sopenharmony_ci              - mediatek,mt7629-uart
3962306a36Sopenharmony_ci              - mediatek,mt7986-uart
4062306a36Sopenharmony_ci              - mediatek,mt8127-uart
4162306a36Sopenharmony_ci              - mediatek,mt8135-uart
4262306a36Sopenharmony_ci              - mediatek,mt8173-uart
4362306a36Sopenharmony_ci              - mediatek,mt8183-uart
4462306a36Sopenharmony_ci              - mediatek,mt8186-uart
4562306a36Sopenharmony_ci              - mediatek,mt8188-uart
4662306a36Sopenharmony_ci              - mediatek,mt8192-uart
4762306a36Sopenharmony_ci              - mediatek,mt8195-uart
4862306a36Sopenharmony_ci              - mediatek,mt8365-uart
4962306a36Sopenharmony_ci              - mediatek,mt8516-uart
5062306a36Sopenharmony_ci          - const: mediatek,mt6577-uart
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  reg:
5362306a36Sopenharmony_ci    description: The base address of the UART register bank
5462306a36Sopenharmony_ci    maxItems: 1
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  clocks:
5762306a36Sopenharmony_ci    minItems: 1
5862306a36Sopenharmony_ci    items:
5962306a36Sopenharmony_ci      - description: The clock the baudrate is derived from
6062306a36Sopenharmony_ci      - description: The bus clock for register accesses
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  clock-names:
6362306a36Sopenharmony_ci    minItems: 1
6462306a36Sopenharmony_ci    items:
6562306a36Sopenharmony_ci      - const: baud
6662306a36Sopenharmony_ci      - const: bus
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci  dmas:
6962306a36Sopenharmony_ci    items:
7062306a36Sopenharmony_ci      - description: phandle to TX DMA
7162306a36Sopenharmony_ci      - description: phandle to RX DMA
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci  dma-names:
7462306a36Sopenharmony_ci    items:
7562306a36Sopenharmony_ci      - const: tx
7662306a36Sopenharmony_ci      - const: rx
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci  interrupts:
7962306a36Sopenharmony_ci    minItems: 1
8062306a36Sopenharmony_ci    maxItems: 2
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci  interrupt-names:
8362306a36Sopenharmony_ci    description:
8462306a36Sopenharmony_ci      The UART interrupt and optionally the RX in-band wakeup interrupt.
8562306a36Sopenharmony_ci    minItems: 1
8662306a36Sopenharmony_ci    items:
8762306a36Sopenharmony_ci      - const: uart
8862306a36Sopenharmony_ci      - const: wakeup
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci  pinctrl-0: true
9162306a36Sopenharmony_ci  pinctrl-1: true
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci  pinctrl-names:
9462306a36Sopenharmony_ci    minItems: 1
9562306a36Sopenharmony_ci    items:
9662306a36Sopenharmony_ci      - const: default
9762306a36Sopenharmony_ci      - const: sleep
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_cirequired:
10062306a36Sopenharmony_ci  - compatible
10162306a36Sopenharmony_ci  - reg
10262306a36Sopenharmony_ci  - clocks
10362306a36Sopenharmony_ci  - interrupts
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ciunevaluatedProperties: false
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ciexamples:
10862306a36Sopenharmony_ci  - |
10962306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci    serial@11006000 {
11262306a36Sopenharmony_ci        compatible = "mediatek,mt6589-uart", "mediatek,mt6577-uart";
11362306a36Sopenharmony_ci        reg = <0x11006000 0x400>;
11462306a36Sopenharmony_ci        interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_LOW>,
11562306a36Sopenharmony_ci                     <GIC_SPI 52 IRQ_TYPE_EDGE_FALLING>;
11662306a36Sopenharmony_ci        interrupt-names = "uart", "wakeup";
11762306a36Sopenharmony_ci        clocks = <&uart_clk>, <&bus_clk>;
11862306a36Sopenharmony_ci        clock-names = "baud", "bus";
11962306a36Sopenharmony_ci        pinctrl-0 = <&uart_pin>;
12062306a36Sopenharmony_ci        pinctrl-1 = <&uart_pin_sleep>;
12162306a36Sopenharmony_ci        pinctrl-names = "default", "sleep";
12262306a36Sopenharmony_ci    };
123