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