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,emev2-smu.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Renesas EMMA Mobile EV2 System Management Unit
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Geert Uytterhoeven <geert+renesas@glider.be>
1162306a36Sopenharmony_ci  - Magnus Damm <magnus.damm@gmail.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription: |
1462306a36Sopenharmony_ci  The System Management Unit is described in user's manual R19UH0037EJ1000_SMU.
1562306a36Sopenharmony_ci  This is not a clock provider, but clocks under SMU depend on it.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciproperties:
1862306a36Sopenharmony_ci  compatible:
1962306a36Sopenharmony_ci    const: renesas,emev2-smu
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci  reg:
2262306a36Sopenharmony_ci    maxItems: 1
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  '#address-cells':
2562306a36Sopenharmony_ci    const: 2
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  '#size-cells':
2862306a36Sopenharmony_ci    const: 0
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_cirequired:
3162306a36Sopenharmony_ci  - compatible
3262306a36Sopenharmony_ci  - reg
3362306a36Sopenharmony_ci  - '#address-cells'
3462306a36Sopenharmony_ci  - '#size-cells'
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cipatternProperties:
3762306a36Sopenharmony_ci  ".*sclkdiv@.*":
3862306a36Sopenharmony_ci    type: object
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci    description: |
4162306a36Sopenharmony_ci      Function block with an input mux and a divider, which corresponds to
4262306a36Sopenharmony_ci      "Serial clock generator" in fig. "Clock System Overview" of the manual,
4362306a36Sopenharmony_ci      and "xxx frequency division setting register" (XXXCLKDIV) registers.
4462306a36Sopenharmony_ci      This makes internal (neither input nor output) clock that is provided
4562306a36Sopenharmony_ci      to input of xxxGCLK block.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci    properties:
4862306a36Sopenharmony_ci      compatible:
4962306a36Sopenharmony_ci        const: renesas,emev2-smu-clkdiv
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci      reg:
5262306a36Sopenharmony_ci        maxItems: 1
5362306a36Sopenharmony_ci        description:
5462306a36Sopenharmony_ci          Byte offset from SMU base and Bit position in the register.
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci      clocks:
5762306a36Sopenharmony_ci        minItems: 1
5862306a36Sopenharmony_ci        maxItems: 4
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci      '#clock-cells':
6162306a36Sopenharmony_ci        const: 0
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci    required:
6462306a36Sopenharmony_ci      - compatible
6562306a36Sopenharmony_ci      - reg
6662306a36Sopenharmony_ci      - clocks
6762306a36Sopenharmony_ci      - '#clock-cells'
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci    additionalProperties: false
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  ".*sclk@.*":
7262306a36Sopenharmony_ci    type: object
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci    description: |
7562306a36Sopenharmony_ci      Clock gating node shown as "Clock stop processing block" in the
7662306a36Sopenharmony_ci      fig. "Clock System Overview" of the manual.
7762306a36Sopenharmony_ci      Registers are "xxx clock gate control register" (XXXGCLKCTRL).
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci    properties:
8062306a36Sopenharmony_ci      compatible:
8162306a36Sopenharmony_ci        const: renesas,emev2-smu-gclk
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci      reg:
8462306a36Sopenharmony_ci        maxItems: 1
8562306a36Sopenharmony_ci        description:
8662306a36Sopenharmony_ci          Byte offset from SMU base and Bit position in the register.
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci      clocks:
8962306a36Sopenharmony_ci        maxItems: 1
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci      '#clock-cells':
9262306a36Sopenharmony_ci        const: 0
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci    required:
9562306a36Sopenharmony_ci      - compatible
9662306a36Sopenharmony_ci      - reg
9762306a36Sopenharmony_ci      - clocks
9862306a36Sopenharmony_ci      - '#clock-cells'
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci    additionalProperties: false
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciadditionalProperties: true
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ciexamples:
10562306a36Sopenharmony_ci  - |
10662306a36Sopenharmony_ci    // Example of clock-tree description:
10762306a36Sopenharmony_ci    //
10862306a36Sopenharmony_ci    //  This describes a clock path in the clock tree
10962306a36Sopenharmony_ci    //   c32ki -> pll3_fo -> usia_u0_sclkdiv -> usia_u0_sclk
11062306a36Sopenharmony_ci    clocks@e0110000 {
11162306a36Sopenharmony_ci            compatible = "renesas,emev2-smu";
11262306a36Sopenharmony_ci            reg = <0xe0110000 0x10000>;
11362306a36Sopenharmony_ci            #address-cells = <2>;
11462306a36Sopenharmony_ci            #size-cells = <0>;
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci            c32ki: c32ki {
11762306a36Sopenharmony_ci                    compatible = "fixed-clock";
11862306a36Sopenharmony_ci                    clock-frequency = <32768>;
11962306a36Sopenharmony_ci                    #clock-cells = <0>;
12062306a36Sopenharmony_ci            };
12162306a36Sopenharmony_ci            pll3_fo: pll3_fo {
12262306a36Sopenharmony_ci                    compatible = "fixed-factor-clock";
12362306a36Sopenharmony_ci                    clocks = <&c32ki>;
12462306a36Sopenharmony_ci                    clock-div = <1>;
12562306a36Sopenharmony_ci                    clock-mult = <7000>;
12662306a36Sopenharmony_ci                    #clock-cells = <0>;
12762306a36Sopenharmony_ci            };
12862306a36Sopenharmony_ci            usia_u0_sclkdiv: usia_u0_sclkdiv@610,0 {
12962306a36Sopenharmony_ci                    compatible = "renesas,emev2-smu-clkdiv";
13062306a36Sopenharmony_ci                    reg = <0x610 0>;
13162306a36Sopenharmony_ci                    clocks = <&pll3_fo>;
13262306a36Sopenharmony_ci                    #clock-cells = <0>;
13362306a36Sopenharmony_ci            };
13462306a36Sopenharmony_ci            usia_u0_sclk: usia_u0_sclk@4a0,1 {
13562306a36Sopenharmony_ci                    compatible = "renesas,emev2-smu-gclk";
13662306a36Sopenharmony_ci                    reg = <0x4a0 1>;
13762306a36Sopenharmony_ci                    clocks = <&usia_u0_sclkdiv>;
13862306a36Sopenharmony_ci                    #clock-cells = <0>;
13962306a36Sopenharmony_ci            };
14062306a36Sopenharmony_ci    };
141