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/renesas,cpg-clocks.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Renesas Clock Pulse Generator (CPG)
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Geert Uytterhoeven <geert+renesas@glider.be>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  The Clock Pulse Generator (CPG) generates core clocks for the SoC.  It
1462306a36Sopenharmony_ci  includes PLLs, and fixed and variable ratio dividers.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci  The CPG may also provide a Clock Domain for SoC devices, in combination with
1762306a36Sopenharmony_ci  the CPG Module Stop (MSTP) Clocks.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciproperties:
2062306a36Sopenharmony_ci  compatible:
2162306a36Sopenharmony_ci    oneOf:
2262306a36Sopenharmony_ci      - const: renesas,r8a73a4-cpg-clocks     # R-Mobile APE6
2362306a36Sopenharmony_ci      - const: renesas,r8a7740-cpg-clocks     # R-Mobile A1
2462306a36Sopenharmony_ci      - const: renesas,r8a7778-cpg-clocks     # R-Car M1
2562306a36Sopenharmony_ci      - const: renesas,r8a7779-cpg-clocks     # R-Car H1
2662306a36Sopenharmony_ci      - items:
2762306a36Sopenharmony_ci          - enum:
2862306a36Sopenharmony_ci              - renesas,r7s72100-cpg-clocks   # RZ/A1H
2962306a36Sopenharmony_ci          - const: renesas,rz-cpg-clocks      # RZ/A1
3062306a36Sopenharmony_ci      - const: renesas,sh73a0-cpg-clocks      # SH-Mobile AG5
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  reg:
3362306a36Sopenharmony_ci    maxItems: 1
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  clocks: true
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  '#clock-cells':
3862306a36Sopenharmony_ci    const: 1
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci  clock-output-names: true
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  renesas,mode:
4362306a36Sopenharmony_ci    description: Board-specific settings of the MD_CK* bits on R-Mobile A1
4462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
4562306a36Sopenharmony_ci    minimum: 0
4662306a36Sopenharmony_ci    maximum: 7
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  '#power-domain-cells':
4962306a36Sopenharmony_ci    const: 0
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_cirequired:
5262306a36Sopenharmony_ci  - compatible
5362306a36Sopenharmony_ci  - reg
5462306a36Sopenharmony_ci  - clocks
5562306a36Sopenharmony_ci  - '#clock-cells'
5662306a36Sopenharmony_ci  - clock-output-names
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciallOf:
5962306a36Sopenharmony_ci  - if:
6062306a36Sopenharmony_ci      properties:
6162306a36Sopenharmony_ci        compatible:
6262306a36Sopenharmony_ci          contains:
6362306a36Sopenharmony_ci            const: renesas,r8a73a4-cpg-clocks
6462306a36Sopenharmony_ci    then:
6562306a36Sopenharmony_ci      properties:
6662306a36Sopenharmony_ci        clocks:
6762306a36Sopenharmony_ci          items:
6862306a36Sopenharmony_ci            - description: extal1
6962306a36Sopenharmony_ci            - description: extal2
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci        clock-output-names:
7262306a36Sopenharmony_ci          items:
7362306a36Sopenharmony_ci            - const: main
7462306a36Sopenharmony_ci            - const: pll0
7562306a36Sopenharmony_ci            - const: pll1
7662306a36Sopenharmony_ci            - const: pll2
7762306a36Sopenharmony_ci            - const: pll2s
7862306a36Sopenharmony_ci            - const: pll2h
7962306a36Sopenharmony_ci            - const: z
8062306a36Sopenharmony_ci            - const: z2
8162306a36Sopenharmony_ci            - const: i
8262306a36Sopenharmony_ci            - const: m3
8362306a36Sopenharmony_ci            - const: b
8462306a36Sopenharmony_ci            - const: m1
8562306a36Sopenharmony_ci            - const: m2
8662306a36Sopenharmony_ci            - const: zx
8762306a36Sopenharmony_ci            - const: zs
8862306a36Sopenharmony_ci            - const: hp
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci  - if:
9162306a36Sopenharmony_ci      properties:
9262306a36Sopenharmony_ci        compatible:
9362306a36Sopenharmony_ci          contains:
9462306a36Sopenharmony_ci            const: renesas,r8a7740-cpg-clocks
9562306a36Sopenharmony_ci    then:
9662306a36Sopenharmony_ci      properties:
9762306a36Sopenharmony_ci        clocks:
9862306a36Sopenharmony_ci          items:
9962306a36Sopenharmony_ci            - description: extal1
10062306a36Sopenharmony_ci            - description: extal2
10162306a36Sopenharmony_ci            - description: extalr
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci        clock-output-names:
10462306a36Sopenharmony_ci          items:
10562306a36Sopenharmony_ci            - const: system
10662306a36Sopenharmony_ci            - const: pllc0
10762306a36Sopenharmony_ci            - const: pllc1
10862306a36Sopenharmony_ci            - const: pllc2
10962306a36Sopenharmony_ci            - const: r
11062306a36Sopenharmony_ci            - const: usb24s
11162306a36Sopenharmony_ci            - const: i
11262306a36Sopenharmony_ci            - const: zg
11362306a36Sopenharmony_ci            - const: b
11462306a36Sopenharmony_ci            - const: m1
11562306a36Sopenharmony_ci            - const: hp
11662306a36Sopenharmony_ci            - const: hpp
11762306a36Sopenharmony_ci            - const: usbp
11862306a36Sopenharmony_ci            - const: s
11962306a36Sopenharmony_ci            - const: zb
12062306a36Sopenharmony_ci            - const: m3
12162306a36Sopenharmony_ci            - const: cp
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci      required:
12462306a36Sopenharmony_ci        - renesas,mode
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci  - if:
12762306a36Sopenharmony_ci      properties:
12862306a36Sopenharmony_ci        compatible:
12962306a36Sopenharmony_ci          contains:
13062306a36Sopenharmony_ci            const: renesas,r8a7778-cpg-clocks
13162306a36Sopenharmony_ci    then:
13262306a36Sopenharmony_ci      properties:
13362306a36Sopenharmony_ci        clocks:
13462306a36Sopenharmony_ci          maxItems: 1
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci        clock-output-names:
13762306a36Sopenharmony_ci          items:
13862306a36Sopenharmony_ci            - const: plla
13962306a36Sopenharmony_ci            - const: pllb
14062306a36Sopenharmony_ci            - const: b
14162306a36Sopenharmony_ci            - const: out
14262306a36Sopenharmony_ci            - const: p
14362306a36Sopenharmony_ci            - const: s
14462306a36Sopenharmony_ci            - const: s1
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci  - if:
14762306a36Sopenharmony_ci      properties:
14862306a36Sopenharmony_ci        compatible:
14962306a36Sopenharmony_ci          contains:
15062306a36Sopenharmony_ci            const: renesas,r8a7779-cpg-clocks
15162306a36Sopenharmony_ci    then:
15262306a36Sopenharmony_ci      properties:
15362306a36Sopenharmony_ci        clocks:
15462306a36Sopenharmony_ci          maxItems: 1
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci        clock-output-names:
15762306a36Sopenharmony_ci          items:
15862306a36Sopenharmony_ci            - const: plla
15962306a36Sopenharmony_ci            - const: z
16062306a36Sopenharmony_ci            - const: zs
16162306a36Sopenharmony_ci            - const: s
16262306a36Sopenharmony_ci            - const: s1
16362306a36Sopenharmony_ci            - const: p
16462306a36Sopenharmony_ci            - const: b
16562306a36Sopenharmony_ci            - const: out
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci  - if:
16862306a36Sopenharmony_ci      properties:
16962306a36Sopenharmony_ci        compatible:
17062306a36Sopenharmony_ci          contains:
17162306a36Sopenharmony_ci            const: renesas,r7s72100-cpg-clocks
17262306a36Sopenharmony_ci    then:
17362306a36Sopenharmony_ci      properties:
17462306a36Sopenharmony_ci        clocks:
17562306a36Sopenharmony_ci          items:
17662306a36Sopenharmony_ci            - description: extal1
17762306a36Sopenharmony_ci            - description: usb_x1
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci        clock-output-names:
18062306a36Sopenharmony_ci          items:
18162306a36Sopenharmony_ci            - const: pll
18262306a36Sopenharmony_ci            - const: i
18362306a36Sopenharmony_ci            - const: g
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci  - if:
18662306a36Sopenharmony_ci      properties:
18762306a36Sopenharmony_ci        compatible:
18862306a36Sopenharmony_ci          contains:
18962306a36Sopenharmony_ci            const: renesas,sh73a0-cpg-clocks
19062306a36Sopenharmony_ci    then:
19162306a36Sopenharmony_ci      properties:
19262306a36Sopenharmony_ci        clocks:
19362306a36Sopenharmony_ci          items:
19462306a36Sopenharmony_ci            - description: extal1
19562306a36Sopenharmony_ci            - description: extal2
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci        clock-output-names:
19862306a36Sopenharmony_ci          items:
19962306a36Sopenharmony_ci            - const: main
20062306a36Sopenharmony_ci            - const: pll0
20162306a36Sopenharmony_ci            - const: pll1
20262306a36Sopenharmony_ci            - const: pll2
20362306a36Sopenharmony_ci            - const: pll3
20462306a36Sopenharmony_ci            - const: dsi0phy
20562306a36Sopenharmony_ci            - const: dsi1phy
20662306a36Sopenharmony_ci            - const: zg
20762306a36Sopenharmony_ci            - const: m3
20862306a36Sopenharmony_ci            - const: b
20962306a36Sopenharmony_ci            - const: m1
21062306a36Sopenharmony_ci            - const: m2
21162306a36Sopenharmony_ci            - const: z
21262306a36Sopenharmony_ci            - const: zx
21362306a36Sopenharmony_ci            - const: hp
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci  - if:
21662306a36Sopenharmony_ci      properties:
21762306a36Sopenharmony_ci        compatible:
21862306a36Sopenharmony_ci          contains:
21962306a36Sopenharmony_ci            enum:
22062306a36Sopenharmony_ci              - renesas,r8a7778-cpg-clocks
22162306a36Sopenharmony_ci              - renesas,r8a7779-cpg-clocks
22262306a36Sopenharmony_ci              - renesas,rz-cpg-clocks
22362306a36Sopenharmony_ci    then:
22462306a36Sopenharmony_ci      required:
22562306a36Sopenharmony_ci        - '#power-domain-cells'
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ciadditionalProperties: false
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ciexamples:
23062306a36Sopenharmony_ci  - |
23162306a36Sopenharmony_ci    #include <dt-bindings/clock/r8a7740-clock.h>
23262306a36Sopenharmony_ci    cpg_clocks: cpg_clocks@e6150000 {
23362306a36Sopenharmony_ci            compatible = "renesas,r8a7740-cpg-clocks";
23462306a36Sopenharmony_ci            reg = <0xe6150000 0x10000>;
23562306a36Sopenharmony_ci            clocks = <&extal1_clk>, <&extal2_clk>, <&extalr_clk>;
23662306a36Sopenharmony_ci            #clock-cells = <1>;
23762306a36Sopenharmony_ci            clock-output-names = "system", "pllc0", "pllc1", "pllc2", "r",
23862306a36Sopenharmony_ci                                 "usb24s", "i", "zg", "b", "m1", "hp", "hpp",
23962306a36Sopenharmony_ci                                 "usbp", "s", "zb", "m3", "cp";
24062306a36Sopenharmony_ci            renesas,mode = <0x05>;
24162306a36Sopenharmony_ci    };
242