Skip to contentSkip to conversation

ARM: dts: exynos: Remove duplicated inclusion of syscon restart nodes on Exynos5410

PATCH In review Krzysztof Kozlowski 2 participants 5 messages Jan 16, 2018 – Jan 30, 2018

Subsystems (2)
lore
Share & tools
lore

Krzysztof Kozlowski

author maintainer
#0 lore raw

PATCH 1/3 ARM: dts: exynos: Remove duplicated inclusion of syscon restart nodes on Exynos5410

The exynos-syscon-restart.dtsi is already included by exynos5.dtsi (through exynos54xx.dtsi).

---
 arch/arm/boot/dts/exynos5410.dtsi | 1 -
 1 file changed, 1 deletion(-)
arch/arm/boot/dts/exynos5410.dtsi +0 -1
index 1886aa00b2db..1e6b57d013c4 100644
@@ -11,7 +11,6 @@
  */
 
 #include "exynos54xx.dtsi"
-#include "exynos-syscon-restart.dtsi"
 #include <dt-bindings/clock/exynos5410.h>
 #include <dt-bindings/clock/exynos-audss-clk.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
Signature · 1 line
2.11.0
author maintainer
#1 lore raw

PATCH 2/3 ARM: dts: exynos: Fix missing missing reg warning for syscon restart nodes

Fix DTC warnings like:

arch/arm/boot/dts/exynos4412-trats2.dtb: Warning (simple_bus_reg):
Node /soc/syscon-poweroff missing or empty reg/ranges property
arch/arm/boot/dts/exynos4412-trats2.dtb: Warning (simple_bus_reg):
Node /soc/syscon-reboot missing or empty reg/ranges property

by moving the syscon poweroff and restart nodes into the PMU (Power Management Unit) node. The PMU node is the actual block responsible for power management, including typical Exynos on/off/restart procedures. Therefore the syscon poweroff and restart nodes logically belong to it.

---

Tested on Exynos5420 and Exynos4412. Other tests are welcomed.

---
 .../devicetree/bindings/arm/samsung/pmu.txt        |  4 +++-
 arch/arm/boot/dts/exynos-syscon-restart.dtsi       | 28 ++++++++++------------
 arch/arm/boot/dts/exynos3250.dtsi                  |  4 ++--
 arch/arm/boot/dts/exynos4.dtsi                     |  5 ++--
 arch/arm/boot/dts/exynos4412.dtsi                  |  2 +-
 arch/arm/boot/dts/exynos5.dtsi                     |  1 -
 arch/arm/boot/dts/exynos5250.dtsi                  |  3 ++-
 arch/arm/boot/dts/exynos5410.dtsi                  |  3 ++-
 arch/arm/boot/dts/exynos5420.dtsi                  |  3 ++-
 9 files changed, 27 insertions(+), 26 deletions(-)
Documentation/devicetree/bindings/arm/samsung/pmu.txt +3 -1
index 779f5614bcee..405646655ec7 100644
@@ -12,6 +12,8 @@ Properties:
 		   - "samsung,exynos5433-pmu" - for Exynos5433 SoC.
 		   - "samsung,exynos7-pmu" - for Exynos7 SoC.
 		second value must be always "syscon".
+		If PMU contains optional syscon-poweroff or syscon-restart nodes,
+		then third value must be "simple-mfd".
 
  - reg : offset and length of the register set.
 
@@ -45,7 +47,7 @@ following properties:
 
 Example :
 pmu_system_controller: system-controller@10040000 {
-	compatible = "samsung,exynos5250-pmu", "syscon";
+	compatible = "samsung,exynos5250-pmu", "syscon", "simple-mfd";
 	reg = <0x10040000 0x5000>;
 	interrupt-controller;
 	#interrupt-cells = <3>;
arch/arm/boot/dts/exynos-syscon-restart.dtsi +12 -16
index 09a2040054ed..279ea09f4fe2 100644
@@ -6,22 +6,18 @@
  * published by the Free Software Foundation.
  */
 
-/ {
-	soc {
-		compatible = "simple-bus";
-
-		poweroff: syscon-poweroff {
-			compatible = "syscon-poweroff";
-			regmap = <&pmu_system_controller>;
-			offset = <0x330C>; /* PS_HOLD_CONTROL */
-			mask = <0x5200>; /* reset value */
-		};
+&pmu_system_controller {
+	poweroff: syscon-poweroff {
+		compatible = "syscon-poweroff";
+		regmap = <&pmu_system_controller>;
+		offset = <0x330C>; /* PS_HOLD_CONTROL */
+		mask = <0x5200>; /* reset value */
+	};
 
-		reboot: syscon-reboot {
-			compatible = "syscon-reboot";
-			regmap = <&pmu_system_controller>;
-			offset = <0x0400>; /* SWRESET */
-			mask = <0x1>;
-		};
+	reboot: syscon-reboot {
+		compatible = "syscon-reboot";
+		regmap = <&pmu_system_controller>;
+		offset = <0x0400>; /* SWRESET */
+		mask = <0x1>;
 	};
 };
arch/arm/boot/dts/exynos3250.dtsi +2 -2
index b8fb94f5daa8..95297e682207 100644
@@ -15,7 +15,6 @@
  */
 
 #include "exynos4-cpu-thermal.dtsi"
-#include "exynos-syscon-restart.dtsi"
 #include <dt-bindings/clock/exynos3250.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
@@ -148,7 +147,7 @@
 		};
 
 		pmu_system_controller: system-controller@10020000 {
-			compatible = "samsung,exynos3250-pmu", "syscon";
+			compatible = "samsung,exynos3250-pmu", "syscon", "simple-mfd";
 			reg = <0x10020000 0x4000>;
 			interrupt-controller;
 			#interrupt-cells = <3>;
@@ -914,3 +913,4 @@
 };
 
 #include "exynos3250-pinctrl.dtsi"
+#include "exynos-syscon-restart.dtsi"
arch/arm/boot/dts/exynos4.dtsi +3 -2
index 6d59cc827649..e5c4befe66f9 100644
@@ -20,7 +20,6 @@
 #include <dt-bindings/clock/exynos-audss-clk.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
-#include "exynos-syscon-restart.dtsi"
 
 / {
 	interrupt-parent = <&gic>;
@@ -174,7 +173,7 @@
 	};
 
 	pmu_system_controller: system-controller@10020000 {
-		compatible = "samsung,exynos4210-pmu", "syscon";
+		compatible = "samsung,exynos4210-pmu", "syscon", "simple-mfd";
 		reg = <0x10020000 0x4000>;
 		interrupt-controller;
 		#interrupt-cells = <3>;
@@ -1010,3 +1009,5 @@
 		clock-names = "secss";
 	};
 };
+
+#include "exynos-syscon-restart.dtsi"
arch/arm/boot/dts/exynos4412.dtsi +1 -1
index e4ad2fc0329e..7872c89d22c3 100644
@@ -725,7 +725,7 @@
 };
 
 &pmu_system_controller {
-	compatible = "samsung,exynos4412-pmu", "syscon";
+	compatible = "samsung,exynos4412-pmu", "syscon", "simple-mfd";
 	clock-names = "clkout0", "clkout1", "clkout2", "clkout3",
 			"clkout4", "clkout8", "clkout9";
 	clocks = <&clock CLK_OUT_DMC>, <&clock CLK_OUT_TOP>,
arch/arm/boot/dts/exynos5.dtsi +0 -1
index f8d7de1144f1..359f49bdd4e2 100644
@@ -12,7 +12,6 @@
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
-#include "exynos-syscon-restart.dtsi"
 
 / {
 	interrupt-parent = <&gic>;
arch/arm/boot/dts/exynos5250.dtsi +2 -1
index 56626d1a4235..24896413ed22 100644
@@ -239,7 +239,7 @@
 		};
 
 		pmu_system_controller: system-controller@10040000 {
-			compatible = "samsung,exynos5250-pmu", "syscon";
+			compatible = "samsung,exynos5250-pmu", "syscon", "simple-mfd";
 			reg = <0x10040000 0x5000>;
 			clock-names = "clkout16";
 			clocks = <&clock CLK_FIN_PLL>;
@@ -1114,3 +1114,4 @@
 };
 
 #include "exynos5250-pinctrl.dtsi"
+#include "exynos-syscon-restart.dtsi"
arch/arm/boot/dts/exynos5410.dtsi +2 -1
index 1e6b57d013c4..3f7e006e46a0 100644
@@ -66,7 +66,7 @@
 		ranges;
 
 		pmu_system_controller: system-controller@10040000 {
-			compatible = "samsung,exynos5410-pmu", "syscon";
+			compatible = "samsung,exynos5410-pmu", "syscon", "simple-mfd";
 			reg = <0x10040000 0x5000>;
 			clock-names = "clkout16";
 			clocks = <&fin_pll>;
@@ -439,3 +439,4 @@
 };
 
 #include "exynos5410-pinctrl.dtsi"
+#include "exynos-syscon-restart.dtsi"
arch/arm/boot/dts/exynos5420.dtsi +2 -1
index 2f3cb2a97f71..7cb13a01795e 100644
@@ -706,7 +706,7 @@
 		};
 
 		pmu_system_controller: system-controller@10040000 {
-			compatible = "samsung,exynos5420-pmu", "syscon";
+			compatible = "samsung,exynos5420-pmu", "syscon", "simple-mfd";
 			reg = <0x10040000 0x5000>;
 			clock-names = "clkout16";
 			clocks = <&clock CLK_FIN_PLL>;
@@ -1531,3 +1531,4 @@
 };
 
 #include "exynos5420-pinctrl.dtsi"
+#include "exynos-syscon-restart.dtsi"
Signature · 1 line
2.11.0
maintainer
#2 lore raw

Re: [PATCH 2/3] ARM: dts: exynos: Fix missing missing reg warning for syscon restart nodes

Quoted 34 lines · Krzysztof Kozlowski

Fix DTC warnings like:

arch/arm/boot/dts/exynos4412-trats2.dtb: Warning (simple_bus_reg):
Node /soc/syscon-poweroff missing or empty reg/ranges property
arch/arm/boot/dts/exynos4412-trats2.dtb: Warning (simple_bus_reg):
Node /soc/syscon-reboot missing or empty reg/ranges property

by moving the syscon poweroff and restart nodes into the PMU (Power Management Unit) node. The PMU node is the actual block responsible for power management, including typical Exynos on/off/restart procedures. Therefore the syscon poweroff and restart nodes logically belong to it.

---

Tested on Exynos5420 and Exynos4412. Other tests are welcomed.

---
 .../devicetree/bindings/arm/samsung/pmu.txt        |  4 +++-
 arch/arm/boot/dts/exynos-syscon-restart.dtsi       | 28 ++++++++++------------
 arch/arm/boot/dts/exynos3250.dtsi                  |  4 ++--
 arch/arm/boot/dts/exynos4.dtsi                     |  5 ++--
 arch/arm/boot/dts/exynos4412.dtsi                  |  2 +-
 arch/arm/boot/dts/exynos5.dtsi                     |  1 -
 arch/arm/boot/dts/exynos5250.dtsi                  |  3 ++-
 arch/arm/boot/dts/exynos5410.dtsi                  |  3 ++-
 arch/arm/boot/dts/exynos5420.dtsi                  |  3 ++-
 9 files changed, 27 insertions(+), 26 deletions(-)
Documentation/devicetree/bindings/arm/samsung/pmu.txt +0 -0
index 779f5614bcee..405646655ec7 100644

Documentation/devicetree/bindings/arm/samsung/pmu.txt Properties: · line 16

Quoted 5 lines
Documentation/devicetree/bindings/arm/samsung/pmu.txt +2 -0
@@ -12,6 +12,8 @@ Properties:
 		   - "samsung,exynos5433-pmu" - for Exynos5433 SoC.
 		   - "samsung,exynos7-pmu" - for Exynos7 SoC.
 		second value must be always "syscon".
+		If PMU contains optional syscon-poweroff or syscon-restart nodes,
+		then third value must be "simple-mfd".

I don't think this is right. simple-mfd is only for cases where the parent has no setup that the child nodes are dependent on. You need the regmap setup by the parent before the child can be enumerated. The correct thing to do here is add an of_platform_default_populate() call.

Rob

author maintainer
#3 lore raw

Re: [PATCH 2/3] ARM: dts: exynos: Fix missing missing reg warning for syscon restart nodes

Quoted 30 lines · Rob Herring
Quoted 29 lines · Krzysztof Kozlowski

Fix DTC warnings like:

arch/arm/boot/dts/exynos4412-trats2.dtb: Warning (simple_bus_reg):
Node /soc/syscon-poweroff missing or empty reg/ranges property
arch/arm/boot/dts/exynos4412-trats2.dtb: Warning (simple_bus_reg):
Node /soc/syscon-reboot missing or empty reg/ranges property

by moving the syscon poweroff and restart nodes into the PMU (Power Management Unit) node. The PMU node is the actual block responsible for power management, including typical Exynos on/off/restart procedures. Therefore the syscon poweroff and restart nodes logically belong to it.

---

Tested on Exynos5420 and Exynos4412. Other tests are welcomed.

---
 .../devicetree/bindings/arm/samsung/pmu.txt        |  4 +++-
 arch/arm/boot/dts/exynos-syscon-restart.dtsi       | 28 ++++++++++------------
 arch/arm/boot/dts/exynos3250.dtsi                  |  4 ++--
 arch/arm/boot/dts/exynos4.dtsi                     |  5 ++--
 arch/arm/boot/dts/exynos4412.dtsi                  |  2 +-
 arch/arm/boot/dts/exynos5.dtsi                     |  1 -
 arch/arm/boot/dts/exynos5250.dtsi                  |  3 ++-
 arch/arm/boot/dts/exynos5410.dtsi                  |  3 ++-
 arch/arm/boot/dts/exynos5420.dtsi                  |  3 ++-
 9 files changed, 27 insertions(+), 26 deletions(-)
Quoted 15 lines

Documentation/devicetree/bindings/arm/samsung/pmu.txt Properties: · line 16

Quoted 10 lines
Documentation/devicetree/bindings/arm/samsung/pmu.txt +2 -0
index 779f5614bcee..405646655ec7 100644
@@ -12,6 +12,8 @@ Properties:
 		   - "samsung,exynos5433-pmu" - for Exynos5433 SoC.
 		   - "samsung,exynos7-pmu" - for Exynos7 SoC.
 		second value must be always "syscon".
+		If PMU contains optional syscon-poweroff or syscon-restart nodes,
+		then third value must be "simple-mfd".

I don't think this is right. simple-mfd is only for cases where the parent has no setup that the child nodes are dependent on. You need the regmap setup by the parent before the child can be enumerated. The correct thing to do here is add an of_platform_default_populate() call.

I understand, makes sense. I will send a follow-up.

Thanks for feedback!

Best regards,
Krzysztof

author maintainer
#4 lore raw

PATCH 3/3 arm64: dts: exynos: Fix missing missing reg warning for syscon restart nodes

In reply to Krzysztof Kozlowski

Fix DTC warnings like:

arch/arm64/boot/dts/exynos/exynos7-espresso.dtb: Warning (simple_bus_reg):
Node /soc/syscon-reboot missing or empty reg/ranges property

by moving the syscon restart node into the PMU (Power Management Unit) node. The PMU node is the actual block responsible for power management, including typical Exynos on/off/restart procedures. Therefore the syscon restart node logically belongs to it.

---

Not tested. All tests are welcomed.

---
 arch/arm64/boot/dts/exynos/exynos5433.dtsi | 16 ++++++++--------
 arch/arm64/boot/dts/exynos/exynos7.dtsi    | 14 +++++++-------
 2 files changed, 15 insertions(+), 15 deletions(-)
arch/arm64/boot/dts/exynos/exynos5433.dtsi +8 -8
index 62f276970174..34c3648182d9 100644
@@ -231,13 +231,6 @@
 		cpu_on = <0xC4000003>;
 	};
 
-	reboot: syscon-reboot {
-		compatible = "syscon-reboot";
-		regmap = <&pmu_system_controller>;
-		offset = <0x400>; /* SWRESET */
-		mask = <0x1>;
-	};
-
 	soc: soc {
 		compatible = "simple-bus";
 		#address-cells = <1>;
@@ -794,11 +787,18 @@
 		};
 
 		pmu_system_controller: system-controller@105c0000 {
-			compatible = "samsung,exynos5433-pmu", "syscon";
+			compatible = "samsung,exynos5433-pmu", "syscon", "simple-mfd";
 			reg = <0x105c0000 0x5008>;
 			#clock-cells = <1>;
 			clock-names = "clkout16";
 			clocks = <&xxti>;
+
+			reboot: syscon-reboot {
+				compatible = "syscon-reboot";
+				regmap = <&pmu_system_controller>;
+				offset = <0x400>; /* SWRESET */
+				mask = <0x1>;
+			};
 		};
 
 		gic: interrupt-controller@11001000 {
arch/arm64/boot/dts/exynos/exynos7.dtsi +7 -7
index ad9dce6894ce..aa99d49af356 100644
@@ -492,15 +492,15 @@
 		};
 
 		pmu_system_controller: system-controller@105c0000 {
-			compatible = "samsung,exynos7-pmu", "syscon";
+			compatible = "samsung,exynos7-pmu", "syscon", "simple-mfd";
 			reg = <0x105c0000 0x5000>;
-		};
 
-		reboot: syscon-reboot {
-			compatible = "syscon-reboot";
-			regmap = <&pmu_system_controller>;
-			offset = <0x0400>;
-			mask = <0x1>;
+			reboot: syscon-reboot {
+				compatible = "syscon-reboot";
+				regmap = <&pmu_system_controller>;
+				offset = <0x0400>;
+				mask = <0x1>;
+			};
 		};
 
 		rtc: rtc@10590000 {
Signature · 1 line
2.11.0