15d6298f2SSam Protsenko# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
25d6298f2SSam Protsenko%YAML 1.2
35d6298f2SSam Protsenko---
45d6298f2SSam Protsenko$id: http://devicetree.org/schemas/clock/samsung,exynos850-clock.yaml#
55d6298f2SSam Protsenko$schema: http://devicetree.org/meta-schemas/core.yaml#
65d6298f2SSam Protsenko
75d6298f2SSam Protsenkotitle: Samsung Exynos850 SoC clock controller
85d6298f2SSam Protsenko
95d6298f2SSam Protsenkomaintainers:
105d6298f2SSam Protsenko  - Sam Protsenko <semen.protsenko@linaro.org>
115d6298f2SSam Protsenko  - Chanwoo Choi <cw00.choi@samsung.com>
128a1e6bb3SKrzysztof Kozlowski  - Krzysztof Kozlowski <krzk@kernel.org>
135d6298f2SSam Protsenko  - Sylwester Nawrocki <s.nawrocki@samsung.com>
145d6298f2SSam Protsenko  - Tomasz Figa <tomasz.figa@gmail.com>
155d6298f2SSam Protsenko
165d6298f2SSam Protsenkodescription: |
175d6298f2SSam Protsenko  Exynos850 clock controller is comprised of several CMU units, generating
185d6298f2SSam Protsenko  clocks for different domains. Those CMU units are modeled as separate device
195d6298f2SSam Protsenko  tree nodes, and might depend on each other. Root clocks in that clock tree are
205d6298f2SSam Protsenko  two external clocks:: OSCCLK (26 MHz) and RTCCLK (32768 Hz). Those external
215d6298f2SSam Protsenko  clocks must be defined as fixed-rate clocks in dts.
225d6298f2SSam Protsenko
235d6298f2SSam Protsenko  CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
245d6298f2SSam Protsenko  dividers; all other leaf clocks (other CMUs) are usually derived from CMU_TOP.
255d6298f2SSam Protsenko
265d6298f2SSam Protsenko  Each clock is assigned an identifier and client nodes can use this identifier
275d6298f2SSam Protsenko  to specify the clock which they consume. All clocks available for usage
285d6298f2SSam Protsenko  in clock consumer nodes are defined as preprocessor macros in
295d6298f2SSam Protsenko  'dt-bindings/clock/exynos850.h' header.
305d6298f2SSam Protsenko
315d6298f2SSam Protsenkoproperties:
325d6298f2SSam Protsenko  compatible:
335d6298f2SSam Protsenko    enum:
345d6298f2SSam Protsenko      - samsung,exynos850-cmu-top
3516e0c247SSam Protsenko      - samsung,exynos850-cmu-apm
3645bbf4d7SSam Protsenko      - samsung,exynos850-cmu-aud
37c2afeb79SSam Protsenko      - samsung,exynos850-cmu-cmgp
385d6298f2SSam Protsenko      - samsung,exynos850-cmu-core
395d6298f2SSam Protsenko      - samsung,exynos850-cmu-dpu
405d6298f2SSam Protsenko      - samsung,exynos850-cmu-hsi
41*f20f35f4SSam Protsenko      - samsung,exynos850-cmu-is
425d6298f2SSam Protsenko      - samsung,exynos850-cmu-peri
435d6298f2SSam Protsenko
445d6298f2SSam Protsenko  clocks:
455d6298f2SSam Protsenko    minItems: 1
465d6298f2SSam Protsenko    maxItems: 5
475d6298f2SSam Protsenko
485d6298f2SSam Protsenko  clock-names:
495d6298f2SSam Protsenko    minItems: 1
505d6298f2SSam Protsenko    maxItems: 5
515d6298f2SSam Protsenko
525d6298f2SSam Protsenko  "#clock-cells":
535d6298f2SSam Protsenko    const: 1
545d6298f2SSam Protsenko
555d6298f2SSam Protsenko  reg:
565d6298f2SSam Protsenko    maxItems: 1
575d6298f2SSam Protsenko
585d6298f2SSam ProtsenkoallOf:
595d6298f2SSam Protsenko  - if:
605d6298f2SSam Protsenko      properties:
615d6298f2SSam Protsenko        compatible:
625d6298f2SSam Protsenko          contains:
635d6298f2SSam Protsenko            const: samsung,exynos850-cmu-top
645d6298f2SSam Protsenko
655d6298f2SSam Protsenko    then:
665d6298f2SSam Protsenko      properties:
675d6298f2SSam Protsenko        clocks:
685d6298f2SSam Protsenko          items:
695d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
705d6298f2SSam Protsenko
715d6298f2SSam Protsenko        clock-names:
725d6298f2SSam Protsenko          items:
735d6298f2SSam Protsenko            - const: oscclk
745d6298f2SSam Protsenko
755d6298f2SSam Protsenko  - if:
765d6298f2SSam Protsenko      properties:
775d6298f2SSam Protsenko        compatible:
785d6298f2SSam Protsenko          contains:
7916e0c247SSam Protsenko            const: samsung,exynos850-cmu-apm
8016e0c247SSam Protsenko
8116e0c247SSam Protsenko    then:
8216e0c247SSam Protsenko      properties:
8316e0c247SSam Protsenko        clocks:
8416e0c247SSam Protsenko          items:
8516e0c247SSam Protsenko            - description: External reference clock (26 MHz)
8616e0c247SSam Protsenko            - description: CMU_APM bus clock (from CMU_TOP)
8716e0c247SSam Protsenko
8816e0c247SSam Protsenko        clock-names:
8916e0c247SSam Protsenko          items:
9016e0c247SSam Protsenko            - const: oscclk
9116e0c247SSam Protsenko            - const: dout_clkcmu_apm_bus
9216e0c247SSam Protsenko
9316e0c247SSam Protsenko  - if:
9416e0c247SSam Protsenko      properties:
9516e0c247SSam Protsenko        compatible:
9616e0c247SSam Protsenko          contains:
9745bbf4d7SSam Protsenko            const: samsung,exynos850-cmu-aud
9845bbf4d7SSam Protsenko
9945bbf4d7SSam Protsenko    then:
10045bbf4d7SSam Protsenko      properties:
10145bbf4d7SSam Protsenko        clocks:
10245bbf4d7SSam Protsenko          items:
10345bbf4d7SSam Protsenko            - description: External reference clock (26 MHz)
10445bbf4d7SSam Protsenko            - description: AUD clock (from CMU_TOP)
10545bbf4d7SSam Protsenko
10645bbf4d7SSam Protsenko        clock-names:
10745bbf4d7SSam Protsenko          items:
10845bbf4d7SSam Protsenko            - const: oscclk
10945bbf4d7SSam Protsenko            - const: dout_aud
11045bbf4d7SSam Protsenko
11145bbf4d7SSam Protsenko  - if:
11245bbf4d7SSam Protsenko      properties:
11345bbf4d7SSam Protsenko        compatible:
11445bbf4d7SSam Protsenko          contains:
115c2afeb79SSam Protsenko            const: samsung,exynos850-cmu-cmgp
116c2afeb79SSam Protsenko
117c2afeb79SSam Protsenko    then:
118c2afeb79SSam Protsenko      properties:
119c2afeb79SSam Protsenko        clocks:
120c2afeb79SSam Protsenko          items:
121c2afeb79SSam Protsenko            - description: External reference clock (26 MHz)
122c2afeb79SSam Protsenko            - description: CMU_CMGP bus clock (from CMU_APM)
123c2afeb79SSam Protsenko
124c2afeb79SSam Protsenko        clock-names:
125c2afeb79SSam Protsenko          items:
126c2afeb79SSam Protsenko            - const: oscclk
127c2afeb79SSam Protsenko            - const: gout_clkcmu_cmgp_bus
128c2afeb79SSam Protsenko
129c2afeb79SSam Protsenko  - if:
130c2afeb79SSam Protsenko      properties:
131c2afeb79SSam Protsenko        compatible:
132c2afeb79SSam Protsenko          contains:
1335d6298f2SSam Protsenko            const: samsung,exynos850-cmu-core
1345d6298f2SSam Protsenko
1355d6298f2SSam Protsenko    then:
1365d6298f2SSam Protsenko      properties:
1375d6298f2SSam Protsenko        clocks:
1385d6298f2SSam Protsenko          items:
1395d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
1405d6298f2SSam Protsenko            - description: CMU_CORE bus clock (from CMU_TOP)
1415d6298f2SSam Protsenko            - description: CCI clock (from CMU_TOP)
1425d6298f2SSam Protsenko            - description: eMMC clock (from CMU_TOP)
1435d6298f2SSam Protsenko            - description: SSS clock (from CMU_TOP)
1445d6298f2SSam Protsenko
1455d6298f2SSam Protsenko        clock-names:
1465d6298f2SSam Protsenko          items:
1475d6298f2SSam Protsenko            - const: oscclk
1485d6298f2SSam Protsenko            - const: dout_core_bus
1495d6298f2SSam Protsenko            - const: dout_core_cci
1505d6298f2SSam Protsenko            - const: dout_core_mmc_embd
1515d6298f2SSam Protsenko            - const: dout_core_sss
1525d6298f2SSam Protsenko
1535d6298f2SSam Protsenko  - if:
1545d6298f2SSam Protsenko      properties:
1555d6298f2SSam Protsenko        compatible:
1565d6298f2SSam Protsenko          contains:
1575d6298f2SSam Protsenko            const: samsung,exynos850-cmu-dpu
1585d6298f2SSam Protsenko
1595d6298f2SSam Protsenko    then:
1605d6298f2SSam Protsenko      properties:
1615d6298f2SSam Protsenko        clocks:
1625d6298f2SSam Protsenko          items:
1635d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
1645d6298f2SSam Protsenko            - description: DPU clock (from CMU_TOP)
1655d6298f2SSam Protsenko
1665d6298f2SSam Protsenko        clock-names:
1675d6298f2SSam Protsenko          items:
1685d6298f2SSam Protsenko            - const: oscclk
1695d6298f2SSam Protsenko            - const: dout_dpu
1705d6298f2SSam Protsenko
1715d6298f2SSam Protsenko  - if:
1725d6298f2SSam Protsenko      properties:
1735d6298f2SSam Protsenko        compatible:
1745d6298f2SSam Protsenko          contains:
1755d6298f2SSam Protsenko            const: samsung,exynos850-cmu-hsi
1765d6298f2SSam Protsenko
1775d6298f2SSam Protsenko    then:
1785d6298f2SSam Protsenko      properties:
1795d6298f2SSam Protsenko        clocks:
1805d6298f2SSam Protsenko          items:
1815d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
1825d6298f2SSam Protsenko            - description: External RTC clock (32768 Hz)
1835d6298f2SSam Protsenko            - description: CMU_HSI bus clock (from CMU_TOP)
1845d6298f2SSam Protsenko            - description: SD card clock (from CMU_TOP)
1855d6298f2SSam Protsenko            - description: "USB 2.0 DRD clock (from CMU_TOP)"
1865d6298f2SSam Protsenko
1875d6298f2SSam Protsenko        clock-names:
1885d6298f2SSam Protsenko          items:
1895d6298f2SSam Protsenko            - const: oscclk
1905d6298f2SSam Protsenko            - const: rtcclk
1915d6298f2SSam Protsenko            - const: dout_hsi_bus
1925d6298f2SSam Protsenko            - const: dout_hsi_mmc_card
1935d6298f2SSam Protsenko            - const: dout_hsi_usb20drd
1945d6298f2SSam Protsenko
1955d6298f2SSam Protsenko  - if:
1965d6298f2SSam Protsenko      properties:
1975d6298f2SSam Protsenko        compatible:
1985d6298f2SSam Protsenko          contains:
199*f20f35f4SSam Protsenko            const: samsung,exynos850-cmu-is
200*f20f35f4SSam Protsenko
201*f20f35f4SSam Protsenko    then:
202*f20f35f4SSam Protsenko      properties:
203*f20f35f4SSam Protsenko        clocks:
204*f20f35f4SSam Protsenko          items:
205*f20f35f4SSam Protsenko            - description: External reference clock (26 MHz)
206*f20f35f4SSam Protsenko            - description: CMU_IS bus clock (from CMU_TOP)
207*f20f35f4SSam Protsenko            - description: Image Texture Processing core clock (from CMU_TOP)
208*f20f35f4SSam Protsenko            - description: Visual Recognition Accelerator clock (from CMU_TOP)
209*f20f35f4SSam Protsenko            - description: Geometric Distortion Correction clock (from CMU_TOP)
210*f20f35f4SSam Protsenko
211*f20f35f4SSam Protsenko        clock-names:
212*f20f35f4SSam Protsenko          items:
213*f20f35f4SSam Protsenko            - const: oscclk
214*f20f35f4SSam Protsenko            - const: dout_is_bus
215*f20f35f4SSam Protsenko            - const: dout_is_itp
216*f20f35f4SSam Protsenko            - const: dout_is_vra
217*f20f35f4SSam Protsenko            - const: dout_is_gdc
218*f20f35f4SSam Protsenko
219*f20f35f4SSam Protsenko  - if:
220*f20f35f4SSam Protsenko      properties:
221*f20f35f4SSam Protsenko        compatible:
222*f20f35f4SSam Protsenko          contains:
2235d6298f2SSam Protsenko            const: samsung,exynos850-cmu-peri
2245d6298f2SSam Protsenko
2255d6298f2SSam Protsenko    then:
2265d6298f2SSam Protsenko      properties:
2275d6298f2SSam Protsenko        clocks:
2285d6298f2SSam Protsenko          items:
2295d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
2305d6298f2SSam Protsenko            - description: CMU_PERI bus clock (from CMU_TOP)
2315d6298f2SSam Protsenko            - description: UART clock (from CMU_TOP)
2325d6298f2SSam Protsenko            - description: Parent clock for HSI2C and SPI (from CMU_TOP)
2335d6298f2SSam Protsenko
2345d6298f2SSam Protsenko        clock-names:
2355d6298f2SSam Protsenko          items:
2365d6298f2SSam Protsenko            - const: oscclk
2375d6298f2SSam Protsenko            - const: dout_peri_bus
2385d6298f2SSam Protsenko            - const: dout_peri_uart
2395d6298f2SSam Protsenko            - const: dout_peri_ip
2405d6298f2SSam Protsenko
2415d6298f2SSam Protsenkorequired:
2425d6298f2SSam Protsenko  - compatible
2435d6298f2SSam Protsenko  - "#clock-cells"
2445d6298f2SSam Protsenko  - clocks
2455d6298f2SSam Protsenko  - clock-names
2465d6298f2SSam Protsenko  - reg
2475d6298f2SSam Protsenko
2485d6298f2SSam ProtsenkoadditionalProperties: false
2495d6298f2SSam Protsenko
2505d6298f2SSam Protsenkoexamples:
2515d6298f2SSam Protsenko  # Clock controller node for CMU_PERI
2525d6298f2SSam Protsenko  - |
2535d6298f2SSam Protsenko    #include <dt-bindings/clock/exynos850.h>
2545d6298f2SSam Protsenko
2555d6298f2SSam Protsenko    cmu_peri: clock-controller@10030000 {
2565d6298f2SSam Protsenko        compatible = "samsung,exynos850-cmu-peri";
2575d6298f2SSam Protsenko        reg = <0x10030000 0x8000>;
2585d6298f2SSam Protsenko        #clock-cells = <1>;
2595d6298f2SSam Protsenko
2605d6298f2SSam Protsenko        clocks = <&oscclk>, <&cmu_top CLK_DOUT_PERI_BUS>,
2615d6298f2SSam Protsenko                 <&cmu_top CLK_DOUT_PERI_UART>,
2625d6298f2SSam Protsenko                 <&cmu_top CLK_DOUT_PERI_IP>;
2635d6298f2SSam Protsenko        clock-names = "oscclk", "dout_peri_bus",
2645d6298f2SSam Protsenko                      "dout_peri_uart", "dout_peri_ip";
2655d6298f2SSam Protsenko    };
2665d6298f2SSam Protsenko
2675d6298f2SSam Protsenko...
268