xref: /freebsd/sys/contrib/device-tree/Bindings/clock/ingenic,cgu.yaml (revision e0c4386e7e71d93b0edc0c8fa156263fc4a8b0b6)
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
7title: Ingenic SoCs CGU
8
9description: |
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
15maintainers:
16  - Paul Cercueil <paul@crapouillou.net>
17
18select:
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
35properties:
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
92required:
93  - "#clock-cells"
94  - compatible
95  - reg
96  - clocks
97  - clock-names
98
99patternProperties:
100  "^usb-phy@[a-f0-9]+$":
101    allOf: [ $ref: "../phy/ingenic,phy-usb.yaml#" ]
102  "^mac-phy-ctrl@[a-f0-9]+$":
103    allOf: [ $ref: "../net/ingenic,mac.yaml#" ]
104
105additionalProperties: false
106
107examples:
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    };
133