1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/tegra/nvidia,tegra20-gr3d.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: NVIDIA 3D graphics engine
8
9maintainers:
10  - Thierry Reding <thierry.reding@gmail.com>
11  - Jon Hunter <jonathanh@nvidia.com>
12
13properties:
14  $nodename:
15    pattern: "^gr3d@[0-9a-f]+$"
16
17  compatible:
18    enum:
19      - nvidia,tegra20-gr3d
20      - nvidia,tegra30-gr3d
21      - nvidia,tegra114-gr3d
22
23  reg:
24    maxItems: 1
25
26  clocks:
27    minItems: 1
28    maxItems: 2
29
30  clock-names:
31    minItems: 1
32    maxItems: 2
33
34  resets:
35    minItems: 2
36    maxItems: 4
37
38  reset-names:
39    minItems: 2
40    maxItems: 4
41
42  iommus:
43    minItems: 1
44    maxItems: 2
45
46  interconnects:
47    minItems: 4
48    maxItems: 10
49
50  interconnect-names:
51    minItems: 4
52    maxItems: 10
53
54  operating-points-v2:
55    $ref: "/schemas/types.yaml#/definitions/phandle"
56
57  power-domains:
58    minItems: 1
59    maxItems: 2
60
61  power-domain-names:
62    minItems: 2
63    maxItems: 2
64
65allOf:
66  - if:
67      properties:
68        compatible:
69          contains:
70            const: nvidia,tegra20-gr2d
71    then:
72      properties:
73        clocks:
74          items:
75            - description: module clock
76
77        clock-names:
78          items:
79            - const: 3d
80
81        resets:
82          items:
83            - description: module reset
84            - description: memory client hotflush reset
85
86        reset-names:
87          items:
88            - const: 3d
89            - const: mc
90
91        iommus:
92          maxItems: 1
93
94        interconnects:
95          minItems: 4
96          maxItems: 4
97
98        interconnect-names:
99          minItems: 4
100          maxItems: 4
101
102        power-domains:
103          items:
104            - description: phandle to the TD power domain
105
106  - if:
107      properties:
108        compatible:
109          contains:
110            const: nvidia,tegra30-gr3d
111    then:
112      properties:
113        clocks:
114          items:
115            - description: primary module clock
116            - description: secondary module clock
117
118        clock-names:
119          items:
120            - const: 3d
121            - const: 3d2
122
123        resets:
124          items:
125            - description: primary module reset
126            - description: secondary module reset
127            - description: primary memory client hotflush reset
128            - description: secondary memory client hotflush reset
129
130        reset-names:
131          items:
132            - const: 3d
133            - const: 3d2
134            - const: mc
135            - const: mc2
136
137        iommus:
138          minItems: 2
139          maxItems: 2
140
141        interconnects:
142          minItems: 8
143          maxItems: 8
144
145        interconnect-names:
146          minItems: 8
147          maxItems: 8
148
149        power-domains:
150          items:
151            - description: phandle to the TD power domain
152            - description: phandle to the TD2 power domain
153
154        power-domain-names:
155          items:
156            - const: 3d0
157            - const: 3d1
158
159      dependencies:
160        power-domains: [ power-domain-names ]
161
162  - if:
163      properties:
164        compatible:
165          contains:
166            const: nvidia,tegra114-gr2d
167    then:
168      properties:
169        clocks:
170          items:
171            - description: module clock
172
173        clock-names:
174          items:
175            - const: 3d
176
177        resets:
178          items:
179            - description: module reset
180            - description: memory client hotflush reset
181
182        reset-names:
183          items:
184            - const: 3d
185            - const: mc
186
187        iommus:
188          maxItems: 1
189
190        interconnects:
191          minItems: 10
192          maxItems: 10
193
194        interconnect-names:
195          minItems: 10
196          maxItems: 10
197
198        power-domains:
199          items:
200            - description: phandle to the TD power domain
201
202additionalProperties: false
203
204examples:
205  - |
206    #include <dt-bindings/clock/tegra20-car.h>
207    #include <dt-bindings/memory/tegra20-mc.h>
208
209    gr3d@54180000 {
210        compatible = "nvidia,tegra20-gr3d";
211        reg = <0x54180000 0x00040000>;
212        clocks = <&tegra_car TEGRA20_CLK_GR3D>;
213        resets = <&tegra_car 24>, <&mc TEGRA20_MC_RESET_3D>;
214        reset-names = "3d", "mc";
215    };
216