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