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