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