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: true
55
56  power-domains:
57    minItems: 1
58    maxItems: 2
59
60  power-domain-names:
61    maxItems: 2
62
63allOf:
64  - if:
65      properties:
66        compatible:
67          contains:
68            const: nvidia,tegra20-gr2d
69    then:
70      properties:
71        clocks:
72          items:
73            - description: module clock
74
75        clock-names:
76          items:
77            - const: 3d
78
79        resets:
80          items:
81            - description: module reset
82            - description: memory client hotflush reset
83
84        reset-names:
85          items:
86            - const: 3d
87            - const: mc
88
89        iommus:
90          maxItems: 1
91
92        interconnects:
93          minItems: 4
94          maxItems: 4
95
96        interconnect-names:
97          minItems: 4
98          maxItems: 4
99
100        power-domains:
101          items:
102            - description: phandle to the TD power domain
103
104  - if:
105      properties:
106        compatible:
107          contains:
108            const: nvidia,tegra30-gr3d
109    then:
110      properties:
111        clocks:
112          items:
113            - description: primary module clock
114            - description: secondary module clock
115
116        clock-names:
117          items:
118            - const: 3d
119            - const: 3d2
120
121        resets:
122          items:
123            - description: primary module reset
124            - description: secondary module reset
125            - description: primary memory client hotflush reset
126            - description: secondary memory client hotflush reset
127
128        reset-names:
129          items:
130            - const: 3d
131            - const: 3d2
132            - const: mc
133            - const: mc2
134
135        iommus:
136          minItems: 2
137          maxItems: 2
138
139        interconnects:
140          minItems: 8
141          maxItems: 8
142
143        interconnect-names:
144          minItems: 8
145          maxItems: 8
146
147        power-domains:
148          items:
149            - description: phandle to the TD power domain
150            - description: phandle to the TD2 power domain
151
152        power-domain-names:
153          items:
154            - const: 3d0
155            - const: 3d1
156
157      dependencies:
158        power-domains: [ power-domain-names ]
159
160  - if:
161      properties:
162        compatible:
163          contains:
164            const: nvidia,tegra114-gr2d
165    then:
166      properties:
167        clocks:
168          items:
169            - description: module clock
170
171        clock-names:
172          items:
173            - const: 3d
174
175        resets:
176          items:
177            - description: module reset
178            - description: memory client hotflush reset
179
180        reset-names:
181          items:
182            - const: 3d
183            - const: mc
184
185        iommus:
186          maxItems: 1
187
188        interconnects:
189          minItems: 10
190          maxItems: 10
191
192        interconnect-names:
193          minItems: 10
194          maxItems: 10
195
196        power-domains:
197          items:
198            - description: phandle to the TD power domain
199
200additionalProperties: false
201
202examples:
203  - |
204    #include <dt-bindings/clock/tegra20-car.h>
205    #include <dt-bindings/memory/tegra20-mc.h>
206
207    gr3d@54180000 {
208        compatible = "nvidia,tegra20-gr3d";
209        reg = <0x54180000 0x00040000>;
210        clocks = <&tegra_car TEGRA20_CLK_GR3D>;
211        resets = <&tegra_car 24>, <&mc TEGRA20_MC_RESET_3D>;
212        reset-names = "3d", "mc";
213    };
214