Skip to contentSkip to conversation

Consolidate Exynos machine code

PATCH New Sachin Kamat 3 participants 7 messages Mar 19, 2014 – Mar 20, 2014

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

cover Consolidate Exynos machine code

This patch series consolidates the Exynos machine code and common code into a single file to avoid code duplication and introduces generic compatible strings for Exynos4 and 5 SoC series.

Complete discussion and motivation for this series is found here:
http://comments.gmane.org/gmane.linux.kernel.samsung-soc/27268

This series is based on the latest linux-next and depends on
1. Tomasz Figa's PM consolidation series 1 and 2
2. Patch: ARM: SAMSUNG: Reorganize calls to reserve memory for MFC
http://www.spinics.net/lists/linux-samsung-soc/msg25501.html
3. Patch: ARM: EXYNOS: Add support to reserve memory for MFC-v7
http://www.spinics.net/lists/arm-kernel/msg315940.html
4. Kconfig and CPU init Consolidation series
http://article.gmane.org/gmane.linux.kernel.samsung-soc/28216

Sachin Kamat (4):
ARM: SAMSUNG: Introduce generic Exynos4 and 5 helpers
ARM: EXYNOS: Consolidate Exynos4 and 5 machine files
ARM: EXYNOS: Add generic compatible strings
ARM: dts: Update Exynos DT files with generic compatible strings

 arch/arm/boot/dts/exynos4210-origen.dts         |    2 +-
 arch/arm/boot/dts/exynos4210-smdkv310.dts       |    2 +-
 arch/arm/boot/dts/exynos4210-trats.dts          |    2 +-
 arch/arm/boot/dts/exynos4210-universal_c210.dts |    2 +-
 arch/arm/boot/dts/exynos4210.dtsi               |    2 +-
 arch/arm/boot/dts/exynos4212.dtsi               |    2 +-
 arch/arm/boot/dts/exynos4412-odroidx.dts        |    2 +-
 arch/arm/boot/dts/exynos4412-origen.dts         |    2 +-
 arch/arm/boot/dts/exynos4412-smdk4412.dts       |    2 +-
 arch/arm/boot/dts/exynos4412-tiny4412.dts       |    2 +-
 arch/arm/boot/dts/exynos4412-trats2.dts         |    2 +-
 arch/arm/boot/dts/exynos4412.dtsi               |    2 +-
 arch/arm/boot/dts/exynos5250-arndale.dts        |    2 +-
 arch/arm/boot/dts/exynos5250-smdk5250.dts       |    2 +-
 arch/arm/boot/dts/exynos5250-snow.dts           |    2 +-
 arch/arm/boot/dts/exynos5250.dtsi               |    2 +-
 arch/arm/boot/dts/exynos5420-arndale-octa.dts   |    2 +-
 arch/arm/boot/dts/exynos5420-smdk5420.dts       |    2 +-
 arch/arm/boot/dts/exynos5420.dtsi               |    2 +-
 arch/arm/boot/dts/exynos5440-sd5v1.dts          |    2 +-
 arch/arm/boot/dts/exynos5440-ssdk5440.dts       |    2 +-
 arch/arm/boot/dts/exynos5440.dtsi               |    2 +-
 arch/arm/mach-exynos/Makefile                   |    7 +-
 arch/arm/mach-exynos/common.h                   |    3 +-
 arch/arm/mach-exynos/{common.c => exynos.c}     |  135 ++++++++++++++++-------
 arch/arm/mach-exynos/mach-exynos4-dt.c          |   53 ---------
 arch/arm/mach-exynos/mach-exynos5-dt.c          |   83 --------------
 arch/arm/mach-exynos/regs-pmu.h                 |    1 -
 arch/arm/plat-samsung/include/plat/cpu.h        |    4 +
 29 files changed, 121 insertions(+), 209 deletions(-)
 rename arch/arm/mach-exynos/{common.c => exynos.c} (75%)
 delete mode 100644 arch/arm/mach-exynos/mach-exynos4-dt.c
 delete mode 100644 arch/arm/mach-exynos/mach-exynos5-dt.c
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 1/4 ARM: SAMSUNG: Introduce generic Exynos4 and 5 helpers

Add helpers to check for Exynos4 and 5 family of SoCs. This will eliminate comparing long list of SoCs and make code simpler.

---
 arch/arm/plat-samsung/include/plat/cpu.h |    4 ++++
 1 file changed, 4 insertions(+)
arch/arm/plat-samsung/include/plat/cpu.h +4 -0
index d762533b856f..b9ae39ca1b7f 100644
@@ -166,6 +166,10 @@ IS_SAMSUNG_CPU(exynos5440, EXYNOS5440_SOC_ID, EXYNOS5_SOC_MASK)
 # define soc_is_exynos5440()	0
 #endif
 
+#define soc_is_exynos4() (soc_is_exynos4210() || soc_is_exynos4212() || \
+				soc_is_exynos4412())
+#define soc_is_exynos5() (soc_is_exynos5250() || soc_is_exynos5420())
+
 #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE }
 
 #ifndef KHZ
Signature · 1 line
1.7.9.5
#2 lore raw

PATCH 2/4 ARM: EXYNOS: Consolidate Exynos4 and 5 machine files

In reply to Sachin Kamat

Since there is very little difference between these two files, they can be easily combined into one with necessary SoC checks. While at it also merge the common.c file into this as it does not have any other users.

---
 arch/arm/mach-exynos/Makefile               |    7 +-
 arch/arm/mach-exynos/common.h               |    3 +-
 arch/arm/mach-exynos/{common.c => exynos.c} |  133 ++++++++++++++++++---------
 arch/arm/mach-exynos/mach-exynos4-dt.c      |   53 -----------
 arch/arm/mach-exynos/mach-exynos5-dt.c      |   83 -----------------
 arch/arm/mach-exynos/regs-pmu.h             |    1 -
 6 files changed, 93 insertions(+), 187 deletions(-)
 rename arch/arm/mach-exynos/{common.c => exynos.c} (75%)
 delete mode 100644 arch/arm/mach-exynos/mach-exynos4-dt.c
 delete mode 100644 arch/arm/mach-exynos/mach-exynos5-dt.c
arch/arm/mach-exynos/Makefile +1 -6
index 58fe9e6f542f..a656dbe3b78c 100644
@@ -12,7 +12,7 @@ obj-				:=
 
 # Core
 
-obj-$(CONFIG_ARCH_EXYNOS)	+= common.o
+obj-$(CONFIG_ARCH_EXYNOS)	+= exynos.o
 
 obj-$(CONFIG_PM_SLEEP)		+= pm.o sleep.o
 obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o
@@ -29,8 +29,3 @@ obj-$(CONFIG_ARCH_EXYNOS)	+= firmware.o
 
 plus_sec := $(call as-instr,.arch_extension sec,+sec)
 AFLAGS_exynos-smc.o		:=-Wa,-march=armv7-a$(plus_sec)
-
-# machine support
-
-obj-$(CONFIG_ARCH_EXYNOS4)	+= mach-exynos4-dt.o
-obj-$(CONFIG_ARCH_EXYNOS5)	+= mach-exynos5-dt.o
arch/arm/mach-exynos/common.h +1 -2
index aba6a2ad7d1b..9ef3f83efaff 100644
@@ -19,8 +19,7 @@ void mct_init(void __iomem *base, int irq_g0, int irq_l0, int irq_l1);
 
 struct map_desc;
 void exynos_init_io(void);
-void exynos4_restart(enum reboot_mode mode, const char *cmd);
-void exynos5_restart(enum reboot_mode mode, const char *cmd);
+void exynos_restart(enum reboot_mode mode, const char *cmd);
 void exynos_cpuidle_init(void);
 void exynos_cpufreq_init(void);
 void exynos_init_late(void);
arch/arm/mach-exynos/exynos.c renamed from arch/arm/mach-exynos/common.c +91 -42

178 lines not on this page · raw message

arch/arm/mach-exynos/mach-exynos4-dt.c deleted +0 -53

53 lines not on this page · raw message

arch/arm/mach-exynos/mach-exynos5-dt.c deleted +0 -83

83 lines not on this page · raw message

arch/arm/mach-exynos/regs-pmu.h +0 -1
index 2c15a8fbcb5a..4f6a2560d022 100644
@@ -26,7 +26,6 @@
 #define S5P_USE_STANDBY_WFI0			(1 << 16)
 #define S5P_USE_STANDBY_WFE0			(1 << 24)
 
-#define S5P_SWRESET				S5P_PMUREG(0x0400)
 #define EXYNOS_SWRESET				S5P_PMUREG(0x0400)
 #define EXYNOS5440_SWRESET			S5P_PMUREG(0x00C4)
 
Signature · 1 line
1.7.9.5
#3 lore raw

PATCH 3/4 ARM: EXYNOS: Add generic compatible strings

In reply to Sachin Kamat

Add generic compatible strings for Exynos4 and 5 platforms so that future SoCs can use them if there is nothing extra/specific to be differentiated.

---
 arch/arm/mach-exynos/exynos.c |    2 ++
 1 file changed, 2 insertions(+)
arch/arm/mach-exynos/exynos.c +2 -0
index b6fd40e76936..07884efd3a48 100644
@@ -343,9 +343,11 @@ static void __init exynos_dt_machine_init(void)
 }
 
 static char const *exynos_dt_compat[] __initconst = {
+	"samsung,exynos4",
 	"samsung,exynos4210",
 	"samsung,exynos4212",
 	"samsung,exynos4412",
+	"samsung,exynos5",
 	"samsung,exynos5250",
 	"samsung,exynos5420",
 	"samsung,exynos5440",
Signature · 1 line
1.7.9.5
#4 lore raw

PATCH 4/4 ARM: dts: Update Exynos DT files with generic compatible strings

In reply to Sachin Kamat

Add generic compatible strings to the respective board DT files.

---
 arch/arm/boot/dts/exynos4210-origen.dts         |    2 +-
 arch/arm/boot/dts/exynos4210-smdkv310.dts       |    2 +-
 arch/arm/boot/dts/exynos4210-trats.dts          |    2 +-
 arch/arm/boot/dts/exynos4210-universal_c210.dts |    2 +-
 arch/arm/boot/dts/exynos4210.dtsi               |    2 +-
 arch/arm/boot/dts/exynos4212.dtsi               |    2 +-
 arch/arm/boot/dts/exynos4412-odroidx.dts        |    2 +-
 arch/arm/boot/dts/exynos4412-origen.dts         |    2 +-
 arch/arm/boot/dts/exynos4412-smdk4412.dts       |    2 +-
 arch/arm/boot/dts/exynos4412-tiny4412.dts       |    2 +-
 arch/arm/boot/dts/exynos4412-trats2.dts         |    2 +-
 arch/arm/boot/dts/exynos4412.dtsi               |    2 +-
 arch/arm/boot/dts/exynos5250-arndale.dts        |    2 +-
 arch/arm/boot/dts/exynos5250-smdk5250.dts       |    2 +-
 arch/arm/boot/dts/exynos5250-snow.dts           |    2 +-
 arch/arm/boot/dts/exynos5250.dtsi               |    2 +-
 arch/arm/boot/dts/exynos5420-arndale-octa.dts   |    2 +-
 arch/arm/boot/dts/exynos5420-smdk5420.dts       |    2 +-
 arch/arm/boot/dts/exynos5420.dtsi               |    2 +-
 arch/arm/boot/dts/exynos5440-sd5v1.dts          |    2 +-
 arch/arm/boot/dts/exynos5440-ssdk5440.dts       |    2 +-
 arch/arm/boot/dts/exynos5440.dtsi               |    2 +-
 22 files changed, 22 insertions(+), 22 deletions(-)
arch/arm/boot/dts/exynos4210-origen.dts +1 -1
index 2aa13cb3bbed..72fb11f7ea21 100644
@@ -19,7 +19,7 @@
 
 / {
 	model = "Insignal Origen evaluation board based on Exynos4210";
-	compatible = "insignal,origen", "samsung,exynos4210";
+	compatible = "insignal,origen", "samsung,exynos4210", "samsung,exynos4";
 
 	memory {
 		reg = <0x40000000 0x10000000
arch/arm/boot/dts/exynos4210-smdkv310.dts +1 -1
index 9c01b718d29d..636d16684750 100644
@@ -19,7 +19,7 @@
 
 / {
 	model = "Samsung smdkv310 evaluation board based on Exynos4210";
-	compatible = "samsung,smdkv310", "samsung,exynos4210";
+	compatible = "samsung,smdkv310", "samsung,exynos4210", "samsung,exynos4";
 
 	memory {
 		reg = <0x40000000 0x80000000>;
arch/arm/boot/dts/exynos4210-trats.dts +1 -1
index 63cc571ca307..361cb58052bf 100644
@@ -17,7 +17,7 @@
 
 / {
 	model = "Samsung Trats based on Exynos4210";
-	compatible = "samsung,trats", "samsung,exynos4210";
+	compatible = "samsung,trats", "samsung,exynos4210", "samsung,exynos4";
 
 	memory {
 		reg =  <0x40000000 0x10000000
arch/arm/boot/dts/exynos4210-universal_c210.dts +1 -1
index b893a042e3f7..02f9a05790bc 100644
@@ -17,7 +17,7 @@
 
 / {
 	model = "Samsung Universal C210 based on Exynos4210 rev0";
-	compatible = "samsung,universal_c210", "samsung,exynos4210";
+	compatible = "samsung,universal_c210", "samsung,exynos4210", "samsung,exynos4";
 
 	memory {
 		reg =  <0x40000000 0x10000000
arch/arm/boot/dts/exynos4210.dtsi +1 -1
index b92982b9607e..a3f4bba099e6 100644
@@ -23,7 +23,7 @@
 #include "exynos4210-pinctrl.dtsi"
 
 / {
-	compatible = "samsung,exynos4210";
+	compatible = "samsung,exynos4210", "samsung,exynos4";
 
 	aliases {
 		pinctrl0 = &pinctrl_0;
arch/arm/boot/dts/exynos4212.dtsi +1 -1
index ceefc711793c..3c00e6ec9302 100644
@@ -20,7 +20,7 @@
 #include "exynos4x12.dtsi"
 
 / {
-	compatible = "samsung,exynos4212";
+	compatible = "samsung,exynos4212", "samsung,exynos4";
 
 	combiner: interrupt-controller@10440000 {
 		samsung,combiner-nr = <18>;
arch/arm/boot/dts/exynos4412-odroidx.dts +1 -1
index 12459b01cca3..31db28a4bb33 100644
@@ -16,7 +16,7 @@
 
 / {
 	model = "Hardkernel ODROID-X board based on Exynos4412";
-	compatible = "hardkernel,odroid-x", "samsung,exynos4412";
+	compatible = "hardkernel,odroid-x", "samsung,exynos4412", "samsung,exynos4";
 
 	memory {
 		reg = <0x40000000 0x40000000>;
arch/arm/boot/dts/exynos4412-origen.dts +1 -1
index 388f03579661..e2c0dcab4d81 100644
@@ -17,7 +17,7 @@
 
 / {
 	model = "Insignal Origen evaluation board based on Exynos4412";
-	compatible = "insignal,origen4412", "samsung,exynos4412";
+	compatible = "insignal,origen4412", "samsung,exynos4412", "samsung,exynos4";
 
 	memory {
 		reg = <0x40000000 0x40000000>;
arch/arm/boot/dts/exynos4412-smdk4412.dts +1 -1
index ad316a1ee9e0..ded0b70f7644 100644
@@ -17,7 +17,7 @@
 
 / {
 	model = "Samsung SMDK evaluation board based on Exynos4412";
-	compatible = "samsung,smdk4412", "samsung,exynos4412";
+	compatible = "samsung,smdk4412", "samsung,exynos4412", "samsung,exynos4";
 
 	memory {
 		reg = <0x40000000 0x40000000>;
arch/arm/boot/dts/exynos4412-tiny4412.dts +1 -1
index 0a9831256b33..ea6929d9c621 100644
@@ -16,7 +16,7 @@
 
 / {
 	model = "FriendlyARM TINY4412 board based on Exynos4412";
-	compatible = "friendlyarm,tiny4412", "samsung,exynos4412";
+	compatible = "friendlyarm,tiny4412", "samsung,exynos4412", "samsung,exynos4";
 
 	memory {
 		reg = <0x40000000 0x40000000>;
arch/arm/boot/dts/exynos4412-trats2.dts +1 -1
index 322850640f43..c16b3159b813 100644
@@ -17,7 +17,7 @@
 
 / {
 	model = "Samsung Trats 2 based on Exynos4412";
-	compatible = "samsung,trats2", "samsung,exynos4412";
+	compatible = "samsung,trats2", "samsung,exynos4412", "samsung,exynos4";
 
 	aliases {
 		i2c8 = &i2c_ak8975;
arch/arm/boot/dts/exynos4412.dtsi +1 -1
index a40b6e20e92f..15d3c0ac2f5f 100644
@@ -20,7 +20,7 @@
 #include "exynos4x12.dtsi"
 
 / {
-	compatible = "samsung,exynos4412";
+	compatible = "samsung,exynos4412", "samsung,exynos4";
 
 	combiner: interrupt-controller at 10440000 {
 		samsung,combiner-nr = <20>;
arch/arm/boot/dts/exynos5250-arndale.dts +1 -1
index 97eef405cfbe..090f9830b129 100644
@@ -15,7 +15,7 @@
 
 / {
 	model = "Insignal Arndale evaluation board based on EXYNOS5250";
-	compatible = "insignal,arndale", "samsung,exynos5250";
+	compatible = "insignal,arndale", "samsung,exynos5250", "samsung,exynos5";
 
 	memory {
 		reg = <0x40000000 0x80000000>;
arch/arm/boot/dts/exynos5250-smdk5250.dts +1 -1
index 140de8563e94..a794a705d404 100644
@@ -14,7 +14,7 @@
 
 / {
 	model = "SAMSUNG SMDK5250 board based on EXYNOS5250";
-	compatible = "samsung,smdk5250", "samsung,exynos5250";
+	compatible = "samsung,smdk5250", "samsung,exynos5250", "samsung,exynos5";
 
 	aliases {
 	};
arch/arm/boot/dts/exynos5250-snow.dts +1 -1
index b13bf499f5e2..1ce1088a00fb 100644
@@ -14,7 +14,7 @@
 
 / {
 	model = "Google Snow";
-	compatible = "google,snow", "samsung,exynos5250";
+	compatible = "google,snow", "samsung,exynos5250", "samsung,exynos5";
 
 	aliases {
 		i2c104 = &i2c_104;
arch/arm/boot/dts/exynos5250.dtsi +1 -1
index abfceadbb1ea..3c547595a66f 100644
@@ -24,7 +24,7 @@
 #include <dt-bindings/clk/exynos-audss-clk.h>
 
 / {
-	compatible = "samsung,exynos5250";
+	compatible = "samsung,exynos5250", "samsung,exynos5";
 
 	aliases {
 		spi0 = &spi_0;
arch/arm/boot/dts/exynos5420-arndale-octa.dts +1 -1
index f509e8fc290f..159412011f8d 100644
@@ -16,7 +16,7 @@
 
 / {
 	model = "Insignal Arndale Octa evaluation board based on EXYNOS5420";
-	compatible = "insignal,arndale-octa", "samsung,exynos5420";
+	compatible = "insignal,arndale-octa", "samsung,exynos5420", "samsung,exynos5";
 
 	memory {
 		reg = <0x20000000 0x80000000>;
arch/arm/boot/dts/exynos5420-smdk5420.dts +1 -1
index ae1ee0470fca..69104850eb5e 100644
@@ -14,7 +14,7 @@
 
 / {
 	model = "Samsung SMDK5420 board based on EXYNOS5420";
-	compatible = "samsung,smdk5420", "samsung,exynos5420";
+	compatible = "samsung,smdk5420", "samsung,exynos5420", "samsung,exynos5";
 
 	memory {
 		reg = <0x20000000 0x80000000>;
arch/arm/boot/dts/exynos5420.dtsi +1 -1
index ea401d3b58e3..b9de97c24e64 100644
@@ -20,7 +20,7 @@
 #include <dt-bindings/clk/exynos-audss-clk.h>
 
 / {
-	compatible = "samsung,exynos5420";
+	compatible = "samsung,exynos5420", "samsung,exynos5";
 
 	aliases {
 		mshc0 = &mmc_0;
arch/arm/boot/dts/exynos5440-sd5v1.dts +1 -1
index 777fb1c2c70f..268609a42b2c 100644
@@ -14,7 +14,7 @@
 
 / {
 	model = "SAMSUNG SD5v1 board based on EXYNOS5440";
-	compatible = "samsung,sd5v1", "samsung,exynos5440";
+	compatible = "samsung,sd5v1", "samsung,exynos5440", "samsung,exynos5";
 
 	chosen {
 		bootargs = "root=/dev/sda2 rw rootwait ignore_loglevel earlyprintk no_console_suspend mem=2048M at 0x80000000 mem=6144M at 0x100000000 console=ttySAC0,115200";
arch/arm/boot/dts/exynos5440-ssdk5440.dts +1 -1
index d58cb787061a..ff55dac6e219 100644
@@ -14,7 +14,7 @@
 
 / {
 	model = "SAMSUNG SSDK5440 board based on EXYNOS5440";
-	compatible = "samsung,ssdk5440", "samsung,exynos5440";
+	compatible = "samsung,ssdk5440", "samsung,exynos5440", "samsung,exynos5";
 
 	chosen {
 		bootargs = "root=/dev/sda2 rw rootwait ignore_loglevel earlyprintk no_console_suspend mem=2048M at 0x80000000 mem=6144M at 0x100000000 console=ttySAC0,115200";
arch/arm/boot/dts/exynos5440.dtsi +1 -1
index 75c7b89cec2f..84f77c2fe4d4 100644
@@ -13,7 +13,7 @@
 #include "skeleton.dtsi"
 
 / {
-	compatible = "samsung,exynos5440";
+	compatible = "samsung,exynos5440", "samsung,exynos5";
 
 	interrupt-parent = <&gic>;
 
Signature · 1 line
1.7.9.5
#5 lore raw

cover Consolidate Exynos machine code

In reply to Sachin Kamat
Quoted 7 lines · Sachin Kamat

This patch series consolidates the Exynos machine code and common code into a single file to avoid code duplication and introduces generic compatible strings for Exynos4 and 5 SoC series.

Complete discussion and motivation for this series is found here:
http://comments.gmane.org/gmane.linux.kernel.samsung-soc/27268

Quoted 8 lines

This series is based on the latest linux-next and depends on
1. Tomasz Figa's PM consolidation series 1 and 2
2. Patch: ARM: SAMSUNG: Reorganize calls to reserve memory for MFC
http://www.spinics.net/lists/linux-samsung-soc/msg25501.html
3. Patch: ARM: EXYNOS: Add support to reserve memory for MFC-v7
http://www.spinics.net/lists/arm-kernel/msg315940.html
4. Kconfig and CPU init Consolidation series
http://article.gmane.org/gmane.linux.kernel.samsung-soc/28216

#6 lore raw

cover Consolidate Exynos machine code

Quoted 9 lines · Arnd Bergmann
Quoted 7 lines · Sachin Kamat

This patch series consolidates the Exynos machine code and common code into a single file to avoid code duplication and introduces generic compatible strings for Exynos4 and 5 SoC series.

Complete discussion and motivation for this series is found here:
http://comments.gmane.org/gmane.linux.kernel.samsung-soc/27268

Quoted 9 lines
Quoted 8 lines

This series is based on the latest linux-next and depends on
1. Tomasz Figa's PM consolidation series 1 and 2
2. Patch: ARM: SAMSUNG: Reorganize calls to reserve memory for MFC
http://www.spinics.net/lists/linux-samsung-soc/msg25501.html
3. Patch: ARM: EXYNOS: Add support to reserve memory for MFC-v7
http://www.spinics.net/lists/arm-kernel/msg315940.html
4. Kconfig and CPU init Consolidation series
http://article.gmane.org/gmane.linux.kernel.samsung-soc/28216

Hi Sachin,

Looks good to me.

Quoted 1 line

Arnd, thanks.

Let me sort this series out for v3.15 then I'll send pull-request to arm-soc with other dependencies tonight.

Thanks,
Kukjin