1*5d6298f2SSam Protsenko# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*5d6298f2SSam Protsenko%YAML 1.2
3*5d6298f2SSam Protsenko---
4*5d6298f2SSam Protsenko$id: http://devicetree.org/schemas/clock/samsung,exynos850-clock.yaml#
5*5d6298f2SSam Protsenko$schema: http://devicetree.org/meta-schemas/core.yaml#
6*5d6298f2SSam Protsenko
7*5d6298f2SSam Protsenkotitle: Samsung Exynos850 SoC clock controller
8*5d6298f2SSam Protsenko
9*5d6298f2SSam Protsenkomaintainers:
10*5d6298f2SSam Protsenko  - Sam Protsenko <semen.protsenko@linaro.org>
11*5d6298f2SSam Protsenko  - Chanwoo Choi <cw00.choi@samsung.com>
12*5d6298f2SSam Protsenko  - Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
13*5d6298f2SSam Protsenko  - Sylwester Nawrocki <s.nawrocki@samsung.com>
14*5d6298f2SSam Protsenko  - Tomasz Figa <tomasz.figa@gmail.com>
15*5d6298f2SSam Protsenko
16*5d6298f2SSam Protsenkodescription: |
17*5d6298f2SSam Protsenko  Exynos850 clock controller is comprised of several CMU units, generating
18*5d6298f2SSam Protsenko  clocks for different domains. Those CMU units are modeled as separate device
19*5d6298f2SSam Protsenko  tree nodes, and might depend on each other. Root clocks in that clock tree are
20*5d6298f2SSam Protsenko  two external clocks:: OSCCLK (26 MHz) and RTCCLK (32768 Hz). Those external
21*5d6298f2SSam Protsenko  clocks must be defined as fixed-rate clocks in dts.
22*5d6298f2SSam Protsenko
23*5d6298f2SSam Protsenko  CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
24*5d6298f2SSam Protsenko  dividers; all other leaf clocks (other CMUs) are usually derived from CMU_TOP.
25*5d6298f2SSam Protsenko
26*5d6298f2SSam Protsenko  Each clock is assigned an identifier and client nodes can use this identifier
27*5d6298f2SSam Protsenko  to specify the clock which they consume. All clocks available for usage
28*5d6298f2SSam Protsenko  in clock consumer nodes are defined as preprocessor macros in
29*5d6298f2SSam Protsenko  'dt-bindings/clock/exynos850.h' header.
30*5d6298f2SSam Protsenko
31*5d6298f2SSam Protsenkoproperties:
32*5d6298f2SSam Protsenko  compatible:
33*5d6298f2SSam Protsenko    enum:
34*5d6298f2SSam Protsenko      - samsung,exynos850-cmu-top
35*5d6298f2SSam Protsenko      - samsung,exynos850-cmu-core
36*5d6298f2SSam Protsenko      - samsung,exynos850-cmu-dpu
37*5d6298f2SSam Protsenko      - samsung,exynos850-cmu-hsi
38*5d6298f2SSam Protsenko      - samsung,exynos850-cmu-peri
39*5d6298f2SSam Protsenko
40*5d6298f2SSam Protsenko  clocks:
41*5d6298f2SSam Protsenko    minItems: 1
42*5d6298f2SSam Protsenko    maxItems: 5
43*5d6298f2SSam Protsenko
44*5d6298f2SSam Protsenko  clock-names:
45*5d6298f2SSam Protsenko    minItems: 1
46*5d6298f2SSam Protsenko    maxItems: 5
47*5d6298f2SSam Protsenko
48*5d6298f2SSam Protsenko  "#clock-cells":
49*5d6298f2SSam Protsenko    const: 1
50*5d6298f2SSam Protsenko
51*5d6298f2SSam Protsenko  reg:
52*5d6298f2SSam Protsenko    maxItems: 1
53*5d6298f2SSam Protsenko
54*5d6298f2SSam ProtsenkoallOf:
55*5d6298f2SSam Protsenko  - if:
56*5d6298f2SSam Protsenko      properties:
57*5d6298f2SSam Protsenko        compatible:
58*5d6298f2SSam Protsenko          contains:
59*5d6298f2SSam Protsenko            const: samsung,exynos850-cmu-top
60*5d6298f2SSam Protsenko
61*5d6298f2SSam Protsenko    then:
62*5d6298f2SSam Protsenko      properties:
63*5d6298f2SSam Protsenko        clocks:
64*5d6298f2SSam Protsenko          items:
65*5d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
66*5d6298f2SSam Protsenko
67*5d6298f2SSam Protsenko        clock-names:
68*5d6298f2SSam Protsenko          items:
69*5d6298f2SSam Protsenko            - const: oscclk
70*5d6298f2SSam Protsenko
71*5d6298f2SSam Protsenko  - if:
72*5d6298f2SSam Protsenko      properties:
73*5d6298f2SSam Protsenko        compatible:
74*5d6298f2SSam Protsenko          contains:
75*5d6298f2SSam Protsenko            const: samsung,exynos850-cmu-core
76*5d6298f2SSam Protsenko
77*5d6298f2SSam Protsenko    then:
78*5d6298f2SSam Protsenko      properties:
79*5d6298f2SSam Protsenko        clocks:
80*5d6298f2SSam Protsenko          items:
81*5d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
82*5d6298f2SSam Protsenko            - description: CMU_CORE bus clock (from CMU_TOP)
83*5d6298f2SSam Protsenko            - description: CCI clock (from CMU_TOP)
84*5d6298f2SSam Protsenko            - description: eMMC clock (from CMU_TOP)
85*5d6298f2SSam Protsenko            - description: SSS clock (from CMU_TOP)
86*5d6298f2SSam Protsenko
87*5d6298f2SSam Protsenko        clock-names:
88*5d6298f2SSam Protsenko          items:
89*5d6298f2SSam Protsenko            - const: oscclk
90*5d6298f2SSam Protsenko            - const: dout_core_bus
91*5d6298f2SSam Protsenko            - const: dout_core_cci
92*5d6298f2SSam Protsenko            - const: dout_core_mmc_embd
93*5d6298f2SSam Protsenko            - const: dout_core_sss
94*5d6298f2SSam Protsenko
95*5d6298f2SSam Protsenko  - if:
96*5d6298f2SSam Protsenko      properties:
97*5d6298f2SSam Protsenko        compatible:
98*5d6298f2SSam Protsenko          contains:
99*5d6298f2SSam Protsenko            const: samsung,exynos850-cmu-dpu
100*5d6298f2SSam Protsenko
101*5d6298f2SSam Protsenko    then:
102*5d6298f2SSam Protsenko      properties:
103*5d6298f2SSam Protsenko        clocks:
104*5d6298f2SSam Protsenko          items:
105*5d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
106*5d6298f2SSam Protsenko            - description: DPU clock (from CMU_TOP)
107*5d6298f2SSam Protsenko
108*5d6298f2SSam Protsenko        clock-names:
109*5d6298f2SSam Protsenko          items:
110*5d6298f2SSam Protsenko            - const: oscclk
111*5d6298f2SSam Protsenko            - const: dout_dpu
112*5d6298f2SSam Protsenko
113*5d6298f2SSam Protsenko  - if:
114*5d6298f2SSam Protsenko      properties:
115*5d6298f2SSam Protsenko        compatible:
116*5d6298f2SSam Protsenko          contains:
117*5d6298f2SSam Protsenko            const: samsung,exynos850-cmu-hsi
118*5d6298f2SSam Protsenko
119*5d6298f2SSam Protsenko    then:
120*5d6298f2SSam Protsenko      properties:
121*5d6298f2SSam Protsenko        clocks:
122*5d6298f2SSam Protsenko          items:
123*5d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
124*5d6298f2SSam Protsenko            - description: External RTC clock (32768 Hz)
125*5d6298f2SSam Protsenko            - description: CMU_HSI bus clock (from CMU_TOP)
126*5d6298f2SSam Protsenko            - description: SD card clock (from CMU_TOP)
127*5d6298f2SSam Protsenko            - description: "USB 2.0 DRD clock (from CMU_TOP)"
128*5d6298f2SSam Protsenko
129*5d6298f2SSam Protsenko        clock-names:
130*5d6298f2SSam Protsenko          items:
131*5d6298f2SSam Protsenko            - const: oscclk
132*5d6298f2SSam Protsenko            - const: rtcclk
133*5d6298f2SSam Protsenko            - const: dout_hsi_bus
134*5d6298f2SSam Protsenko            - const: dout_hsi_mmc_card
135*5d6298f2SSam Protsenko            - const: dout_hsi_usb20drd
136*5d6298f2SSam Protsenko
137*5d6298f2SSam Protsenko  - if:
138*5d6298f2SSam Protsenko      properties:
139*5d6298f2SSam Protsenko        compatible:
140*5d6298f2SSam Protsenko          contains:
141*5d6298f2SSam Protsenko            const: samsung,exynos850-cmu-peri
142*5d6298f2SSam Protsenko
143*5d6298f2SSam Protsenko    then:
144*5d6298f2SSam Protsenko      properties:
145*5d6298f2SSam Protsenko        clocks:
146*5d6298f2SSam Protsenko          items:
147*5d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
148*5d6298f2SSam Protsenko            - description: CMU_PERI bus clock (from CMU_TOP)
149*5d6298f2SSam Protsenko            - description: UART clock (from CMU_TOP)
150*5d6298f2SSam Protsenko            - description: Parent clock for HSI2C and SPI (from CMU_TOP)
151*5d6298f2SSam Protsenko
152*5d6298f2SSam Protsenko        clock-names:
153*5d6298f2SSam Protsenko          items:
154*5d6298f2SSam Protsenko            - const: oscclk
155*5d6298f2SSam Protsenko            - const: dout_peri_bus
156*5d6298f2SSam Protsenko            - const: dout_peri_uart
157*5d6298f2SSam Protsenko            - const: dout_peri_ip
158*5d6298f2SSam Protsenko
159*5d6298f2SSam Protsenkorequired:
160*5d6298f2SSam Protsenko  - compatible
161*5d6298f2SSam Protsenko  - "#clock-cells"
162*5d6298f2SSam Protsenko  - clocks
163*5d6298f2SSam Protsenko  - clock-names
164*5d6298f2SSam Protsenko  - reg
165*5d6298f2SSam Protsenko
166*5d6298f2SSam ProtsenkoadditionalProperties: false
167*5d6298f2SSam Protsenko
168*5d6298f2SSam Protsenkoexamples:
169*5d6298f2SSam Protsenko  # Clock controller node for CMU_PERI
170*5d6298f2SSam Protsenko  - |
171*5d6298f2SSam Protsenko    #include <dt-bindings/clock/exynos850.h>
172*5d6298f2SSam Protsenko
173*5d6298f2SSam Protsenko    cmu_peri: clock-controller@10030000 {
174*5d6298f2SSam Protsenko        compatible = "samsung,exynos850-cmu-peri";
175*5d6298f2SSam Protsenko        reg = <0x10030000 0x8000>;
176*5d6298f2SSam Protsenko        #clock-cells = <1>;
177*5d6298f2SSam Protsenko
178*5d6298f2SSam Protsenko        clocks = <&oscclk>, <&cmu_top CLK_DOUT_PERI_BUS>,
179*5d6298f2SSam Protsenko                 <&cmu_top CLK_DOUT_PERI_UART>,
180*5d6298f2SSam Protsenko                 <&cmu_top CLK_DOUT_PERI_IP>;
181*5d6298f2SSam Protsenko        clock-names = "oscclk", "dout_peri_bus",
182*5d6298f2SSam Protsenko                      "dout_peri_uart", "dout_peri_ip";
183*5d6298f2SSam Protsenko    };
184*5d6298f2SSam Protsenko
185*5d6298f2SSam Protsenko...
186