blob: 1d2bcea41c8588b0dbe10c6c870e3d75f09b220b [file] [log] [blame]
Tom Rini93743d22024-04-01 09:08:13 -04001# 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
Tom Rini6bb92fc2024-05-20 09:54:58 -060033 - google,gs101-cmu-peric0
34 - google,gs101-cmu-peric1
Tom Rini93743d22024-04-01 09:08:13 -040035
36 clocks:
37 minItems: 1
Tom Rini6bb92fc2024-05-20 09:54:58 -060038 maxItems: 3
Tom Rini93743d22024-04-01 09:08:13 -040039
40 clock-names:
41 minItems: 1
Tom Rini6bb92fc2024-05-20 09:54:58 -060042 maxItems: 3
Tom Rini93743d22024-04-01 09:08:13 -040043
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
Tom Rini6bb92fc2024-05-20 09:54:58 -060093 - 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
Tom Rini93743d22024-04-01 09:08:13 -0400115additionalProperties: 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...