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