Commit | Line | Data |
---|---|---|
0a910f16 PG |
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 | ||
7 | title: Google GS101 SoC clock controller | |
8 | ||
9 | maintainers: | |
10 | - Peter Griffin <peter.griffin@linaro.org> | |
11 | ||
12 | description: | | |
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 | ||
27 | properties: | |
28 | compatible: | |
29 | enum: | |
30 | - google,gs101-cmu-top | |
31 | - google,gs101-cmu-apm | |
32 | - google,gs101-cmu-misc | |
f80c4388 | 33 | - google,gs101-cmu-peric0 |
455061eb | 34 | - google,gs101-cmu-peric1 |
0a910f16 PG |
35 | |
36 | clocks: | |
37 | minItems: 1 | |
f80c4388 | 38 | maxItems: 3 |
0a910f16 PG |
39 | |
40 | clock-names: | |
41 | minItems: 1 | |
f80c4388 | 42 | maxItems: 3 |
0a910f16 PG |
43 | |
44 | "#clock-cells": | |
45 | const: 1 | |
46 | ||
47 | reg: | |
48 | maxItems: 1 | |
49 | ||
50 | required: | |
51 | - compatible | |
52 | - "#clock-cells" | |
53 | - clocks | |
54 | - clock-names | |
55 | - reg | |
56 | ||
57 | allOf: | |
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: | |
1755c4b0 TA |
90 | - const: bus |
91 | - const: sss | |
0a910f16 | 92 | |
f80c4388 TA |
93 | - if: |
94 | properties: | |
95 | compatible: | |
96 | contains: | |
455061eb AD |
97 | enum: |
98 | - google,gs101-cmu-peric0 | |
99 | - google,gs101-cmu-peric1 | |
f80c4388 TA |
100 | |
101 | then: | |
102 | properties: | |
103 | clocks: | |
104 | items: | |
105 | - description: External reference clock (24.576 MHz) | |
455061eb AD |
106 | - description: Connectivity Peripheral 0/1 bus clock (from CMU_TOP) |
107 | - description: Connectivity Peripheral 0/1 IP clock (from CMU_TOP) | |
f80c4388 TA |
108 | |
109 | clock-names: | |
110 | items: | |
111 | - const: oscclk | |
112 | - const: bus | |
113 | - const: ip | |
114 | ||
0a910f16 PG |
115 | additionalProperties: false |
116 | ||
117 | examples: | |
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 | ... |