Add a device node for the System Controller.
Hook up the Cortex-A57 CPU cores and the Cortex-A57 and Cortex A53 L2
caches/SCUs to their respective PM domains.
Hook up all devices that are part of the CPG/MSSR Clock Domain to the
SYSC "always-on" PM Domain.

Signed-off-by: Geert Uytterhoeven <[email protected]>
---
v3:
  - Drop power area hiearchy from DT,
  - Switch to "#power-domain-cells = <1>",
  - Use "<&sysc R8A7795_PD_ALWAYS_ON>" for devices in the always-on
    power area,
  - Drop fallback compatibility strings,

v2:
  - New.
---
 arch/arm64/boot/dts/renesas/r8a7795.dtsi | 115 +++++++++++++++++--------------
 1 file changed, 64 insertions(+), 51 deletions(-)

diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi 
b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
index 4049182e66087b72..780b5bd37281a801 100644
--- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
@@ -10,6 +10,7 @@
 
 #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/power/r8a7795-sysc.h>
 
 / {
        compatible = "renesas,r8a7795";
@@ -39,6 +40,7 @@
                        compatible = "arm,cortex-a57", "arm,armv8";
                        reg = <0x0>;
                        device_type = "cpu";
+                       power-domains = <&sysc R8A7795_PD_CA57_CPU0>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
                };
@@ -47,6 +49,7 @@
                        compatible = "arm,cortex-a57","arm,armv8";
                        reg = <0x1>;
                        device_type = "cpu";
+                       power-domains = <&sysc R8A7795_PD_CA57_CPU1>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
                };
@@ -54,6 +57,7 @@
                        compatible = "arm,cortex-a57","arm,armv8";
                        reg = <0x2>;
                        device_type = "cpu";
+                       power-domains = <&sysc R8A7795_PD_CA57_CPU2>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
                };
@@ -61,6 +65,7 @@
                        compatible = "arm,cortex-a57","arm,armv8";
                        reg = <0x3>;
                        device_type = "cpu";
+                       power-domains = <&sysc R8A7795_PD_CA57_CPU3>;
                        next-level-cache = <&L2_CA57>;
                        enable-method = "psci";
                };
@@ -68,12 +73,14 @@
 
        L2_CA57: cache-controller@0 {
                compatible = "cache";
+               power-domains = <&sysc R8A7795_PD_CA57_SCU>;
                cache-unified;
                cache-level = <2>;
        };
 
        L2_CA53: cache-controller@1 {
                compatible = "cache";
+               power-domains = <&sysc R8A7795_PD_CA53_SCU>;
                cache-unified;
                cache-level = <2>;
        };
@@ -163,7 +170,7 @@
                        #interrupt-cells = <2>;
                        interrupt-controller;
                        clocks = <&cpg CPG_MOD 912>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                };
 
                gpio1: gpio@e6051000 {
@@ -177,7 +184,7 @@
                        #interrupt-cells = <2>;
                        interrupt-controller;
                        clocks = <&cpg CPG_MOD 911>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                };
 
                gpio2: gpio@e6052000 {
@@ -191,7 +198,7 @@
                        #interrupt-cells = <2>;
                        interrupt-controller;
                        clocks = <&cpg CPG_MOD 910>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                };
 
                gpio3: gpio@e6053000 {
@@ -205,7 +212,7 @@
                        #interrupt-cells = <2>;
                        interrupt-controller;
                        clocks = <&cpg CPG_MOD 909>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                };
 
                gpio4: gpio@e6054000 {
@@ -219,7 +226,7 @@
                        #interrupt-cells = <2>;
                        interrupt-controller;
                        clocks = <&cpg CPG_MOD 908>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                };
 
                gpio5: gpio@e6055000 {
@@ -233,7 +240,7 @@
                        #interrupt-cells = <2>;
                        interrupt-controller;
                        clocks = <&cpg CPG_MOD 907>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                };
 
                gpio6: gpio@e6055400 {
@@ -247,7 +254,7 @@
                        #interrupt-cells = <2>;
                        interrupt-controller;
                        clocks = <&cpg CPG_MOD 906>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                };
 
                gpio7: gpio@e6055800 {
@@ -261,7 +268,7 @@
                        #interrupt-cells = <2>;
                        interrupt-controller;
                        clocks = <&cpg CPG_MOD 905>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                };
 
                pmu_a57 {
@@ -297,6 +304,12 @@
                        #power-domain-cells = <0>;
                };
 
+               sysc: system-controller@e6180000 {
+                       compatible = "renesas,r8a7795-sysc";
+                       reg = <0 0xe6180000 0 0x0400>;
+                       #power-domain-cells = <1>;
+               };
+
                audma0: dma-controller@ec700000 {
                        compatible = "renesas,rcar-dmac";
                        reg = <0 0xec700000 0 0x10000>;
@@ -324,7 +337,7 @@
                                        "ch12", "ch13", "ch14", "ch15";
                        clocks = <&cpg CPG_MOD 502>;
                        clock-names = "fck";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        #dma-cells = <1>;
                        dma-channels = <16>;
                };
@@ -356,7 +369,7 @@
                                        "ch12", "ch13", "ch14", "ch15";
                        clocks = <&cpg CPG_MOD 501>;
                        clock-names = "fck";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        #dma-cells = <1>;
                        dma-channels = <16>;
                };
@@ -378,7 +391,7 @@
                                      GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH
                                      GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 407>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                };
 
                dmac0: dma-controller@e6700000 {
@@ -409,7 +422,7 @@
                                        "ch12", "ch13", "ch14", "ch15";
                        clocks = <&cpg CPG_MOD 219>;
                        clock-names = "fck";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        #dma-cells = <1>;
                        dma-channels = <16>;
                };
@@ -442,7 +455,7 @@
                                        "ch12", "ch13", "ch14", "ch15";
                        clocks = <&cpg CPG_MOD 218>;
                        clock-names = "fck";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        #dma-cells = <1>;
                        dma-channels = <16>;
                };
@@ -475,7 +488,7 @@
                                        "ch12", "ch13", "ch14", "ch15";
                        clocks = <&cpg CPG_MOD 217>;
                        clock-names = "fck";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        #dma-cells = <1>;
                        dma-channels = <16>;
                };
@@ -517,7 +530,7 @@
                                          "ch20", "ch21", "ch22", "ch23",
                                          "ch24";
                        clocks = <&cpg CPG_MOD 812>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        phy-mode = "rgmii-id";
                        #address-cells = <1>;
                        #size-cells = <0>;
@@ -535,7 +548,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac1 0x31>, <&dmac1 0x30>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -551,7 +564,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac1 0x33>, <&dmac1 0x32>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -567,7 +580,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac1 0x35>, <&dmac1 0x34>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -583,7 +596,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac0 0x37>, <&dmac0 0x36>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -599,7 +612,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac0 0x39>, <&dmac0 0x38>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -614,7 +627,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac1 0x51>, <&dmac1 0x50>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -629,7 +642,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac1 0x53>, <&dmac1 0x52>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -644,7 +657,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac1 0x13>, <&dmac1 0x12>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -659,7 +672,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac0 0x57>, <&dmac0 0x56>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -674,7 +687,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac0 0x59>, <&dmac0 0x58>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -689,7 +702,7 @@
                        clock-names = "fck", "brg_int", "scif_clk";
                        dmas = <&dmac1 0x5b>, <&dmac1 0x5a>;
                        dma-names = "tx", "rx";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -700,7 +713,7 @@
                        reg = <0 0xe6500000 0 0x40>;
                        interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 931>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        i2c-scl-internal-delay-ns = <110>;
                        status = "disabled";
                };
@@ -712,7 +725,7 @@
                        reg = <0 0xe6508000 0 0x40>;
                        interrupts = <GIC_SPI 288 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 930>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        i2c-scl-internal-delay-ns = <6>;
                        status = "disabled";
                };
@@ -724,7 +737,7 @@
                        reg = <0 0xe6510000 0 0x40>;
                        interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 929>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        i2c-scl-internal-delay-ns = <6>;
                        status = "disabled";
                };
@@ -736,7 +749,7 @@
                        reg = <0 0xe66d0000 0 0x40>;
                        interrupts = <GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 928>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        i2c-scl-internal-delay-ns = <110>;
                        status = "disabled";
                };
@@ -748,7 +761,7 @@
                        reg = <0 0xe66d8000 0 0x40>;
                        interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 927>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        i2c-scl-internal-delay-ns = <110>;
                        status = "disabled";
                };
@@ -760,7 +773,7 @@
                        reg = <0 0xe66e0000 0 0x40>;
                        interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 919>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        i2c-scl-internal-delay-ns = <110>;
                        status = "disabled";
                };
@@ -772,7 +785,7 @@
                        reg = <0 0xe66e8000 0 0x40>;
                        interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 918>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        i2c-scl-internal-delay-ns = <6>;
                        status = "disabled";
                };
@@ -822,7 +835,7 @@
                                      "src.1", "src.0",
                                      "dvc.0", "dvc.1",
                                      "clk_a", "clk_b", "clk_c", "clk_i";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
 
                        rcar_sound,dvc {
@@ -956,7 +969,7 @@
                        reg = <0 0xee000000 0 0xc00>;
                        interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 328>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -965,7 +978,7 @@
                        reg = <0 0xee040000 0 0xc00>;
                        interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 327>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -977,7 +990,7 @@
                                      GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "ch0", "ch1";
                        clocks = <&cpg CPG_MOD 330>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        #dma-cells = <1>;
                        dma-channels = <2>;
                };
@@ -990,7 +1003,7 @@
                                      GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "ch0", "ch1";
                        clocks = <&cpg CPG_MOD 331>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        #dma-cells = <1>;
                        dma-channels = <2>;
                };
@@ -1000,7 +1013,7 @@
                        reg = <0 0xee100000 0 0x2000>;
                        interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 314>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -1009,7 +1022,7 @@
                        reg = <0 0xee120000 0 0x2000>;
                        interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 313>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -1018,7 +1031,7 @@
                        reg = <0 0xee140000 0 0x2000>;
                        interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 312>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        cap-mmc-highspeed;
                        status = "disabled";
                };
@@ -1028,7 +1041,7 @@
                        reg = <0 0xee160000 0 0x2000>;
                        interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 311>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        cap-mmc-highspeed;
                        status = "disabled";
                };
@@ -1038,7 +1051,7 @@
                        reg = <0 0xee080200 0 0x700>;
                        interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cpg CPG_MOD 703>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        #phy-cells = <0>;
                        status = "disabled";
                };
@@ -1047,7 +1060,7 @@
                        compatible = "renesas,usb2-phy-r8a7795";
                        reg = <0 0xee0a0200 0 0x700>;
                        clocks = <&cpg CPG_MOD 702>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        #phy-cells = <0>;
                        status = "disabled";
                };
@@ -1056,7 +1069,7 @@
                        compatible = "renesas,usb2-phy-r8a7795";
                        reg = <0 0xee0c0200 0 0x700>;
                        clocks = <&cpg CPG_MOD 701>;
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        #phy-cells = <0>;
                        status = "disabled";
                };
@@ -1068,7 +1081,7 @@
                        clocks = <&cpg CPG_MOD 703>;
                        phys = <&usb2_phy0>;
                        phy-names = "usb";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -1079,7 +1092,7 @@
                        clocks = <&cpg CPG_MOD 702>;
                        phys = <&usb2_phy1>;
                        phy-names = "usb";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -1090,7 +1103,7 @@
                        clocks = <&cpg CPG_MOD 701>;
                        phys = <&usb2_phy2>;
                        phy-names = "usb";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -1101,7 +1114,7 @@
                        clocks = <&cpg CPG_MOD 703>;
                        phys = <&usb2_phy0>;
                        phy-names = "usb";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -1112,7 +1125,7 @@
                        clocks = <&cpg CPG_MOD 702>;
                        phys = <&usb2_phy1>;
                        phy-names = "usb";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
 
@@ -1123,7 +1136,7 @@
                        clocks = <&cpg CPG_MOD 701>;
                        phys = <&usb2_phy2>;
                        phy-names = "usb";
-                       power-domains = <&cpg>;
+                       power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
                        status = "disabled";
                };
        };
-- 
1.9.1

Reply via email to