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