Linux 6.9-rc1
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / clock / ingenic,cgu.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/clock/ingenic,cgu.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Ingenic SoCs CGU
8
9 description: |
10   The CGU in an Ingenic SoC provides all the clocks generated on-chip. It
11   typically includes a variety of PLLs, multiplexers, dividers & gates in order
12   to provide many different clock signals derived from only 2 external source
13   clocks.
14
15 maintainers:
16   - Paul Cercueil <paul@crapouillou.net>
17
18 select:
19   properties:
20     compatible:
21       contains:
22         enum:
23           - ingenic,jz4740-cgu
24           - ingenic,jz4725b-cgu
25           - ingenic,jz4755-cgu
26           - ingenic,jz4760-cgu
27           - ingenic,jz4760b-cgu
28           - ingenic,jz4770-cgu
29           - ingenic,jz4780-cgu
30           - ingenic,x1000-cgu
31           - ingenic,x1830-cgu
32   required:
33     - compatible
34
35 properties:
36   $nodename:
37     pattern: "^clock-controller@[0-9a-f]+$"
38
39   "#address-cells":
40     const: 1
41
42   "#size-cells":
43     const: 1
44
45   "#clock-cells":
46     const: 1
47
48   ranges: true
49
50   compatible:
51     items:
52       - enum:
53           - ingenic,jz4740-cgu
54           - ingenic,jz4725b-cgu
55           - ingenic,jz4755-cgu
56           - ingenic,jz4760-cgu
57           - ingenic,jz4760b-cgu
58           - ingenic,jz4770-cgu
59           - ingenic,jz4780-cgu
60           - ingenic,x1000-cgu
61           - ingenic,x1830-cgu
62       - const: simple-mfd
63     minItems: 1
64
65   reg:
66     maxItems: 1
67
68   clocks:
69     items:
70       - description: External oscillator clock
71       - description: Internal 32 kHz RTC clock
72
73   clock-names:
74     items:
75       - const: ext
76       - enum:
77           - rtc
78           - osc32k # Different name, same clock
79
80   assigned-clocks:
81     minItems: 1
82     maxItems: 64
83
84   assigned-clock-parents:
85     minItems: 1
86     maxItems: 64
87
88   assigned-clock-rates:
89     minItems: 1
90     maxItems: 64
91
92 required:
93   - "#clock-cells"
94   - compatible
95   - reg
96   - clocks
97   - clock-names
98
99 patternProperties:
100   "^usb-phy@[a-f0-9]+$":
101     $ref: /schemas/phy/ingenic,phy-usb.yaml#
102   "^mac-phy-ctrl@[a-f0-9]+$":
103     $ref: /schemas/net/ingenic,mac.yaml#
104
105 additionalProperties: false
106
107 examples:
108   - |
109     #include <dt-bindings/clock/ingenic,jz4770-cgu.h>
110     cgu: clock-controller@10000000 {
111       compatible = "ingenic,jz4770-cgu", "simple-mfd";
112       reg = <0x10000000 0x100>;
113       #address-cells = <1>;
114       #size-cells = <1>;
115       ranges = <0x0 0x10000000 0x100>;
116
117       clocks = <&ext>, <&osc32k>;
118       clock-names = "ext", "osc32k";
119
120       #clock-cells = <1>;
121
122       otg_phy: usb-phy@3c {
123         compatible = "ingenic,jz4770-phy";
124         reg = <0x3c 0x10>;
125
126         clocks = <&cgu JZ4770_CLK_OTG_PHY>;
127
128         vcc-supply = <&ldo5>;
129
130         #phy-cells = <0>;
131       };
132     };