summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/media/mediatek,mdp3-rdma.yaml
blob: 59db8306485b328deb763ce260002dadffaf7da4 (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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/mediatek,mdp3-rdma.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: MediaTek Read Direct Memory Access

maintainers:
  - Matthias Brugger <matthias.bgg@gmail.com>
  - Moudy Ho <moudy.ho@mediatek.com>

description: |
  MediaTek Read Direct Memory Access(RDMA) component used to do read DMA.
  It contains one line buffer to store the sufficient pixel data, and
  must be siblings to the central MMSYS_CONFIG node.
  For a description of the MMSYS_CONFIG binding, see
  Documentation/devicetree/bindings/arm/mediatek/mediatek,mmsys.yaml
  for details.

properties:
  compatible:
    oneOf:
      - enum:
          - mediatek,mt8183-mdp3-rdma
          - mediatek,mt8195-mdp3-rdma
          - mediatek,mt8195-vdo1-rdma
      - items:
          - const: mediatek,mt8188-vdo1-rdma
          - const: mediatek,mt8195-vdo1-rdma

  reg:
    maxItems: 1

  mediatek,gce-client-reg:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      items:
        - description: phandle of GCE
        - description: GCE subsys id
        - description: register offset
        - description: register size
    description: The register of client driver can be configured by gce with
      4 arguments defined in this property. Each GCE subsys id is mapping to
      a client defined in the header include/dt-bindings/gce/<chip>-gce.h.

  mediatek,gce-events:
    description:
      The event id which is mapping to the specific hardware event signal
      to gce. The event id is defined in the gce header
      include/dt-bindings/gce/<chip>-gce.h of each chips.
    $ref: /schemas/types.yaml#/definitions/uint32-array

  mediatek,scp:
    $ref: /schemas/types.yaml#/definitions/phandle
    description:
      Phandle to the System Control Processor (SCP) used for initializing
      and stopping the MDP3, for sending frame data locations to the MDP3's
      VPU and to install Inter-Processor Interrupt handlers to control
      processing states.

  power-domains:
    maxItems: 1

  clocks:
    items:
      - description: RDMA clock
      - description: RSZ clock
    minItems: 1

  iommus:
    maxItems: 1

  mboxes:
    items:
      - description: used for 1st data pipe from RDMA
      - description: used for 2nd data pipe from RDMA
      - description: used for 3rd data pipe from RDMA
      - description: used for 4th data pipe from RDMA
      - description: used for the data pipe from SPLIT
    minItems: 1

  interrupts:
    maxItems: 1

  '#dma-cells':
    const: 1

required:
  - compatible
  - reg
  - mediatek,gce-client-reg
  - power-domains
  - clocks
  - iommus
  - '#dma-cells'

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt8183-mdp3-rdma

    then:
      properties:
        clocks:
          minItems: 2

        mboxes:
          minItems: 2

      required:
        - mboxes
        - mediatek,gce-events

  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt8195-mdp3-rdma

    then:
      properties:
        clocks:
          maxItems: 1

        mboxes:
          minItems: 5

      required:
        - mediatek,gce-events

  - if:
      properties:
        compatible:
          contains:
            const: mediatek,mt8195-vdo1-rdma

    then:
      properties:
        clocks:
          maxItems: 1

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/mt8183-clk.h>
    #include <dt-bindings/gce/mt8183-gce.h>
    #include <dt-bindings/power/mt8183-power.h>
    #include <dt-bindings/memory/mt8183-larb-port.h>

    dma-controller@14001000 {
        compatible = "mediatek,mt8183-mdp3-rdma";
        reg = <0x14001000 0x1000>;
        mediatek,gce-client-reg = <&gce SUBSYS_1400XXXX 0x1000 0x1000>;
        mediatek,gce-events = <CMDQ_EVENT_MDP_RDMA0_SOF>,
                              <CMDQ_EVENT_MDP_RDMA0_EOF>;
        power-domains = <&spm MT8183_POWER_DOMAIN_DISP>;
        clocks = <&mmsys CLK_MM_MDP_RDMA0>,
                 <&mmsys CLK_MM_MDP_RSZ1>;
        iommus = <&iommu>;
        mboxes = <&gce 20 CMDQ_THR_PRIO_LOWEST>,
                 <&gce 21 CMDQ_THR_PRIO_LOWEST>;
        #dma-cells = <1>;
    };