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,exynosautov9-clock.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Samsung Exynos Auto v9 SoC clock controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Chanho Park <chanho61.park@samsung.com>
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  Exynos Auto v9 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/XTCXO (26 MHz) and RTCCLK/XrtcXTI (32768 Hz).
2162306a36Sopenharmony_ci  The external OSCCLK must be defined as fixed-rate clock 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 clocks of function blocks (other CMUs) are usually
2562306a36Sopenharmony_ci  derived from CMU_TOP.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  Each clock is assigned an identifier and client nodes can use this identifier
2862306a36Sopenharmony_ci  to specify the clock which they consume. All clocks available for usage
2962306a36Sopenharmony_ci  in clock consumer nodes are defined as preprocessor macros in
3062306a36Sopenharmony_ci  'include/dt-bindings/clock/samsung,exynosautov9.h' header.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciproperties:
3362306a36Sopenharmony_ci  compatible:
3462306a36Sopenharmony_ci    enum:
3562306a36Sopenharmony_ci      - samsung,exynosautov9-cmu-top
3662306a36Sopenharmony_ci      - samsung,exynosautov9-cmu-busmc
3762306a36Sopenharmony_ci      - samsung,exynosautov9-cmu-core
3862306a36Sopenharmony_ci      - samsung,exynosautov9-cmu-fsys0
3962306a36Sopenharmony_ci      - samsung,exynosautov9-cmu-fsys1
4062306a36Sopenharmony_ci      - samsung,exynosautov9-cmu-fsys2
4162306a36Sopenharmony_ci      - samsung,exynosautov9-cmu-peric0
4262306a36Sopenharmony_ci      - samsung,exynosautov9-cmu-peric1
4362306a36Sopenharmony_ci      - samsung,exynosautov9-cmu-peris
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  clocks:
4662306a36Sopenharmony_ci    minItems: 1
4762306a36Sopenharmony_ci    maxItems: 5
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  clock-names:
5062306a36Sopenharmony_ci    minItems: 1
5162306a36Sopenharmony_ci    maxItems: 5
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci  "#clock-cells":
5462306a36Sopenharmony_ci    const: 1
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  reg:
5762306a36Sopenharmony_ci    maxItems: 1
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciallOf:
6062306a36Sopenharmony_ci  - if:
6162306a36Sopenharmony_ci      properties:
6262306a36Sopenharmony_ci        compatible:
6362306a36Sopenharmony_ci          contains:
6462306a36Sopenharmony_ci            const: samsung,exynosautov9-cmu-top
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci    then:
6762306a36Sopenharmony_ci      properties:
6862306a36Sopenharmony_ci        clocks:
6962306a36Sopenharmony_ci          items:
7062306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci        clock-names:
7362306a36Sopenharmony_ci          items:
7462306a36Sopenharmony_ci            - const: oscclk
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci  - if:
7762306a36Sopenharmony_ci      properties:
7862306a36Sopenharmony_ci        compatible:
7962306a36Sopenharmony_ci          contains:
8062306a36Sopenharmony_ci            const: samsung,exynosautov9-cmu-busmc
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci    then:
8362306a36Sopenharmony_ci      properties:
8462306a36Sopenharmony_ci        clocks:
8562306a36Sopenharmony_ci          items:
8662306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
8762306a36Sopenharmony_ci            - description: CMU_BUSMC bus clock (from CMU_TOP)
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci        clock-names:
9062306a36Sopenharmony_ci          items:
9162306a36Sopenharmony_ci            - const: oscclk
9262306a36Sopenharmony_ci            - const: dout_clkcmu_busmc_bus
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci  - if:
9562306a36Sopenharmony_ci      properties:
9662306a36Sopenharmony_ci        compatible:
9762306a36Sopenharmony_ci          contains:
9862306a36Sopenharmony_ci            const: samsung,exynosautov9-cmu-core
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci    then:
10162306a36Sopenharmony_ci      properties:
10262306a36Sopenharmony_ci        clocks:
10362306a36Sopenharmony_ci          items:
10462306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
10562306a36Sopenharmony_ci            - description: CMU_CORE bus clock (from CMU_TOP)
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci        clock-names:
10862306a36Sopenharmony_ci          items:
10962306a36Sopenharmony_ci            - const: oscclk
11062306a36Sopenharmony_ci            - const: dout_clkcmu_core_bus
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci  - if:
11362306a36Sopenharmony_ci      properties:
11462306a36Sopenharmony_ci        compatible:
11562306a36Sopenharmony_ci          contains:
11662306a36Sopenharmony_ci            const: samsung,exynosautov9-cmu-fsys0
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci    then:
11962306a36Sopenharmony_ci      properties:
12062306a36Sopenharmony_ci        clocks:
12162306a36Sopenharmony_ci          items:
12262306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
12362306a36Sopenharmony_ci            - description: CMU_FSYS0 bus clock (from CMU_TOP)
12462306a36Sopenharmony_ci            - description: CMU_FSYS0 pcie clock (from CMU_TOP)
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci        clock-names:
12762306a36Sopenharmony_ci          items:
12862306a36Sopenharmony_ci            - const: oscclk
12962306a36Sopenharmony_ci            - const: dout_clkcmu_fsys0_bus
13062306a36Sopenharmony_ci            - const: dout_clkcmu_fsys0_pcie
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci  - if:
13362306a36Sopenharmony_ci      properties:
13462306a36Sopenharmony_ci        compatible:
13562306a36Sopenharmony_ci          contains:
13662306a36Sopenharmony_ci            const: samsung,exynosautov9-cmu-fsys1
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci    then:
13962306a36Sopenharmony_ci      properties:
14062306a36Sopenharmony_ci        clocks:
14162306a36Sopenharmony_ci          items:
14262306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
14362306a36Sopenharmony_ci            - description: CMU_FSYS1 bus clock (from CMU_TOP)
14462306a36Sopenharmony_ci            - description: CMU_FSYS1 mmc card clock (from CMU_TOP)
14562306a36Sopenharmony_ci            - description: CMU_FSYS1 usb clock (from CMU_TOP)
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci        clock-names:
14862306a36Sopenharmony_ci          items:
14962306a36Sopenharmony_ci            - const: oscclk
15062306a36Sopenharmony_ci            - const: dout_clkcmu_fsys1_bus
15162306a36Sopenharmony_ci            - const: gout_clkcmu_fsys1_mmc_card
15262306a36Sopenharmony_ci            - const: dout_clkcmu_fsys1_usbdrd
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci  - if:
15562306a36Sopenharmony_ci      properties:
15662306a36Sopenharmony_ci        compatible:
15762306a36Sopenharmony_ci          contains:
15862306a36Sopenharmony_ci            const: samsung,exynosautov9-cmu-fsys2
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci    then:
16162306a36Sopenharmony_ci      properties:
16262306a36Sopenharmony_ci        clocks:
16362306a36Sopenharmony_ci          items:
16462306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
16562306a36Sopenharmony_ci            - description: CMU_FSYS2 bus clock (from CMU_TOP)
16662306a36Sopenharmony_ci            - description: UFS clock (from CMU_TOP)
16762306a36Sopenharmony_ci            - description: Ethernet clock (from CMU_TOP)
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci        clock-names:
17062306a36Sopenharmony_ci          items:
17162306a36Sopenharmony_ci            - const: oscclk
17262306a36Sopenharmony_ci            - const: dout_clkcmu_fsys2_bus
17362306a36Sopenharmony_ci            - const: dout_fsys2_clkcmu_ufs_embd
17462306a36Sopenharmony_ci            - const: dout_fsys2_clkcmu_ethernet
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci  - if:
17762306a36Sopenharmony_ci      properties:
17862306a36Sopenharmony_ci        compatible:
17962306a36Sopenharmony_ci          contains:
18062306a36Sopenharmony_ci            const: samsung,exynosautov9-cmu-peric0
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci    then:
18362306a36Sopenharmony_ci      properties:
18462306a36Sopenharmony_ci        clocks:
18562306a36Sopenharmony_ci          items:
18662306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
18762306a36Sopenharmony_ci            - description: CMU_PERIC0 bus clock (from CMU_TOP)
18862306a36Sopenharmony_ci            - description: PERIC0 IP clock (from CMU_TOP)
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci        clock-names:
19162306a36Sopenharmony_ci          items:
19262306a36Sopenharmony_ci            - const: oscclk
19362306a36Sopenharmony_ci            - const: dout_clkcmu_peric0_bus
19462306a36Sopenharmony_ci            - const: dout_clkcmu_peric0_ip
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci  - if:
19762306a36Sopenharmony_ci      properties:
19862306a36Sopenharmony_ci        compatible:
19962306a36Sopenharmony_ci          contains:
20062306a36Sopenharmony_ci            const: samsung,exynosautov9-cmu-peric1
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci    then:
20362306a36Sopenharmony_ci      properties:
20462306a36Sopenharmony_ci        clocks:
20562306a36Sopenharmony_ci          items:
20662306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
20762306a36Sopenharmony_ci            - description: CMU_PERIC1 bus clock (from CMU_TOP)
20862306a36Sopenharmony_ci            - description: PERIC1 IP clock (from CMU_TOP)
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci        clock-names:
21162306a36Sopenharmony_ci          items:
21262306a36Sopenharmony_ci            - const: oscclk
21362306a36Sopenharmony_ci            - const: dout_clkcmu_peric1_bus
21462306a36Sopenharmony_ci            - const: dout_clkcmu_peric1_ip
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ci  - if:
21762306a36Sopenharmony_ci      properties:
21862306a36Sopenharmony_ci        compatible:
21962306a36Sopenharmony_ci          contains:
22062306a36Sopenharmony_ci            const: samsung,exynosautov9-cmu-peris
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ci    then:
22362306a36Sopenharmony_ci      properties:
22462306a36Sopenharmony_ci        clocks:
22562306a36Sopenharmony_ci          items:
22662306a36Sopenharmony_ci            - description: External reference clock (26 MHz)
22762306a36Sopenharmony_ci            - description: CMU_PERIS bus clock (from CMU_TOP)
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci        clock-names:
23062306a36Sopenharmony_ci          items:
23162306a36Sopenharmony_ci            - const: oscclk
23262306a36Sopenharmony_ci            - const: dout_clkcmu_peris_bus
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_cirequired:
23562306a36Sopenharmony_ci  - compatible
23662306a36Sopenharmony_ci  - "#clock-cells"
23762306a36Sopenharmony_ci  - clocks
23862306a36Sopenharmony_ci  - clock-names
23962306a36Sopenharmony_ci  - reg
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ciadditionalProperties: false
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ciexamples:
24462306a36Sopenharmony_ci  # Clock controller node for CMU_FSYS2
24562306a36Sopenharmony_ci  - |
24662306a36Sopenharmony_ci    #include <dt-bindings/clock/samsung,exynosautov9.h>
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci    cmu_fsys2: clock-controller@17c00000 {
24962306a36Sopenharmony_ci        compatible = "samsung,exynosautov9-cmu-fsys2";
25062306a36Sopenharmony_ci        reg = <0x17c00000 0x8000>;
25162306a36Sopenharmony_ci        #clock-cells = <1>;
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci        clocks = <&xtcxo>,
25462306a36Sopenharmony_ci                 <&cmu_top DOUT_CLKCMU_FSYS2_BUS>,
25562306a36Sopenharmony_ci                 <&cmu_top DOUT_CLKCMU_FSYS2_UFS_EMBD>,
25662306a36Sopenharmony_ci                 <&cmu_top DOUT_CLKCMU_FSYS2_ETHERNET>;
25762306a36Sopenharmony_ci        clock-names = "oscclk",
25862306a36Sopenharmony_ci                      "dout_clkcmu_fsys2_bus",
25962306a36Sopenharmony_ci                      "dout_fsys2_clkcmu_ufs_embd",
26062306a36Sopenharmony_ci                      "dout_fsys2_clkcmu_ethernet";
26162306a36Sopenharmony_ci    };
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci...
264