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