xref: /openbmc/linux/Documentation/devicetree/bindings/clock/renesas,cpg-mssr.yaml (revision eeb40fda056ce2f914fff000525ca5a7b2ddec50)
1*eeb40fdaSGeert Uytterhoeven# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*eeb40fdaSGeert Uytterhoeven%YAML 1.2
3*eeb40fdaSGeert Uytterhoeven---
4*eeb40fdaSGeert Uytterhoeven$id: "http://devicetree.org/schemas/clock/renesas,cpg-mssr.yaml#"
5*eeb40fdaSGeert Uytterhoeven$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6*eeb40fdaSGeert Uytterhoeven
7*eeb40fdaSGeert Uytterhoeventitle: Renesas Clock Pulse Generator / Module Standby and Software Reset
8*eeb40fdaSGeert Uytterhoeven
9*eeb40fdaSGeert Uytterhoevenmaintainers:
10*eeb40fdaSGeert Uytterhoeven  - Geert Uytterhoeven <geert+renesas@glider.be>
11*eeb40fdaSGeert Uytterhoeven
12*eeb40fdaSGeert Uytterhoevendescription: |
13*eeb40fdaSGeert Uytterhoeven  On Renesas ARM SoCs (SH/R-Mobile, R-Car, RZ), the CPG (Clock Pulse Generator)
14*eeb40fdaSGeert Uytterhoeven  and MSSR (Module Standby and Software Reset) blocks are intimately connected,
15*eeb40fdaSGeert Uytterhoeven  and share the same register block.
16*eeb40fdaSGeert Uytterhoeven
17*eeb40fdaSGeert Uytterhoeven  They provide the following functionalities:
18*eeb40fdaSGeert Uytterhoeven    - The CPG block generates various core clocks,
19*eeb40fdaSGeert Uytterhoeven    - The MSSR block provides two functions:
20*eeb40fdaSGeert Uytterhoeven        1. Module Standby, providing a Clock Domain to control the clock supply
21*eeb40fdaSGeert Uytterhoeven           to individual SoC devices,
22*eeb40fdaSGeert Uytterhoeven        2. Reset Control, to perform a software reset of individual SoC devices.
23*eeb40fdaSGeert Uytterhoeven
24*eeb40fdaSGeert Uytterhoevenproperties:
25*eeb40fdaSGeert Uytterhoeven  compatible:
26*eeb40fdaSGeert Uytterhoeven    enum:
27*eeb40fdaSGeert Uytterhoeven      - renesas,r7s9210-cpg-mssr  # RZ/A2
28*eeb40fdaSGeert Uytterhoeven      - renesas,r8a7743-cpg-mssr  # RZ/G1M
29*eeb40fdaSGeert Uytterhoeven      - renesas,r8a7744-cpg-mssr  # RZ/G1N
30*eeb40fdaSGeert Uytterhoeven      - renesas,r8a7745-cpg-mssr  # RZ/G1E
31*eeb40fdaSGeert Uytterhoeven      - renesas,r8a77470-cpg-mssr # RZ/G1C
32*eeb40fdaSGeert Uytterhoeven      - renesas,r8a774a1-cpg-mssr # RZ/G2M
33*eeb40fdaSGeert Uytterhoeven      - renesas,r8a774b1-cpg-mssr # RZ/G2N
34*eeb40fdaSGeert Uytterhoeven      - renesas,r8a774c0-cpg-mssr # RZ/G2E
35*eeb40fdaSGeert Uytterhoeven      - renesas,r8a7790-cpg-mssr  # R-Car H2
36*eeb40fdaSGeert Uytterhoeven      - renesas,r8a7791-cpg-mssr  # R-Car M2-W
37*eeb40fdaSGeert Uytterhoeven      - renesas,r8a7792-cpg-mssr  # R-Car V2H
38*eeb40fdaSGeert Uytterhoeven      - renesas,r8a7793-cpg-mssr  # R-Car M2-N
39*eeb40fdaSGeert Uytterhoeven      - renesas,r8a7794-cpg-mssr  # R-Car E2
40*eeb40fdaSGeert Uytterhoeven      - renesas,r8a7795-cpg-mssr  # R-Car H3
41*eeb40fdaSGeert Uytterhoeven      - renesas,r8a7796-cpg-mssr  # R-Car M3-W
42*eeb40fdaSGeert Uytterhoeven      - renesas,r8a77961-cpg-mssr # R-Car M3-W+
43*eeb40fdaSGeert Uytterhoeven      - renesas,r8a77965-cpg-mssr # R-Car M3-N
44*eeb40fdaSGeert Uytterhoeven      - renesas,r8a77970-cpg-mssr # R-Car V3M
45*eeb40fdaSGeert Uytterhoeven      - renesas,r8a77980-cpg-mssr # R-Car V3H
46*eeb40fdaSGeert Uytterhoeven      - renesas,r8a77990-cpg-mssr # R-Car E3
47*eeb40fdaSGeert Uytterhoeven      - renesas,r8a77995-cpg-mssr # R-Car D3
48*eeb40fdaSGeert Uytterhoeven
49*eeb40fdaSGeert Uytterhoeven  reg:
50*eeb40fdaSGeert Uytterhoeven    maxItems: 1
51*eeb40fdaSGeert Uytterhoeven
52*eeb40fdaSGeert Uytterhoeven  clocks:
53*eeb40fdaSGeert Uytterhoeven    minItems: 1
54*eeb40fdaSGeert Uytterhoeven    maxItems: 2
55*eeb40fdaSGeert Uytterhoeven
56*eeb40fdaSGeert Uytterhoeven  clock-names:
57*eeb40fdaSGeert Uytterhoeven    minItems: 1
58*eeb40fdaSGeert Uytterhoeven    maxItems: 2
59*eeb40fdaSGeert Uytterhoeven    items:
60*eeb40fdaSGeert Uytterhoeven      enum:
61*eeb40fdaSGeert Uytterhoeven        - extal     # All
62*eeb40fdaSGeert Uytterhoeven        - extalr    # Most R-Car Gen3 and RZ/G2
63*eeb40fdaSGeert Uytterhoeven        - usb_extal # Most R-Car Gen2 and RZ/G1
64*eeb40fdaSGeert Uytterhoeven
65*eeb40fdaSGeert Uytterhoeven  '#clock-cells':
66*eeb40fdaSGeert Uytterhoeven    description: |
67*eeb40fdaSGeert Uytterhoeven      - For CPG core clocks, the two clock specifier cells must be "CPG_CORE"
68*eeb40fdaSGeert Uytterhoeven        and a core clock reference, as defined in
69*eeb40fdaSGeert Uytterhoeven        <dt-bindings/clock/*-cpg-mssr.h>
70*eeb40fdaSGeert Uytterhoeven      - For module clocks, the two clock specifier cells must be "CPG_MOD" and
71*eeb40fdaSGeert Uytterhoeven        a module number, as defined in the datasheet.
72*eeb40fdaSGeert Uytterhoeven    const: 2
73*eeb40fdaSGeert Uytterhoeven
74*eeb40fdaSGeert Uytterhoeven  '#power-domain-cells':
75*eeb40fdaSGeert Uytterhoeven    description:
76*eeb40fdaSGeert Uytterhoeven      SoC devices that are part of the CPG/MSSR Clock Domain and can be
77*eeb40fdaSGeert Uytterhoeven      power-managed through Module Standby should refer to the CPG device node
78*eeb40fdaSGeert Uytterhoeven      in their "power-domains" property, as documented by the generic PM Domain
79*eeb40fdaSGeert Uytterhoeven      bindings in Documentation/devicetree/bindings/power/power-domain.yaml.
80*eeb40fdaSGeert Uytterhoeven    const: 0
81*eeb40fdaSGeert Uytterhoeven
82*eeb40fdaSGeert Uytterhoeven  '#reset-cells':
83*eeb40fdaSGeert Uytterhoeven    description:
84*eeb40fdaSGeert Uytterhoeven      The single reset specifier cell must be the module number, as defined in
85*eeb40fdaSGeert Uytterhoeven      the datasheet.
86*eeb40fdaSGeert Uytterhoeven    const: 1
87*eeb40fdaSGeert Uytterhoeven
88*eeb40fdaSGeert Uytterhoevenif:
89*eeb40fdaSGeert Uytterhoeven  not:
90*eeb40fdaSGeert Uytterhoeven    properties:
91*eeb40fdaSGeert Uytterhoeven      compatible:
92*eeb40fdaSGeert Uytterhoeven        items:
93*eeb40fdaSGeert Uytterhoeven          enum:
94*eeb40fdaSGeert Uytterhoeven            - renesas,r7s9210-cpg-mssr
95*eeb40fdaSGeert Uytterhoeventhen:
96*eeb40fdaSGeert Uytterhoeven  required:
97*eeb40fdaSGeert Uytterhoeven    - '#reset-cells'
98*eeb40fdaSGeert Uytterhoeven
99*eeb40fdaSGeert Uytterhoevenrequired:
100*eeb40fdaSGeert Uytterhoeven  - compatible
101*eeb40fdaSGeert Uytterhoeven  - reg
102*eeb40fdaSGeert Uytterhoeven  - clocks
103*eeb40fdaSGeert Uytterhoeven  - clock-names
104*eeb40fdaSGeert Uytterhoeven  - '#clock-cells'
105*eeb40fdaSGeert Uytterhoeven  - '#power-domain-cells'
106*eeb40fdaSGeert Uytterhoeven
107*eeb40fdaSGeert UytterhoevenadditionalProperties: false
108*eeb40fdaSGeert Uytterhoeven
109*eeb40fdaSGeert Uytterhoevenexamples:
110*eeb40fdaSGeert Uytterhoeven  - |
111*eeb40fdaSGeert Uytterhoeven    cpg: clock-controller@e6150000 {
112*eeb40fdaSGeert Uytterhoeven            compatible = "renesas,r8a7795-cpg-mssr";
113*eeb40fdaSGeert Uytterhoeven            reg = <0xe6150000 0x1000>;
114*eeb40fdaSGeert Uytterhoeven            clocks = <&extal_clk>, <&extalr_clk>;
115*eeb40fdaSGeert Uytterhoeven            clock-names = "extal", "extalr";
116*eeb40fdaSGeert Uytterhoeven            #clock-cells = <2>;
117*eeb40fdaSGeert Uytterhoeven            #power-domain-cells = <0>;
118*eeb40fdaSGeert Uytterhoeven            #reset-cells = <1>;
119*eeb40fdaSGeert Uytterhoeven    };
120