162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/clock/samsung,exynos850-clock.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Samsung Exynos850 SoC clock controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Sam Protsenko <semen.protsenko@linaro.org>
1162306a36Sopenharmony_ci  - Chanwoo Choi <cw00.choi@samsung.com>
1262306a36Sopenharmony_ci  - Krzysztof Kozlowski <krzk@kernel.org>
1362306a36Sopenharmony_ci  - Sylwester Nawrocki <s.nawrocki@samsung.com>
1462306a36Sopenharmony_ci  - Tomasz Figa <tomasz.figa@gmail.com>
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cidescription: |
1762306a36Sopenharmony_ci  Exynos850 clock controller is comprised of several CMU units, generating
1862306a36Sopenharmony_ci  clocks for different domains. Those CMU units are modeled as separate device
1962306a36Sopenharmony_ci  tree nodes, and might depend on each other. Root clocks in that clock tree are
2062306a36Sopenharmony_ci  two external clocks:: OSCCLK (26 MHz) and RTCCLK (32768 Hz). Those external
2162306a36Sopenharmony_ci  clocks must be defined as fixed-rate clocks in dts.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
2462306a36Sopenharmony_ci  dividers; all other leaf clocks (other CMUs) are usually derived from CMU_TOP.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  Each clock is assigned an identifier and client nodes can use this identifier
2762306a36Sopenharmony_ci  to specify the clock which they consume. All clocks available for usage
2862306a36Sopenharmony_ci  in clock consumer nodes are defined as preprocessor macros in
2962306a36Sopenharmony_ci  'dt-bindings/clock/exynos850.h' header.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciproperties:
3262306a36Sopenharmony_ci  compatible:
3362306a36Sopenharmony_ci    enum:
3462306a36Sopenharmony_ci      - samsung,exynos850-cmu-top
3562306a36Sopenharmony_ci      - samsung,exynos850-cmu-apm
3662306a36Sopenharmony_ci      - samsung,exynos850-cmu-aud
3762306a36Sopenharmony_ci      - samsung,exynos850-cmu-cmgp
3862306a36Sopenharmony_ci      - samsung,exynos850-cmu-core
3962306a36Sopenharmony_ci      - samsung,exynos850-cmu-dpu
4062306a36Sopenharmony_ci      - samsung,exynos850-cmu-g3d
4162306a36Sopenharmony_ci      - samsung,exynos850-cmu-hsi
4262306a36Sopenharmony_ci      - samsung,exynos850-cmu-is
4362306a36Sopenharmony_ci      - samsung,exynos850-cmu-mfcmscl
4462306a36Sopenharmony_ci      - samsung,exynos850-cmu-peri
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  clocks:
4762306a36Sopenharmony_ci    minItems: 1
4862306a36Sopenharmony_ci    maxItems: 5
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci  clock-names:
5162306a36Sopenharmony_ci    minItems: 1
5262306a36Sopenharmony_ci    maxItems: 5
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  "#clock-cells":
5562306a36Sopenharmony_ci    const: 1
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  reg:
5862306a36Sopenharmony_ci    maxItems: 1
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciallOf:
6162306a36Sopenharmony_ci  - if:
6262306a36Sopenharmony_ci      properties:
6362306a36Sopenharmony_ci        compatible:
6462306a36Sopenharmony_ci          contains:
6562306a36Sopenharmony_ci            const: samsung,exynos850-cmu-top
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci    then:
6862306a36Sopenharmony_ci      properties:
6962306a36Sopenharmony_ci        clocks:
7062306a36Sopenharmony_ci          items:
7162306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci        clock-names:
7462306a36Sopenharmony_ci          items:
7562306a36Sopenharmony_ci            - const: oscclk
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci  - if:
7862306a36Sopenharmony_ci      properties:
7962306a36Sopenharmony_ci        compatible:
8062306a36Sopenharmony_ci          contains:
8162306a36Sopenharmony_ci            const: samsung,exynos850-cmu-apm
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci    then:
8462306a36Sopenharmony_ci      properties:
8562306a36Sopenharmony_ci        clocks:
8662306a36Sopenharmony_ci          items:
8762306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
8862306a36Sopenharmony_ci            - description: CMU_APM bus clock (from CMU_TOP)
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci        clock-names:
9162306a36Sopenharmony_ci          items:
9262306a36Sopenharmony_ci            - const: oscclk
9362306a36Sopenharmony_ci            - const: dout_clkcmu_apm_bus
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci  - if:
9662306a36Sopenharmony_ci      properties:
9762306a36Sopenharmony_ci        compatible:
9862306a36Sopenharmony_ci          contains:
9962306a36Sopenharmony_ci            const: samsung,exynos850-cmu-aud
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci    then:
10262306a36Sopenharmony_ci      properties:
10362306a36Sopenharmony_ci        clocks:
10462306a36Sopenharmony_ci          items:
10562306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
10662306a36Sopenharmony_ci            - description: AUD clock (from CMU_TOP)
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci        clock-names:
10962306a36Sopenharmony_ci          items:
11062306a36Sopenharmony_ci            - const: oscclk
11162306a36Sopenharmony_ci            - const: dout_aud
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci  - if:
11462306a36Sopenharmony_ci      properties:
11562306a36Sopenharmony_ci        compatible:
11662306a36Sopenharmony_ci          contains:
11762306a36Sopenharmony_ci            const: samsung,exynos850-cmu-cmgp
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci    then:
12062306a36Sopenharmony_ci      properties:
12162306a36Sopenharmony_ci        clocks:
12262306a36Sopenharmony_ci          items:
12362306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
12462306a36Sopenharmony_ci            - description: CMU_CMGP bus clock (from CMU_APM)
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci        clock-names:
12762306a36Sopenharmony_ci          items:
12862306a36Sopenharmony_ci            - const: oscclk
12962306a36Sopenharmony_ci            - const: gout_clkcmu_cmgp_bus
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci  - if:
13262306a36Sopenharmony_ci      properties:
13362306a36Sopenharmony_ci        compatible:
13462306a36Sopenharmony_ci          contains:
13562306a36Sopenharmony_ci            const: samsung,exynos850-cmu-core
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci    then:
13862306a36Sopenharmony_ci      properties:
13962306a36Sopenharmony_ci        clocks:
14062306a36Sopenharmony_ci          items:
14162306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
14262306a36Sopenharmony_ci            - description: CMU_CORE bus clock (from CMU_TOP)
14362306a36Sopenharmony_ci            - description: CCI clock (from CMU_TOP)
14462306a36Sopenharmony_ci            - description: eMMC clock (from CMU_TOP)
14562306a36Sopenharmony_ci            - description: SSS clock (from CMU_TOP)
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci        clock-names:
14862306a36Sopenharmony_ci          items:
14962306a36Sopenharmony_ci            - const: oscclk
15062306a36Sopenharmony_ci            - const: dout_core_bus
15162306a36Sopenharmony_ci            - const: dout_core_cci
15262306a36Sopenharmony_ci            - const: dout_core_mmc_embd
15362306a36Sopenharmony_ci            - const: dout_core_sss
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci  - if:
15662306a36Sopenharmony_ci      properties:
15762306a36Sopenharmony_ci        compatible:
15862306a36Sopenharmony_ci          contains:
15962306a36Sopenharmony_ci            const: samsung,exynos850-cmu-dpu
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci    then:
16262306a36Sopenharmony_ci      properties:
16362306a36Sopenharmony_ci        clocks:
16462306a36Sopenharmony_ci          items:
16562306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
16662306a36Sopenharmony_ci            - description: DPU clock (from CMU_TOP)
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ci        clock-names:
16962306a36Sopenharmony_ci          items:
17062306a36Sopenharmony_ci            - const: oscclk
17162306a36Sopenharmony_ci            - const: dout_dpu
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci  - if:
17462306a36Sopenharmony_ci      properties:
17562306a36Sopenharmony_ci        compatible:
17662306a36Sopenharmony_ci          contains:
17762306a36Sopenharmony_ci            const: samsung,exynos850-cmu-g3d
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci    then:
18062306a36Sopenharmony_ci      properties:
18162306a36Sopenharmony_ci        clocks:
18262306a36Sopenharmony_ci          items:
18362306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
18462306a36Sopenharmony_ci            - description: G3D clock (from CMU_TOP)
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci        clock-names:
18762306a36Sopenharmony_ci          items:
18862306a36Sopenharmony_ci            - const: oscclk
18962306a36Sopenharmony_ci            - const: dout_g3d_switch
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci  - if:
19262306a36Sopenharmony_ci      properties:
19362306a36Sopenharmony_ci        compatible:
19462306a36Sopenharmony_ci          contains:
19562306a36Sopenharmony_ci            const: samsung,exynos850-cmu-hsi
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci    then:
19862306a36Sopenharmony_ci      properties:
19962306a36Sopenharmony_ci        clocks:
20062306a36Sopenharmony_ci          items:
20162306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
20262306a36Sopenharmony_ci            - description: External RTC clock (32768 Hz)
20362306a36Sopenharmony_ci            - description: CMU_HSI bus clock (from CMU_TOP)
20462306a36Sopenharmony_ci            - description: SD card clock (from CMU_TOP)
20562306a36Sopenharmony_ci            - description: USB 2.0 DRD clock (from CMU_TOP)
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci        clock-names:
20862306a36Sopenharmony_ci          items:
20962306a36Sopenharmony_ci            - const: oscclk
21062306a36Sopenharmony_ci            - const: rtcclk
21162306a36Sopenharmony_ci            - const: dout_hsi_bus
21262306a36Sopenharmony_ci            - const: dout_hsi_mmc_card
21362306a36Sopenharmony_ci            - const: dout_hsi_usb20drd
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci  - if:
21662306a36Sopenharmony_ci      properties:
21762306a36Sopenharmony_ci        compatible:
21862306a36Sopenharmony_ci          contains:
21962306a36Sopenharmony_ci            const: samsung,exynos850-cmu-is
22062306a36Sopenharmony_ci
22162306a36Sopenharmony_ci    then:
22262306a36Sopenharmony_ci      properties:
22362306a36Sopenharmony_ci        clocks:
22462306a36Sopenharmony_ci          items:
22562306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
22662306a36Sopenharmony_ci            - description: CMU_IS bus clock (from CMU_TOP)
22762306a36Sopenharmony_ci            - description: Image Texture Processing core clock (from CMU_TOP)
22862306a36Sopenharmony_ci            - description: Visual Recognition Accelerator clock (from CMU_TOP)
22962306a36Sopenharmony_ci            - description: Geometric Distortion Correction clock (from CMU_TOP)
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci        clock-names:
23262306a36Sopenharmony_ci          items:
23362306a36Sopenharmony_ci            - const: oscclk
23462306a36Sopenharmony_ci            - const: dout_is_bus
23562306a36Sopenharmony_ci            - const: dout_is_itp
23662306a36Sopenharmony_ci            - const: dout_is_vra
23762306a36Sopenharmony_ci            - const: dout_is_gdc
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci  - if:
24062306a36Sopenharmony_ci      properties:
24162306a36Sopenharmony_ci        compatible:
24262306a36Sopenharmony_ci          contains:
24362306a36Sopenharmony_ci            const: samsung,exynos850-cmu-mfcmscl
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci    then:
24662306a36Sopenharmony_ci      properties:
24762306a36Sopenharmony_ci        clocks:
24862306a36Sopenharmony_ci          items:
24962306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
25062306a36Sopenharmony_ci            - description: Multi-Format Codec clock (from CMU_TOP)
25162306a36Sopenharmony_ci            - description: Memory to Memory Scaler clock (from CMU_TOP)
25262306a36Sopenharmony_ci            - description: Multi-Channel Scaler clock (from CMU_TOP)
25362306a36Sopenharmony_ci            - description: JPEG codec clock (from CMU_TOP)
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci        clock-names:
25662306a36Sopenharmony_ci          items:
25762306a36Sopenharmony_ci            - const: oscclk
25862306a36Sopenharmony_ci            - const: dout_mfcmscl_mfc
25962306a36Sopenharmony_ci            - const: dout_mfcmscl_m2m
26062306a36Sopenharmony_ci            - const: dout_mfcmscl_mcsc
26162306a36Sopenharmony_ci            - const: dout_mfcmscl_jpeg
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci  - if:
26462306a36Sopenharmony_ci      properties:
26562306a36Sopenharmony_ci        compatible:
26662306a36Sopenharmony_ci          contains:
26762306a36Sopenharmony_ci            const: samsung,exynos850-cmu-peri
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci    then:
27062306a36Sopenharmony_ci      properties:
27162306a36Sopenharmony_ci        clocks:
27262306a36Sopenharmony_ci          items:
27362306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
27462306a36Sopenharmony_ci            - description: CMU_PERI bus clock (from CMU_TOP)
27562306a36Sopenharmony_ci            - description: UART clock (from CMU_TOP)
27662306a36Sopenharmony_ci            - description: Parent clock for HSI2C and SPI (from CMU_TOP)
27762306a36Sopenharmony_ci
27862306a36Sopenharmony_ci        clock-names:
27962306a36Sopenharmony_ci          items:
28062306a36Sopenharmony_ci            - const: oscclk
28162306a36Sopenharmony_ci            - const: dout_peri_bus
28262306a36Sopenharmony_ci            - const: dout_peri_uart
28362306a36Sopenharmony_ci            - const: dout_peri_ip
28462306a36Sopenharmony_ci
28562306a36Sopenharmony_cirequired:
28662306a36Sopenharmony_ci  - compatible
28762306a36Sopenharmony_ci  - "#clock-cells"
28862306a36Sopenharmony_ci  - clocks
28962306a36Sopenharmony_ci  - clock-names
29062306a36Sopenharmony_ci  - reg
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ciadditionalProperties: false
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ciexamples:
29562306a36Sopenharmony_ci  # Clock controller node for CMU_PERI
29662306a36Sopenharmony_ci  - |
29762306a36Sopenharmony_ci    #include <dt-bindings/clock/exynos850.h>
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci    cmu_peri: clock-controller@10030000 {
30062306a36Sopenharmony_ci        compatible = "samsung,exynos850-cmu-peri";
30162306a36Sopenharmony_ci        reg = <0x10030000 0x8000>;
30262306a36Sopenharmony_ci        #clock-cells = <1>;
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ci        clocks = <&oscclk>, <&cmu_top CLK_DOUT_PERI_BUS>,
30562306a36Sopenharmony_ci                 <&cmu_top CLK_DOUT_PERI_UART>,
30662306a36Sopenharmony_ci                 <&cmu_top CLK_DOUT_PERI_IP>;
30762306a36Sopenharmony_ci        clock-names = "oscclk", "dout_peri_bus",
30862306a36Sopenharmony_ci                      "dout_peri_uart", "dout_peri_ip";
30962306a36Sopenharmony_ci    };
31062306a36Sopenharmony_ci
31162306a36Sopenharmony_ci...
312