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-g3d
41f20f35f4SSam Protsenko      - samsung,exynos850-cmu-hsi
428f3fc0edSSam Protsenko      - samsung,exynos850-cmu-is
435d6298f2SSam Protsenko      - samsung,exynos850-cmu-mfcmscl
445d6298f2SSam Protsenko      - samsung,exynos850-cmu-peri
455d6298f2SSam Protsenko
465d6298f2SSam Protsenko  clocks:
475d6298f2SSam Protsenko    minItems: 1
485d6298f2SSam Protsenko    maxItems: 5
495d6298f2SSam Protsenko
505d6298f2SSam Protsenko  clock-names:
515d6298f2SSam Protsenko    minItems: 1
525d6298f2SSam Protsenko    maxItems: 5
535d6298f2SSam Protsenko
545d6298f2SSam Protsenko  "#clock-cells":
555d6298f2SSam Protsenko    const: 1
565d6298f2SSam Protsenko
575d6298f2SSam Protsenko  reg:
585d6298f2SSam Protsenko    maxItems: 1
595d6298f2SSam Protsenko
605d6298f2SSam ProtsenkoallOf:
615d6298f2SSam Protsenko  - if:
625d6298f2SSam Protsenko      properties:
635d6298f2SSam Protsenko        compatible:
645d6298f2SSam Protsenko          contains:
655d6298f2SSam Protsenko            const: samsung,exynos850-cmu-top
665d6298f2SSam Protsenko
675d6298f2SSam Protsenko    then:
685d6298f2SSam Protsenko      properties:
695d6298f2SSam Protsenko        clocks:
705d6298f2SSam Protsenko          items:
715d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
725d6298f2SSam Protsenko
735d6298f2SSam Protsenko        clock-names:
745d6298f2SSam Protsenko          items:
755d6298f2SSam Protsenko            - const: oscclk
765d6298f2SSam Protsenko
775d6298f2SSam Protsenko  - if:
785d6298f2SSam Protsenko      properties:
795d6298f2SSam Protsenko        compatible:
8016e0c247SSam Protsenko          contains:
8116e0c247SSam Protsenko            const: samsung,exynos850-cmu-apm
8216e0c247SSam Protsenko
8316e0c247SSam Protsenko    then:
8416e0c247SSam Protsenko      properties:
8516e0c247SSam Protsenko        clocks:
8616e0c247SSam Protsenko          items:
8716e0c247SSam Protsenko            - description: External reference clock (26 MHz)
8816e0c247SSam Protsenko            - description: CMU_APM bus clock (from CMU_TOP)
8916e0c247SSam Protsenko
9016e0c247SSam Protsenko        clock-names:
9116e0c247SSam Protsenko          items:
9216e0c247SSam Protsenko            - const: oscclk
9316e0c247SSam Protsenko            - const: dout_clkcmu_apm_bus
9416e0c247SSam Protsenko
9516e0c247SSam Protsenko  - if:
9616e0c247SSam Protsenko      properties:
9716e0c247SSam Protsenko        compatible:
9845bbf4d7SSam Protsenko          contains:
9945bbf4d7SSam Protsenko            const: samsung,exynos850-cmu-aud
10045bbf4d7SSam Protsenko
10145bbf4d7SSam Protsenko    then:
10245bbf4d7SSam Protsenko      properties:
10345bbf4d7SSam Protsenko        clocks:
10445bbf4d7SSam Protsenko          items:
10545bbf4d7SSam Protsenko            - description: External reference clock (26 MHz)
10645bbf4d7SSam Protsenko            - description: AUD clock (from CMU_TOP)
10745bbf4d7SSam Protsenko
10845bbf4d7SSam Protsenko        clock-names:
10945bbf4d7SSam Protsenko          items:
11045bbf4d7SSam Protsenko            - const: oscclk
11145bbf4d7SSam Protsenko            - const: dout_aud
11245bbf4d7SSam Protsenko
11345bbf4d7SSam Protsenko  - if:
11445bbf4d7SSam Protsenko      properties:
11545bbf4d7SSam Protsenko        compatible:
116c2afeb79SSam Protsenko          contains:
117c2afeb79SSam Protsenko            const: samsung,exynos850-cmu-cmgp
118c2afeb79SSam Protsenko
119c2afeb79SSam Protsenko    then:
120c2afeb79SSam Protsenko      properties:
121c2afeb79SSam Protsenko        clocks:
122c2afeb79SSam Protsenko          items:
123c2afeb79SSam Protsenko            - description: External reference clock (26 MHz)
124c2afeb79SSam Protsenko            - description: CMU_CMGP bus clock (from CMU_APM)
125c2afeb79SSam Protsenko
126c2afeb79SSam Protsenko        clock-names:
127c2afeb79SSam Protsenko          items:
128c2afeb79SSam Protsenko            - const: oscclk
129c2afeb79SSam Protsenko            - const: gout_clkcmu_cmgp_bus
130c2afeb79SSam Protsenko
131c2afeb79SSam Protsenko  - if:
132c2afeb79SSam Protsenko      properties:
133c2afeb79SSam Protsenko        compatible:
1345d6298f2SSam Protsenko          contains:
1355d6298f2SSam Protsenko            const: samsung,exynos850-cmu-core
1365d6298f2SSam Protsenko
1375d6298f2SSam Protsenko    then:
1385d6298f2SSam Protsenko      properties:
1395d6298f2SSam Protsenko        clocks:
1405d6298f2SSam Protsenko          items:
1415d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
1425d6298f2SSam Protsenko            - description: CMU_CORE bus clock (from CMU_TOP)
1435d6298f2SSam Protsenko            - description: CCI clock (from CMU_TOP)
1445d6298f2SSam Protsenko            - description: eMMC clock (from CMU_TOP)
1455d6298f2SSam Protsenko            - description: SSS clock (from CMU_TOP)
1465d6298f2SSam Protsenko
1475d6298f2SSam Protsenko        clock-names:
1485d6298f2SSam Protsenko          items:
1495d6298f2SSam Protsenko            - const: oscclk
1505d6298f2SSam Protsenko            - const: dout_core_bus
1515d6298f2SSam Protsenko            - const: dout_core_cci
1525d6298f2SSam Protsenko            - const: dout_core_mmc_embd
1535d6298f2SSam Protsenko            - const: dout_core_sss
1545d6298f2SSam Protsenko
1555d6298f2SSam Protsenko  - if:
1565d6298f2SSam Protsenko      properties:
1575d6298f2SSam Protsenko        compatible:
1585d6298f2SSam Protsenko          contains:
1595d6298f2SSam Protsenko            const: samsung,exynos850-cmu-dpu
1605d6298f2SSam Protsenko
1615d6298f2SSam Protsenko    then:
1625d6298f2SSam Protsenko      properties:
1635d6298f2SSam Protsenko        clocks:
1645d6298f2SSam Protsenko          items:
1655d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
1665d6298f2SSam Protsenko            - description: DPU clock (from CMU_TOP)
1675d6298f2SSam Protsenko
1685d6298f2SSam Protsenko        clock-names:
1695d6298f2SSam Protsenko          items:
1705d6298f2SSam Protsenko            - const: oscclk
1715d6298f2SSam Protsenko            - const: dout_dpu
1725d6298f2SSam Protsenko
1735d6298f2SSam Protsenko  - if:
1745d6298f2SSam Protsenko      properties:
1755d6298f2SSam Protsenko        compatible:
1765d6298f2SSam Protsenko          contains:
1775d6298f2SSam Protsenko            const: samsung,exynos850-cmu-g3d
1785d6298f2SSam Protsenko
1795d6298f2SSam Protsenko    then:
1805d6298f2SSam Protsenko      properties:
1815d6298f2SSam Protsenko        clocks:
1825d6298f2SSam Protsenko          items:
1835d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
1845d6298f2SSam Protsenko            - description: G3D clock (from CMU_TOP)
1855d6298f2SSam Protsenko
186*32671977SRob Herring        clock-names:
1875d6298f2SSam Protsenko          items:
1885d6298f2SSam Protsenko            - const: oscclk
1895d6298f2SSam Protsenko            - const: dout_g3d_switch
1905d6298f2SSam Protsenko
1915d6298f2SSam Protsenko  - if:
1925d6298f2SSam Protsenko      properties:
1935d6298f2SSam Protsenko        compatible:
1945d6298f2SSam Protsenko          contains:
1955d6298f2SSam Protsenko            const: samsung,exynos850-cmu-hsi
1965d6298f2SSam Protsenko
1975d6298f2SSam Protsenko    then:
1985d6298f2SSam Protsenko      properties:
1995d6298f2SSam Protsenko        clocks:
200f20f35f4SSam Protsenko          items:
201f20f35f4SSam Protsenko            - description: External reference clock (26 MHz)
202f20f35f4SSam Protsenko            - description: External RTC clock (32768 Hz)
203f20f35f4SSam Protsenko            - description: CMU_HSI bus clock (from CMU_TOP)
204f20f35f4SSam Protsenko            - description: SD card clock (from CMU_TOP)
205f20f35f4SSam Protsenko            - description: USB 2.0 DRD clock (from CMU_TOP)
206f20f35f4SSam Protsenko
207f20f35f4SSam Protsenko        clock-names:
208f20f35f4SSam Protsenko          items:
209f20f35f4SSam Protsenko            - const: oscclk
210f20f35f4SSam Protsenko            - const: rtcclk
211f20f35f4SSam Protsenko            - const: dout_hsi_bus
212f20f35f4SSam Protsenko            - const: dout_hsi_mmc_card
213f20f35f4SSam Protsenko            - const: dout_hsi_usb20drd
214f20f35f4SSam Protsenko
215f20f35f4SSam Protsenko  - if:
216f20f35f4SSam Protsenko      properties:
217f20f35f4SSam Protsenko        compatible:
218f20f35f4SSam Protsenko          contains:
219f20f35f4SSam Protsenko            const: samsung,exynos850-cmu-is
220f20f35f4SSam Protsenko
221f20f35f4SSam Protsenko    then:
222f20f35f4SSam Protsenko      properties:
223f20f35f4SSam Protsenko        clocks:
2248f3fc0edSSam Protsenko          items:
2258f3fc0edSSam Protsenko            - description: External reference clock (26 MHz)
2268f3fc0edSSam Protsenko            - description: CMU_IS bus clock (from CMU_TOP)
2278f3fc0edSSam Protsenko            - description: Image Texture Processing core clock (from CMU_TOP)
2288f3fc0edSSam Protsenko            - description: Visual Recognition Accelerator clock (from CMU_TOP)
2298f3fc0edSSam Protsenko            - description: Geometric Distortion Correction clock (from CMU_TOP)
2308f3fc0edSSam Protsenko
2318f3fc0edSSam Protsenko        clock-names:
2328f3fc0edSSam Protsenko          items:
2338f3fc0edSSam Protsenko            - const: oscclk
2348f3fc0edSSam Protsenko            - const: dout_is_bus
2358f3fc0edSSam Protsenko            - const: dout_is_itp
2368f3fc0edSSam Protsenko            - const: dout_is_vra
2378f3fc0edSSam Protsenko            - const: dout_is_gdc
2388f3fc0edSSam Protsenko
2398f3fc0edSSam Protsenko  - if:
2408f3fc0edSSam Protsenko      properties:
2418f3fc0edSSam Protsenko        compatible:
2428f3fc0edSSam Protsenko          contains:
2438f3fc0edSSam Protsenko            const: samsung,exynos850-cmu-mfcmscl
2448f3fc0edSSam Protsenko
2458f3fc0edSSam Protsenko    then:
2468f3fc0edSSam Protsenko      properties:
2478f3fc0edSSam Protsenko        clocks:
2485d6298f2SSam Protsenko          items:
2495d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
2505d6298f2SSam Protsenko            - description: Multi-Format Codec clock (from CMU_TOP)
2515d6298f2SSam Protsenko            - description: Memory to Memory Scaler clock (from CMU_TOP)
2525d6298f2SSam Protsenko            - description: Multi-Channel Scaler clock (from CMU_TOP)
2535d6298f2SSam Protsenko            - description: JPEG codec clock (from CMU_TOP)
2545d6298f2SSam Protsenko
2555d6298f2SSam Protsenko        clock-names:
2565d6298f2SSam Protsenko          items:
2575d6298f2SSam Protsenko            - const: oscclk
2585d6298f2SSam Protsenko            - const: dout_mfcmscl_mfc
2595d6298f2SSam Protsenko            - const: dout_mfcmscl_m2m
2605d6298f2SSam Protsenko            - const: dout_mfcmscl_mcsc
2615d6298f2SSam Protsenko            - const: dout_mfcmscl_jpeg
2625d6298f2SSam Protsenko
2635d6298f2SSam Protsenko  - if:
2645d6298f2SSam Protsenko      properties:
2655d6298f2SSam Protsenko        compatible:
2665d6298f2SSam Protsenko          contains:
2675d6298f2SSam Protsenko            const: samsung,exynos850-cmu-peri
2685d6298f2SSam Protsenko
2695d6298f2SSam Protsenko    then:
2705d6298f2SSam Protsenko      properties:
2715d6298f2SSam Protsenko        clocks:
2725d6298f2SSam Protsenko          items:
2735d6298f2SSam Protsenko            - description: External reference clock (26 MHz)
2745d6298f2SSam Protsenko            - description: CMU_PERI bus clock (from CMU_TOP)
2755d6298f2SSam Protsenko            - description: UART clock (from CMU_TOP)
2765d6298f2SSam Protsenko            - description: Parent clock for HSI2C and SPI (from CMU_TOP)
2775d6298f2SSam Protsenko
2785d6298f2SSam Protsenko        clock-names:
2795d6298f2SSam Protsenko          items:
2805d6298f2SSam Protsenko            - const: oscclk
2815d6298f2SSam Protsenko            - const: dout_peri_bus
2825d6298f2SSam Protsenko            - const: dout_peri_uart
2835d6298f2SSam Protsenko            - const: dout_peri_ip
2845d6298f2SSam Protsenko
2855d6298f2SSam Protsenkorequired:
2865d6298f2SSam Protsenko  - compatible
2875d6298f2SSam Protsenko  - "#clock-cells"
2885d6298f2SSam Protsenko  - clocks
2895d6298f2SSam Protsenko  - clock-names
2905d6298f2SSam Protsenko  - reg
2915d6298f2SSam Protsenko
2925d6298f2SSam ProtsenkoadditionalProperties: false
293
294examples:
295  # Clock controller node for CMU_PERI
296  - |
297    #include <dt-bindings/clock/exynos850.h>
298
299    cmu_peri: clock-controller@10030000 {
300        compatible = "samsung,exynos850-cmu-peri";
301        reg = <0x10030000 0x8000>;
302        #clock-cells = <1>;
303
304        clocks = <&oscclk>, <&cmu_top CLK_DOUT_PERI_BUS>,
305                 <&cmu_top CLK_DOUT_PERI_UART>,
306                 <&cmu_top CLK_DOUT_PERI_IP>;
307        clock-names = "oscclk", "dout_peri_bus",
308                      "dout_peri_uart", "dout_peri_ip";
309    };
310
311...
312