18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: "http://devicetree.org/schemas/clock/renesas,cpg-mssr.yaml#"
58c2ecf20Sopenharmony_ci$schema: "http://devicetree.org/meta-schemas/core.yaml#"
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Renesas Clock Pulse Generator / Module Standby and Software Reset
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Geert Uytterhoeven <geert+renesas@glider.be>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidescription: |
138c2ecf20Sopenharmony_ci  On Renesas ARM SoCs (SH/R-Mobile, R-Car, RZ), the CPG (Clock Pulse Generator)
148c2ecf20Sopenharmony_ci  and MSSR (Module Standby and Software Reset) blocks are intimately connected,
158c2ecf20Sopenharmony_ci  and share the same register block.
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci  They provide the following functionalities:
188c2ecf20Sopenharmony_ci    - The CPG block generates various core clocks,
198c2ecf20Sopenharmony_ci    - The MSSR block provides two functions:
208c2ecf20Sopenharmony_ci        1. Module Standby, providing a Clock Domain to control the clock supply
218c2ecf20Sopenharmony_ci           to individual SoC devices,
228c2ecf20Sopenharmony_ci        2. Reset Control, to perform a software reset of individual SoC devices.
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ciproperties:
258c2ecf20Sopenharmony_ci  compatible:
268c2ecf20Sopenharmony_ci    enum:
278c2ecf20Sopenharmony_ci      - renesas,r7s9210-cpg-mssr  # RZ/A2
288c2ecf20Sopenharmony_ci      - renesas,r8a7742-cpg-mssr  # RZ/G1H
298c2ecf20Sopenharmony_ci      - renesas,r8a7743-cpg-mssr  # RZ/G1M
308c2ecf20Sopenharmony_ci      - renesas,r8a7744-cpg-mssr  # RZ/G1N
318c2ecf20Sopenharmony_ci      - renesas,r8a7745-cpg-mssr  # RZ/G1E
328c2ecf20Sopenharmony_ci      - renesas,r8a77470-cpg-mssr # RZ/G1C
338c2ecf20Sopenharmony_ci      - renesas,r8a774a1-cpg-mssr # RZ/G2M
348c2ecf20Sopenharmony_ci      - renesas,r8a774b1-cpg-mssr # RZ/G2N
358c2ecf20Sopenharmony_ci      - renesas,r8a774c0-cpg-mssr # RZ/G2E
368c2ecf20Sopenharmony_ci      - renesas,r8a774e1-cpg-mssr # RZ/G2H
378c2ecf20Sopenharmony_ci      - renesas,r8a7790-cpg-mssr  # R-Car H2
388c2ecf20Sopenharmony_ci      - renesas,r8a7791-cpg-mssr  # R-Car M2-W
398c2ecf20Sopenharmony_ci      - renesas,r8a7792-cpg-mssr  # R-Car V2H
408c2ecf20Sopenharmony_ci      - renesas,r8a7793-cpg-mssr  # R-Car M2-N
418c2ecf20Sopenharmony_ci      - renesas,r8a7794-cpg-mssr  # R-Car E2
428c2ecf20Sopenharmony_ci      - renesas,r8a7795-cpg-mssr  # R-Car H3
438c2ecf20Sopenharmony_ci      - renesas,r8a7796-cpg-mssr  # R-Car M3-W
448c2ecf20Sopenharmony_ci      - renesas,r8a77961-cpg-mssr # R-Car M3-W+
458c2ecf20Sopenharmony_ci      - renesas,r8a77965-cpg-mssr # R-Car M3-N
468c2ecf20Sopenharmony_ci      - renesas,r8a77970-cpg-mssr # R-Car V3M
478c2ecf20Sopenharmony_ci      - renesas,r8a77980-cpg-mssr # R-Car V3H
488c2ecf20Sopenharmony_ci      - renesas,r8a77990-cpg-mssr # R-Car E3
498c2ecf20Sopenharmony_ci      - renesas,r8a77995-cpg-mssr # R-Car D3
508c2ecf20Sopenharmony_ci      - renesas,r8a779a0-cpg-mssr # R-Car V3U
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci  reg:
538c2ecf20Sopenharmony_ci    maxItems: 1
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci  clocks:
568c2ecf20Sopenharmony_ci    minItems: 1
578c2ecf20Sopenharmony_ci    maxItems: 2
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci  clock-names:
608c2ecf20Sopenharmony_ci    minItems: 1
618c2ecf20Sopenharmony_ci    maxItems: 2
628c2ecf20Sopenharmony_ci    items:
638c2ecf20Sopenharmony_ci      enum:
648c2ecf20Sopenharmony_ci        - extal     # All
658c2ecf20Sopenharmony_ci        - extalr    # Most R-Car Gen3 and RZ/G2
668c2ecf20Sopenharmony_ci        - usb_extal # Most R-Car Gen2 and RZ/G1
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci  '#clock-cells':
698c2ecf20Sopenharmony_ci    description: |
708c2ecf20Sopenharmony_ci      - For CPG core clocks, the two clock specifier cells must be "CPG_CORE"
718c2ecf20Sopenharmony_ci        and a core clock reference, as defined in
728c2ecf20Sopenharmony_ci        <dt-bindings/clock/*-cpg-mssr.h>
738c2ecf20Sopenharmony_ci      - For module clocks, the two clock specifier cells must be "CPG_MOD" and
748c2ecf20Sopenharmony_ci        a module number, as defined in the datasheet.
758c2ecf20Sopenharmony_ci    const: 2
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci  '#power-domain-cells':
788c2ecf20Sopenharmony_ci    description:
798c2ecf20Sopenharmony_ci      SoC devices that are part of the CPG/MSSR Clock Domain and can be
808c2ecf20Sopenharmony_ci      power-managed through Module Standby should refer to the CPG device node
818c2ecf20Sopenharmony_ci      in their "power-domains" property, as documented by the generic PM Domain
828c2ecf20Sopenharmony_ci      bindings in Documentation/devicetree/bindings/power/power-domain.yaml.
838c2ecf20Sopenharmony_ci    const: 0
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci  '#reset-cells':
868c2ecf20Sopenharmony_ci    description:
878c2ecf20Sopenharmony_ci      The single reset specifier cell must be the module number, as defined in
888c2ecf20Sopenharmony_ci      the datasheet.
898c2ecf20Sopenharmony_ci    const: 1
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ciif:
928c2ecf20Sopenharmony_ci  not:
938c2ecf20Sopenharmony_ci    properties:
948c2ecf20Sopenharmony_ci      compatible:
958c2ecf20Sopenharmony_ci        items:
968c2ecf20Sopenharmony_ci          enum:
978c2ecf20Sopenharmony_ci            - renesas,r7s9210-cpg-mssr
988c2ecf20Sopenharmony_cithen:
998c2ecf20Sopenharmony_ci  required:
1008c2ecf20Sopenharmony_ci    - '#reset-cells'
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_cirequired:
1038c2ecf20Sopenharmony_ci  - compatible
1048c2ecf20Sopenharmony_ci  - reg
1058c2ecf20Sopenharmony_ci  - clocks
1068c2ecf20Sopenharmony_ci  - clock-names
1078c2ecf20Sopenharmony_ci  - '#clock-cells'
1088c2ecf20Sopenharmony_ci  - '#power-domain-cells'
1098c2ecf20Sopenharmony_ci
1108c2ecf20Sopenharmony_ciadditionalProperties: false
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ciexamples:
1138c2ecf20Sopenharmony_ci  - |
1148c2ecf20Sopenharmony_ci    cpg: clock-controller@e6150000 {
1158c2ecf20Sopenharmony_ci            compatible = "renesas,r8a7795-cpg-mssr";
1168c2ecf20Sopenharmony_ci            reg = <0xe6150000 0x1000>;
1178c2ecf20Sopenharmony_ci            clocks = <&extal_clk>, <&extalr_clk>;
1188c2ecf20Sopenharmony_ci            clock-names = "extal", "extalr";
1198c2ecf20Sopenharmony_ci            #clock-cells = <2>;
1208c2ecf20Sopenharmony_ci            #power-domain-cells = <0>;
1218c2ecf20Sopenharmony_ci            #reset-cells = <1>;
1228c2ecf20Sopenharmony_ci    };
123