xref: /linux/Documentation/devicetree/bindings/soc/rockchip/grf.yaml (revision 5f5598d945e2a69f764aa5c2074dad73e23bcfcb)
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          properties:
183            compatible:
184              contains:
185                const: rockchip,rk3328-grf-gpio
186
187          additionalProperties: true
188
189        power-controller:
190          type: object
191
192          $ref: /schemas/power/rockchip,power-controller.yaml#
193
194          unevaluatedProperties: false
195
196  - if:
197      properties:
198        compatible:
199          contains:
200            const: rockchip,rk3399-grf
201
202    then:
203      properties:
204        mipi-dphy-rx0:
205          type: object
206
207          $ref: /schemas/phy/rockchip-mipi-dphy-rx0.yaml#
208
209          unevaluatedProperties: false
210
211        pcie-phy:
212          type: object
213          $ref: /schemas/phy/rockchip,rk3399-pcie-phy.yaml#
214          unevaluatedProperties: false
215
216      patternProperties:
217        "^phy@[0-9a-f]+$":
218          type: object
219          $ref: /schemas/phy/rockchip,rk3399-emmc-phy.yaml#
220          unevaluatedProperties: false
221
222  - if:
223      properties:
224        compatible:
225          contains:
226            enum:
227              - rockchip,px30-pmugrf
228              - rockchip,rk3036-grf
229              - rockchip,rk3308-grf
230              - rockchip,rk3368-pmugrf
231
232    then:
233      properties:
234        reboot-mode:
235          type: object
236
237          $ref: /schemas/power/reset/syscon-reboot-mode.yaml#
238
239          unevaluatedProperties: false
240
241  - if:
242      properties:
243        compatible:
244          contains:
245            enum:
246              - rockchip,px30-usb2phy-grf
247              - rockchip,rk3128-grf
248              - rockchip,rk3228-grf
249              - rockchip,rk3308-usb2phy-grf
250              - rockchip,rk3328-usb2phy-grf
251              - rockchip,rk3399-grf
252              - rockchip,rk3576-usb2phy-grf
253              - rockchip,rk3588-usb2phy-grf
254              - rockchip,rv1108-grf
255
256    then:
257      required:
258        - "#address-cells"
259        - "#size-cells"
260
261      patternProperties:
262        "usb2phy@[0-9a-f]+$":
263          type: object
264
265          $ref: /schemas/phy/rockchip,inno-usb2phy.yaml#
266
267          unevaluatedProperties: false
268
269  - if:
270      properties:
271        compatible:
272          contains:
273            enum:
274              - rockchip,px30-grf
275              - rockchip,px30-pmugrf
276              - rockchip,rk3188-grf
277              - rockchip,rk3228-grf
278              - rockchip,rk3288-grf
279              - rockchip,rk3328-grf
280              - rockchip,rk3368-grf
281              - rockchip,rk3368-pmugrf
282              - rockchip,rk3399-grf
283              - rockchip,rk3399-pmugrf
284              - rockchip,rk3568-pmugrf
285              - rockchip,rk3588-pmugrf
286              - rockchip,rv1108-grf
287              - rockchip,rv1108-pmugrf
288
289    then:
290      properties:
291        io-domains:
292          type: object
293
294          $ref: /schemas/power/rockchip-io-domain.yaml#
295
296          unevaluatedProperties: false
297
298  - if:
299      properties:
300        compatible:
301          contains:
302            enum:
303              - rockchip,rk3576-vo1-grf
304              - rockchip,rk3588-vo-grf
305              - rockchip,rk3588-vo0-grf
306              - rockchip,rk3588-vo1-grf
307
308    then:
309      required:
310        - clocks
311
312    else:
313      properties:
314        clocks: false
315
316
317examples:
318  - |
319    #include <dt-bindings/clock/rk3399-cru.h>
320    #include <dt-bindings/interrupt-controller/arm-gic.h>
321    #include <dt-bindings/power/rk3399-power.h>
322    grf: syscon@ff770000 {
323      compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
324      reg = <0xff770000 0x10000>;
325      #address-cells = <1>;
326      #size-cells = <1>;
327
328      mipi_dphy_rx0: mipi-dphy-rx0 {
329        compatible = "rockchip,rk3399-mipi-dphy-rx0";
330        clocks = <&cru SCLK_MIPIDPHY_REF>,
331                 <&cru SCLK_DPHY_RX0_CFG>,
332                 <&cru PCLK_VIO_GRF>;
333        clock-names = "dphy-ref", "dphy-cfg", "grf";
334        power-domains = <&power RK3399_PD_VIO>;
335        #phy-cells = <0>;
336      };
337
338      pcie-phy {
339        compatible = "rockchip,rk3399-pcie-phy";
340        #phy-cells = <1>;
341        clocks = <&cru SCLK_PCIEPHY_REF>;
342        clock-names = "refclk";
343        resets = <&cru SRST_PCIEPHY>;
344        reset-names = "phy";
345      };
346
347      phy@f780 {
348        compatible = "rockchip,rk3399-emmc-phy";
349        reg = <0xf780 0x20>;
350        clocks = <&sdhci>;
351        clock-names = "emmcclk";
352        drive-impedance-ohm = <50>;
353        #phy-cells = <0>;
354      };
355
356      u2phy0: usb2phy@e450 {
357        compatible = "rockchip,rk3399-usb2phy";
358        reg = <0xe450 0x10>;
359        clocks = <&cru SCLK_USB2PHY0_REF>;
360        clock-names = "phyclk";
361        #clock-cells = <0>;
362        clock-output-names = "clk_usbphy0_480m";
363
364        u2phy0_host: host-port {
365          #phy-cells = <0>;
366          interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH 0>;
367          interrupt-names = "linestate";
368         };
369
370        u2phy0_otg: otg-port {
371          #phy-cells = <0>;
372          interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH 0>,
373                       <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH 0>,
374                       <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 0>;
375          interrupt-names = "otg-bvalid", "otg-id",
376                            "linestate";
377        };
378      };
379    };
380