mirror of
https://github.com/torvalds/linux.git
synced 2024-12-23 19:31:53 +00:00
9127d54bb8
Add RZ/G1E (R8A7745) Clock Pulse Generator / Module Standby and Software Reset support, using the CPG/MSSR driver core and the common R-Car Gen2 (and RZ/G) code. Based on the proof-of-concept R8A7791 CPG/MSSR patch by Geert Uytterhoeven <geert+renesas@glider.be>. Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
74 lines
2.5 KiB
Plaintext
74 lines
2.5 KiB
Plaintext
* 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:
|
|
- "renesas,r8a7743-cpg-mssr" for the r8a7743 SoC (RZ/G1M)
|
|
- "renesas,r8a7745-cpg-mssr" for the r8a7745 SoC (RZ/G1E)
|
|
- "renesas,r8a7795-cpg-mssr" for the r8a7795 SoC (R-Car H3)
|
|
- "renesas,r8a7796-cpg-mssr" for the r8a7796 SoC (R-Car M3-W)
|
|
|
|
- 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:
|
|
- "extal" (r8a7743, r8a7745, r8a7795, r8a7796)
|
|
- "extalr" (r8a7795, r8a7796)
|
|
- "usb_extal" (r8a7743, r8a7745)
|
|
|
|
- #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.
|
|
|
|
|
|
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>;
|
|
};
|
|
|
|
|
|
- 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>;
|
|
clock-names = "fck";
|
|
dmas = <&dmac1 0x13>, <&dmac1 0x12>;
|
|
dma-names = "tx", "rx";
|
|
power-domains = <&cpg>;
|
|
status = "disabled";
|
|
};
|