summaryrefslogtreecommitdiffstats
path: root/dts/Bindings/serial/qcom,msm-uartdm.yaml
blob: e0fa363ad7e2e5cf17126f9bf38fd3e1f183b6d8 (plain)
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
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/serial/qcom,msm-uartdm.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm MSM Serial UARTDM

maintainers:
  - Andy Gross <agross@kernel.org>
  - Bjorn Andersson <bjorn.andersson@linaro.org>
  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

description: |
  The MSM serial UARTDM hardware is designed for high-speed use cases where the
  transmit and/or receive channels can be offloaded to a dma-engine. From a
  software perspective it's mostly compatible with the MSM serial UART except
  that it supports reading and writing multiple characters at a time.

  Note:: Aliases may be defined to ensure the correct ordering of the UARTs.
  The alias serialN will result in the UART being assigned port N.  If any
  serialN alias exists, then an alias must exist for each enabled UART.  The
  serialN aliases should be in a .dts file instead of in a .dtsi file.

properties:
  compatible:
    items:
      - enum:
          - qcom,msm-uartdm-v1.1
          - qcom,msm-uartdm-v1.2
          - qcom,msm-uartdm-v1.3
          - qcom,msm-uartdm-v1.4
      - const: qcom,msm-uartdm

  clocks:
    maxItems: 2

  clock-names:
    items:
      - const: core
      - const: iface

  dmas:
    maxItems: 2

  dma-names:
    items:
      - const: tx
      - const: rx

  interconnects:
    maxItems: 1

  interrupts:
    maxItems: 1

  operating-points-v2: true

  power-domains:
    maxItems: 1

  qcom,rx-crci:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      Identificator for Client Rate Control Interface to be used with RX DMA
      channel. Required when using DMA for reception with UARTDM v1.3 and
      below.

  qcom,tx-crci:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      Identificator for Client Rate Control Interface to be used with TX DMA
      channel. Required when using DMA for transmission with UARTDM v1.3 and
      below.

  reg:
    minItems: 1
    items:
      - description: Main control registers
      - description: An optional second register location shall specify the GSBI control region.

required:
  - compatible
  - clock-names
  - clocks
  - interrupts
  - reg

allOf:
  - $ref: /schemas/serial/serial.yaml#

  - if:
      properties:
        compatible:
          contains:
            const: qcom,msm-uartdm-v1.3
    then:
      properties:
        reg:
          minItems: 2
    else:
      properties:
        reg:
          maxItems: 1

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interconnect/qcom,msm8996.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/power/qcom-rpmpd.h>

    serial@f991e000 {
        compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
        reg = <0xf991e000 0x1000>;
        interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&blsp1_uart2_apps_cxc>, <&blsp1_ahb_cxc>;
        clock-names = "core", "iface";
        dmas = <&dma0 0>, <&dma0 1>;
        dma-names = "tx", "rx";
        power-domains = <&rpmpd MSM8996_VDDCX>;
        operating-points-v2 = <&uart_opp_table>;
        interconnects = <&pnoc MASTER_BLSP_1 &bimc SLAVE_EBI_CH0>;
    };