xref: /linux/Documentation/devicetree/bindings/clock/google,gs101-clock.yaml (revision ae22a94997b8a03dcb3c922857c203246711f9d4)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/clock/google,gs101-clock.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Google GS101 SoC clock controller
8
9maintainers:
10  - Peter Griffin <peter.griffin@linaro.org>
11
12description: |
13  Google GS101 clock controller is comprised of several CMU units, generating
14  clocks for different domains. Those CMU units are modeled as separate device
15  tree nodes, and might depend on each other. The root clock in that clock tree
16  is OSCCLK (24.576 MHz). That external clock must be defined as a fixed-rate
17  clock in dts.
18
19  CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
20  dividers; all other leaf clocks (other CMUs) are usually derived from CMU_TOP.
21
22  Each clock is assigned an identifier and client nodes can use this identifier
23  to specify the clock which they consume. All clocks available for usage
24  in clock consumer nodes are defined as preprocessor macros in
25  'dt-bindings/clock/gs101.h' header.
26
27properties:
28  compatible:
29    enum:
30      - google,gs101-cmu-top
31      - google,gs101-cmu-apm
32      - google,gs101-cmu-misc
33      - google,gs101-cmu-peric0
34      - google,gs101-cmu-peric1
35
36  clocks:
37    minItems: 1
38    maxItems: 3
39
40  clock-names:
41    minItems: 1
42    maxItems: 3
43
44  "#clock-cells":
45    const: 1
46
47  reg:
48    maxItems: 1
49
50required:
51  - compatible
52  - "#clock-cells"
53  - clocks
54  - clock-names
55  - reg
56
57allOf:
58  - if:
59      properties:
60        compatible:
61          contains:
62            enum:
63              - google,gs101-cmu-top
64              - google,gs101-cmu-apm
65    then:
66      properties:
67        clocks:
68          items:
69            - description: External reference clock (24.576 MHz)
70
71        clock-names:
72          items:
73            - const: oscclk
74
75  - if:
76      properties:
77        compatible:
78          contains:
79            const: google,gs101-cmu-misc
80
81    then:
82      properties:
83        clocks:
84          items:
85            - description: Misc bus clock (from CMU_TOP)
86            - description: Misc sss clock (from CMU_TOP)
87
88        clock-names:
89          items:
90            - const: bus
91            - const: sss
92
93  - if:
94      properties:
95        compatible:
96          contains:
97            enum:
98              - google,gs101-cmu-peric0
99              - google,gs101-cmu-peric1
100
101    then:
102      properties:
103        clocks:
104          items:
105            - description: External reference clock (24.576 MHz)
106            - description: Connectivity Peripheral 0/1 bus clock (from CMU_TOP)
107            - description: Connectivity Peripheral 0/1 IP clock (from CMU_TOP)
108
109        clock-names:
110          items:
111            - const: oscclk
112            - const: bus
113            - const: ip
114
115additionalProperties: false
116
117examples:
118  # Clock controller node for CMU_TOP
119  - |
120    #include <dt-bindings/clock/google,gs101.h>
121
122    cmu_top: clock-controller@1e080000 {
123        compatible = "google,gs101-cmu-top";
124        reg = <0x1e080000 0x8000>;
125        #clock-cells = <1>;
126        clocks = <&ext_24_5m>;
127        clock-names = "oscclk";
128    };
129
130...
131