clk: shmobile: Add new Renesas CPG/MSSR DT bindings
On Renesas ARM SoCs (SH/R-Mobile, R-Car, RZ), the CPG (Clock Pulse
Generator) and MSSR (Module Standby and Software Reset) blocks are
intimately connected, and share the same register block.
Hence it makes sense to describe these two blocks using a
single device node in DT, instead of using a hierarchical structure with
multiple nodes, using a mix of generic and SoC-specific bindings.
These new DT bindings are intended to replace the existing DT bindings
for CPG core clocks ("renesas,*-cpg-clocks", "renesas,cpg-div6-clock")
and module clocks ("renesas,*-mstp-clocks"), at least for new SoCs.
This will make it easier to add module reset support later, which is
currently not implemented, and difficult to achieve using the existing
bindings due to the intertwined register layout.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Michael Turquette <mturquette@baylibre.com>
Reviewed-by: Magnus Damm <damm+renesas@opensource.se>
2015-10-12 17:05:24 +08:00
|
|
|
* Renesas Clock Pulse Generator / Module Standby and Software Reset
|
|
|
|
|
|
|
|
On Renesas ARM SoCs (SH/R-Mobile, R-Car, RZ), the CPG (Clock Pulse Generator)
|
|
|
|
and MSSR (Module Standby and Software Reset) blocks are intimately connected,
|
|
|
|
and share the same register block.
|
|
|
|
|
|
|
|
They provide the following functionalities:
|
|
|
|
- The CPG block generates various core clocks,
|
|
|
|
- The MSSR block provides two functions:
|
|
|
|
1. Module Standby, providing a Clock Domain to control the clock supply
|
|
|
|
to individual SoC devices,
|
|
|
|
2. Reset Control, to perform a software reset of individual SoC devices.
|
|
|
|
|
|
|
|
Required Properties:
|
|
|
|
- compatible: Must be one of:
|
2016-11-09 05:21:50 +08:00
|
|
|
- "renesas,r8a7743-cpg-mssr" for the r8a7743 SoC (RZ/G1M)
|
2016-11-09 05:25:08 +08:00
|
|
|
- "renesas,r8a7745-cpg-mssr" for the r8a7745 SoC (RZ/G1E)
|
2018-03-29 03:26:12 +08:00
|
|
|
- "renesas,r8a77470-cpg-mssr" for the r8a77470 SoC (RZ/G1C)
|
2018-08-02 22:57:51 +08:00
|
|
|
- "renesas,r8a774a1-cpg-mssr" for the r8a774a1 SoC (RZ/G2M)
|
2017-03-21 00:46:22 +08:00
|
|
|
- "renesas,r8a7790-cpg-mssr" for the r8a7790 SoC (R-Car H2)
|
|
|
|
- "renesas,r8a7791-cpg-mssr" for the r8a7791 SoC (R-Car M2-W)
|
|
|
|
- "renesas,r8a7792-cpg-mssr" for the r8a7792 SoC (R-Car V2H)
|
|
|
|
- "renesas,r8a7793-cpg-mssr" for the r8a7793 SoC (R-Car M2-N)
|
|
|
|
- "renesas,r8a7794-cpg-mssr" for the r8a7794 SoC (R-Car E2)
|
2016-05-03 15:37:08 +08:00
|
|
|
- "renesas,r8a7795-cpg-mssr" for the r8a7795 SoC (R-Car H3)
|
|
|
|
- "renesas,r8a7796-cpg-mssr" for the r8a7796 SoC (R-Car M3-W)
|
2018-02-20 23:12:03 +08:00
|
|
|
- "renesas,r8a77965-cpg-mssr" for the r8a77965 SoC (R-Car M3-N)
|
2017-09-09 05:34:20 +08:00
|
|
|
- "renesas,r8a77970-cpg-mssr" for the r8a77970 SoC (R-Car V3M)
|
2018-02-15 19:58:45 +08:00
|
|
|
- "renesas,r8a77980-cpg-mssr" for the r8a77980 SoC (R-Car V3H)
|
2018-04-20 20:27:44 +08:00
|
|
|
- "renesas,r8a77990-cpg-mssr" for the r8a77990 SoC (R-Car E3)
|
2017-07-12 16:47:36 +08:00
|
|
|
- "renesas,r8a77995-cpg-mssr" for the r8a77995 SoC (R-Car D3)
|
clk: shmobile: Add new Renesas CPG/MSSR DT bindings
On Renesas ARM SoCs (SH/R-Mobile, R-Car, RZ), the CPG (Clock Pulse
Generator) and MSSR (Module Standby and Software Reset) blocks are
intimately connected, and share the same register block.
Hence it makes sense to describe these two blocks using a
single device node in DT, instead of using a hierarchical structure with
multiple nodes, using a mix of generic and SoC-specific bindings.
These new DT bindings are intended to replace the existing DT bindings
for CPG core clocks ("renesas,*-cpg-clocks", "renesas,cpg-div6-clock")
and module clocks ("renesas,*-mstp-clocks"), at least for new SoCs.
This will make it easier to add module reset support later, which is
currently not implemented, and difficult to achieve using the existing
bindings due to the intertwined register layout.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Michael Turquette <mturquette@baylibre.com>
Reviewed-by: Magnus Damm <damm+renesas@opensource.se>
2015-10-12 17:05:24 +08:00
|
|
|
|
|
|
|
- reg: Base address and length of the memory resource used by the CPG/MSSR
|
|
|
|
block
|
|
|
|
|
|
|
|
- clocks: References to external parent clocks, one entry for each entry in
|
|
|
|
clock-names
|
|
|
|
- clock-names: List of external parent clock names. Valid names are:
|
2018-08-02 22:57:51 +08:00
|
|
|
- "extal" (r8a7743, r8a7745, r8a77470, r8a774a1, r8a7790, r8a7791,
|
|
|
|
r8a7792, r8a7793, r8a7794, r8a7795, r8a7796, r8a77965,
|
|
|
|
r8a77970, r8a77980, r8a77990, r8a77995)
|
|
|
|
- "extalr" (r8a774a1, r8a7795, r8a7796, r8a77965, r8a77970, r8a77980)
|
2018-03-29 03:26:12 +08:00
|
|
|
- "usb_extal" (r8a7743, r8a7745, r8a77470, r8a7790, r8a7791, r8a7793,
|
|
|
|
r8a7794)
|
clk: shmobile: Add new Renesas CPG/MSSR DT bindings
On Renesas ARM SoCs (SH/R-Mobile, R-Car, RZ), the CPG (Clock Pulse
Generator) and MSSR (Module Standby and Software Reset) blocks are
intimately connected, and share the same register block.
Hence it makes sense to describe these two blocks using a
single device node in DT, instead of using a hierarchical structure with
multiple nodes, using a mix of generic and SoC-specific bindings.
These new DT bindings are intended to replace the existing DT bindings
for CPG core clocks ("renesas,*-cpg-clocks", "renesas,cpg-div6-clock")
and module clocks ("renesas,*-mstp-clocks"), at least for new SoCs.
This will make it easier to add module reset support later, which is
currently not implemented, and difficult to achieve using the existing
bindings due to the intertwined register layout.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Michael Turquette <mturquette@baylibre.com>
Reviewed-by: Magnus Damm <damm+renesas@opensource.se>
2015-10-12 17:05:24 +08:00
|
|
|
|
|
|
|
- #clock-cells: Must be 2
|
|
|
|
- For CPG core clocks, the two clock specifier cells must be "CPG_CORE"
|
|
|
|
and a core clock reference, as defined in
|
|
|
|
<dt-bindings/clock/*-cpg-mssr.h>.
|
|
|
|
- For module clocks, the two clock specifier cells must be "CPG_MOD" and
|
|
|
|
a module number, as defined in the datasheet.
|
|
|
|
|
|
|
|
- #power-domain-cells: Must be 0
|
|
|
|
- SoC devices that are part of the CPG/MSSR Clock Domain and can be
|
|
|
|
power-managed through Module Standby should refer to the CPG device
|
|
|
|
node in their "power-domains" property, as documented by the generic PM
|
|
|
|
Domain bindings in
|
|
|
|
Documentation/devicetree/bindings/power/power_domain.txt.
|
|
|
|
|
2015-10-12 17:35:34 +08:00
|
|
|
- #reset-cells: Must be 1
|
|
|
|
- The single reset specifier cell must be the module number, as defined
|
|
|
|
in the datasheet.
|
|
|
|
|
clk: shmobile: Add new Renesas CPG/MSSR DT bindings
On Renesas ARM SoCs (SH/R-Mobile, R-Car, RZ), the CPG (Clock Pulse
Generator) and MSSR (Module Standby and Software Reset) blocks are
intimately connected, and share the same register block.
Hence it makes sense to describe these two blocks using a
single device node in DT, instead of using a hierarchical structure with
multiple nodes, using a mix of generic and SoC-specific bindings.
These new DT bindings are intended to replace the existing DT bindings
for CPG core clocks ("renesas,*-cpg-clocks", "renesas,cpg-div6-clock")
and module clocks ("renesas,*-mstp-clocks"), at least for new SoCs.
This will make it easier to add module reset support later, which is
currently not implemented, and difficult to achieve using the existing
bindings due to the intertwined register layout.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Michael Turquette <mturquette@baylibre.com>
Reviewed-by: Magnus Damm <damm+renesas@opensource.se>
2015-10-12 17:05:24 +08:00
|
|
|
|
|
|
|
Examples
|
|
|
|
--------
|
|
|
|
|
|
|
|
- CPG device node:
|
|
|
|
|
|
|
|
cpg: clock-controller@e6150000 {
|
|
|
|
compatible = "renesas,r8a7795-cpg-mssr";
|
|
|
|
reg = <0 0xe6150000 0 0x1000>;
|
|
|
|
clocks = <&extal_clk>, <&extalr_clk>;
|
|
|
|
clock-names = "extal", "extalr";
|
|
|
|
#clock-cells = <2>;
|
|
|
|
#power-domain-cells = <0>;
|
2015-10-12 17:35:34 +08:00
|
|
|
#reset-cells = <1>;
|
clk: shmobile: Add new Renesas CPG/MSSR DT bindings
On Renesas ARM SoCs (SH/R-Mobile, R-Car, RZ), the CPG (Clock Pulse
Generator) and MSSR (Module Standby and Software Reset) blocks are
intimately connected, and share the same register block.
Hence it makes sense to describe these two blocks using a
single device node in DT, instead of using a hierarchical structure with
multiple nodes, using a mix of generic and SoC-specific bindings.
These new DT bindings are intended to replace the existing DT bindings
for CPG core clocks ("renesas,*-cpg-clocks", "renesas,cpg-div6-clock")
and module clocks ("renesas,*-mstp-clocks"), at least for new SoCs.
This will make it easier to add module reset support later, which is
currently not implemented, and difficult to achieve using the existing
bindings due to the intertwined register layout.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Michael Turquette <mturquette@baylibre.com>
Reviewed-by: Magnus Damm <damm+renesas@opensource.se>
2015-10-12 17:05:24 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
- CPG/MSSR Clock Domain member device node:
|
|
|
|
|
|
|
|
scif2: serial@e6e88000 {
|
|
|
|
compatible = "renesas,scif-r8a7795", "renesas,scif";
|
|
|
|
reg = <0 0xe6e88000 0 64>;
|
|
|
|
interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
|
|
|
|
clocks = <&cpg CPG_MOD 310>;
|
2015-10-20 16:21:49 +08:00
|
|
|
clock-names = "fck";
|
clk: shmobile: Add new Renesas CPG/MSSR DT bindings
On Renesas ARM SoCs (SH/R-Mobile, R-Car, RZ), the CPG (Clock Pulse
Generator) and MSSR (Module Standby and Software Reset) blocks are
intimately connected, and share the same register block.
Hence it makes sense to describe these two blocks using a
single device node in DT, instead of using a hierarchical structure with
multiple nodes, using a mix of generic and SoC-specific bindings.
These new DT bindings are intended to replace the existing DT bindings
for CPG core clocks ("renesas,*-cpg-clocks", "renesas,cpg-div6-clock")
and module clocks ("renesas,*-mstp-clocks"), at least for new SoCs.
This will make it easier to add module reset support later, which is
currently not implemented, and difficult to achieve using the existing
bindings due to the intertwined register layout.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Michael Turquette <mturquette@baylibre.com>
Reviewed-by: Magnus Damm <damm+renesas@opensource.se>
2015-10-12 17:05:24 +08:00
|
|
|
dmas = <&dmac1 0x13>, <&dmac1 0x12>;
|
|
|
|
dma-names = "tx", "rx";
|
|
|
|
power-domains = <&cpg>;
|
2015-10-12 17:35:34 +08:00
|
|
|
resets = <&cpg 310>;
|
clk: shmobile: Add new Renesas CPG/MSSR DT bindings
On Renesas ARM SoCs (SH/R-Mobile, R-Car, RZ), the CPG (Clock Pulse
Generator) and MSSR (Module Standby and Software Reset) blocks are
intimately connected, and share the same register block.
Hence it makes sense to describe these two blocks using a
single device node in DT, instead of using a hierarchical structure with
multiple nodes, using a mix of generic and SoC-specific bindings.
These new DT bindings are intended to replace the existing DT bindings
for CPG core clocks ("renesas,*-cpg-clocks", "renesas,cpg-div6-clock")
and module clocks ("renesas,*-mstp-clocks"), at least for new SoCs.
This will make it easier to add module reset support later, which is
currently not implemented, and difficult to achieve using the existing
bindings due to the intertwined register layout.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Michael Turquette <mturquette@baylibre.com>
Reviewed-by: Magnus Damm <damm+renesas@opensource.se>
2015-10-12 17:05:24 +08:00
|
|
|
};
|