xref: /freebsd/sys/contrib/device-tree/Bindings/clock/ingenic,cgu.yaml (revision b197d4b893974c9eb4d7b38704c6d5c486235d6f)
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 devicetree bindings
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,jz4760-cgu
26          - ingenic,jz4760b-cgu
27          - ingenic,jz4770-cgu
28          - ingenic,jz4780-cgu
29          - ingenic,x1000-cgu
30          - ingenic,x1830-cgu
31  required:
32    - compatible
33
34properties:
35  $nodename:
36    pattern: "^clock-controller@[0-9a-f]+$"
37
38  "#address-cells":
39    const: 1
40
41  "#size-cells":
42    const: 1
43
44  "#clock-cells":
45    const: 1
46
47  ranges: true
48
49  compatible:
50    items:
51      - enum:
52          - ingenic,jz4740-cgu
53          - ingenic,jz4725b-cgu
54          - ingenic,jz4760-cgu
55          - ingenic,jz4760b-cgu
56          - ingenic,jz4770-cgu
57          - ingenic,jz4780-cgu
58          - ingenic,x1000-cgu
59          - ingenic,x1830-cgu
60      - const: simple-mfd
61    minItems: 1
62
63  reg:
64    maxItems: 1
65
66  clocks:
67    items:
68      - description: External oscillator clock
69      - description: Internal 32 kHz RTC clock
70
71  clock-names:
72    items:
73      - const: ext
74      - enum:
75          - rtc
76          - osc32k # Different name, same clock
77
78  assigned-clocks:
79    minItems: 1
80    maxItems: 64
81
82  assigned-clock-parents:
83    minItems: 1
84    maxItems: 64
85
86  assigned-clock-rates:
87    minItems: 1
88    maxItems: 64
89
90required:
91  - "#clock-cells"
92  - compatible
93  - reg
94  - clocks
95  - clock-names
96
97patternProperties:
98  "^usb-phy@[a-f0-9]+$":
99    allOf: [ $ref: "../phy/ingenic,phy-usb.yaml#" ]
100  "^mac-phy-ctrl@[a-f0-9]+$":
101    allOf: [ $ref: "../net/ingenic,mac.yaml#" ]
102
103additionalProperties: false
104
105examples:
106  - |
107    #include <dt-bindings/clock/ingenic,jz4770-cgu.h>
108    cgu: clock-controller@10000000 {
109      compatible = "ingenic,jz4770-cgu", "simple-mfd";
110      reg = <0x10000000 0x100>;
111      #address-cells = <1>;
112      #size-cells = <1>;
113      ranges = <0x0 0x10000000 0x100>;
114
115      clocks = <&ext>, <&osc32k>;
116      clock-names = "ext", "osc32k";
117
118      #clock-cells = <1>;
119
120      otg_phy: usb-phy@3c {
121        compatible = "ingenic,jz4770-phy";
122        reg = <0x3c 0x10>;
123
124        clocks = <&cgu JZ4770_CLK_OTG_PHY>;
125
126        vcc-supply = <&ldo5>;
127
128        #phy-cells = <0>;
129      };
130    };
131