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