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