1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/soc/rockchip/grf.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Rockchip General Register Files (GRF)
8
9maintainers:
10  - Heiko Stuebner <heiko@sntech.de>
11
12properties:
13  compatible:
14    oneOf:
15      - items:
16          - enum:
17              - rockchip,rk3288-sgrf
18              - rockchip,rk3528-ioc-grf
19              - rockchip,rk3528-vo-grf
20              - rockchip,rk3528-vpu-grf
21              - rockchip,rk3566-pipe-grf
22              - rockchip,rk3568-pcie3-phy-grf
23              - rockchip,rk3568-pipe-grf
24              - rockchip,rk3568-pipe-phy-grf
25              - rockchip,rk3568-usb2phy-grf
26              - rockchip,rk3576-bigcore-grf
27              - rockchip,rk3576-cci-grf
28              - rockchip,rk3576-gpu-grf
29              - rockchip,rk3576-hdptxphy-grf
30              - rockchip,rk3576-litcore-grf
31              - rockchip,rk3576-npu-grf
32              - rockchip,rk3576-php-grf
33              - rockchip,rk3576-pipe-phy-grf
34              - rockchip,rk3576-pmu1-grf
35              - rockchip,rk3576-sdgmac-grf
36              - rockchip,rk3576-sys-grf
37              - rockchip,rk3576-usb-grf
38              - rockchip,rk3576-usbdpphy-grf
39              - rockchip,rk3576-vo0-grf
40              - rockchip,rk3576-vo1-grf
41              - rockchip,rk3576-vop-grf
42              - rockchip,rk3588-bigcore0-grf
43              - rockchip,rk3588-bigcore1-grf
44              - rockchip,rk3588-dcphy-grf
45              - rockchip,rk3588-hdptxphy-grf
46              - rockchip,rk3588-ioc
47              - rockchip,rk3588-php-grf
48              - rockchip,rk3588-pipe-phy-grf
49              - rockchip,rk3588-sys-grf
50              - rockchip,rk3588-pcie3-phy-grf
51              - rockchip,rk3588-pcie3-pipe-grf
52              - rockchip,rk3588-usb-grf
53              - rockchip,rk3588-usbdpphy-grf
54              - rockchip,rk3588-vo0-grf
55              - rockchip,rk3588-vo1-grf
56              - rockchip,rk3588-vop-grf
57              - rockchip,rv1108-usbgrf
58          - const: syscon
59      - items:
60          - const: rockchip,rk3588-vo-grf
61          - const: syscon
62        deprecated: true
63        description: Use rockchip,rk3588-vo{0,1}-grf instead.
64      - items:
65          - enum:
66              - rockchip,px30-grf
67              - rockchip,px30-pmugrf
68              - rockchip,px30-usb2phy-grf
69              - rockchip,rk3036-grf
70              - rockchip,rk3066-grf
71              - rockchip,rk3128-grf
72              - rockchip,rk3188-grf
73              - rockchip,rk3228-grf
74              - rockchip,rk3288-grf
75              - rockchip,rk3308-core-grf
76              - rockchip,rk3308-detect-grf
77              - rockchip,rk3308-grf
78              - rockchip,rk3308-usb2phy-grf
79              - rockchip,rk3328-grf
80              - rockchip,rk3328-usb2phy-grf
81              - rockchip,rk3368-grf
82              - rockchip,rk3368-pmugrf
83              - rockchip,rk3399-grf
84              - rockchip,rk3399-pmugrf
85              - rockchip,rk3568-grf
86              - rockchip,rk3568-pmugrf
87              - rockchip,rk3576-ioc-grf
88              - rockchip,rk3576-pmu0-grf
89              - rockchip,rk3576-usb2phy-grf
90              - rockchip,rk3588-usb2phy-grf
91              - rockchip,rv1108-grf
92              - rockchip,rv1108-pmugrf
93              - rockchip,rv1126-grf
94              - rockchip,rv1126-pmugrf
95          - const: syscon
96          - const: simple-mfd
97
98  reg:
99    maxItems: 1
100
101  clocks:
102    maxItems: 1
103
104  "#address-cells":
105    const: 1
106
107  "#size-cells":
108    const: 1
109
110required:
111  - compatible
112  - reg
113
114additionalProperties:
115  type: object
116
117allOf:
118  - if:
119      properties:
120        compatible:
121          contains:
122            enum:
123              - rockchip,px30-grf
124
125    then:
126      properties:
127        lvds:
128          type: object
129
130          $ref: /schemas/display/rockchip/rockchip,lvds.yaml#
131
132          unevaluatedProperties: false
133
134  - if:
135      properties:
136        compatible:
137          contains:
138            const: rockchip,rk3288-grf
139
140    then:
141      properties:
142        edp-phy:
143          type: object
144          $ref: /schemas/phy/rockchip,rk3288-dp-phy.yaml#
145          unevaluatedProperties: false
146
147  - if:
148      properties:
149        compatible:
150          contains:
151            enum:
152              - rockchip,rk3066-grf
153              - rockchip,rk3188-grf
154              - rockchip,rk3288-grf
155
156    then:
157      properties:
158        usbphy:
159          type: object
160
161          $ref: /schemas/phy/rockchip-usb-phy.yaml#
162
163          unevaluatedProperties: false
164
165  - if:
166      properties:
167        compatible:
168          contains:
169            const: rockchip,rk3328-grf
170
171    then:
172      properties:
173        gpio:
174          type: object
175
176          $ref: /schemas/gpio/rockchip,rk3328-grf-gpio.yaml#
177
178          unevaluatedProperties: false
179
180        power-controller:
181          type: object
182
183          $ref: /schemas/power/rockchip,power-controller.yaml#
184
185          unevaluatedProperties: false
186
187  - if:
188      properties:
189        compatible:
190          contains:
191            const: rockchip,rk3399-grf
192
193    then:
194      properties:
195        mipi-dphy-rx0:
196          type: object
197
198          $ref: /schemas/phy/rockchip-mipi-dphy-rx0.yaml#
199
200          unevaluatedProperties: false
201
202        pcie-phy:
203          type: object
204          description:
205            Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
206
207      patternProperties:
208        "^phy@[0-9a-f]+$":
209          type: object
210          $ref: /schemas/phy/rockchip,rk3399-emmc-phy.yaml#
211          unevaluatedProperties: false
212
213  - if:
214      properties:
215        compatible:
216          contains:
217            enum:
218              - rockchip,px30-pmugrf
219              - rockchip,rk3036-grf
220              - rockchip,rk3308-grf
221              - rockchip,rk3368-pmugrf
222
223    then:
224      properties:
225        reboot-mode:
226          type: object
227
228          $ref: /schemas/power/reset/syscon-reboot-mode.yaml#
229
230          unevaluatedProperties: false
231
232  - if:
233      properties:
234        compatible:
235          contains:
236            enum:
237              - rockchip,px30-usb2phy-grf
238              - rockchip,rk3128-grf
239              - rockchip,rk3228-grf
240              - rockchip,rk3308-usb2phy-grf
241              - rockchip,rk3328-usb2phy-grf
242              - rockchip,rk3399-grf
243              - rockchip,rk3576-usb2phy-grf
244              - rockchip,rk3588-usb2phy-grf
245              - rockchip,rv1108-grf
246
247    then:
248      required:
249        - "#address-cells"
250        - "#size-cells"
251
252      patternProperties:
253        "usb2phy@[0-9a-f]+$":
254          type: object
255
256          $ref: /schemas/phy/rockchip,inno-usb2phy.yaml#
257
258          unevaluatedProperties: false
259
260  - if:
261      properties:
262        compatible:
263          contains:
264            enum:
265              - rockchip,px30-grf
266              - rockchip,px30-pmugrf
267              - rockchip,rk3188-grf
268              - rockchip,rk3228-grf
269              - rockchip,rk3288-grf
270              - rockchip,rk3328-grf
271              - rockchip,rk3368-grf
272              - rockchip,rk3368-pmugrf
273              - rockchip,rk3399-grf
274              - rockchip,rk3399-pmugrf
275              - rockchip,rk3568-pmugrf
276              - rockchip,rk3588-pmugrf
277              - rockchip,rv1108-grf
278              - rockchip,rv1108-pmugrf
279
280    then:
281      properties:
282        io-domains:
283          type: object
284
285          $ref: /schemas/power/rockchip-io-domain.yaml#
286
287          unevaluatedProperties: false
288
289  - if:
290      properties:
291        compatible:
292          contains:
293            enum:
294              - rockchip,rk3576-vo1-grf
295              - rockchip,rk3588-vo-grf
296              - rockchip,rk3588-vo0-grf
297              - rockchip,rk3588-vo1-grf
298
299    then:
300      required:
301        - clocks
302
303    else:
304      properties:
305        clocks: false
306
307
308examples:
309  - |
310    #include <dt-bindings/clock/rk3399-cru.h>
311    #include <dt-bindings/interrupt-controller/arm-gic.h>
312    #include <dt-bindings/power/rk3399-power.h>
313    grf: syscon@ff770000 {
314      compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
315      reg = <0xff770000 0x10000>;
316      #address-cells = <1>;
317      #size-cells = <1>;
318
319      mipi_dphy_rx0: mipi-dphy-rx0 {
320        compatible = "rockchip,rk3399-mipi-dphy-rx0";
321        clocks = <&cru SCLK_MIPIDPHY_REF>,
322                 <&cru SCLK_DPHY_RX0_CFG>,
323                 <&cru PCLK_VIO_GRF>;
324        clock-names = "dphy-ref", "dphy-cfg", "grf";
325        power-domains = <&power RK3399_PD_VIO>;
326        #phy-cells = <0>;
327      };
328
329      phy@f780 {
330        compatible = "rockchip,rk3399-emmc-phy";
331        reg = <0xf780 0x20>;
332        clocks = <&sdhci>;
333        clock-names = "emmcclk";
334        drive-impedance-ohm = <50>;
335        #phy-cells = <0>;
336      };
337
338      u2phy0: usb2phy@e450 {
339        compatible = "rockchip,rk3399-usb2phy";
340        reg = <0xe450 0x10>;
341        clocks = <&cru SCLK_USB2PHY0_REF>;
342        clock-names = "phyclk";
343        #clock-cells = <0>;
344        clock-output-names = "clk_usbphy0_480m";
345
346        u2phy0_host: host-port {
347          #phy-cells = <0>;
348          interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH 0>;
349          interrupt-names = "linestate";
350         };
351
352        u2phy0_otg: otg-port {
353          #phy-cells = <0>;
354          interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH 0>,
355                       <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH 0>,
356                       <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 0>;
357          interrupt-names = "otg-bvalid", "otg-id",
358                            "linestate";
359        };
360      };
361    };
362