diff options
34 files changed, 166 insertions, 303 deletions
diff --git a/arch/arm/boot/dts/exynos4210-origen.dts b/arch/arm/boot/dts/exynos4210-origen.dts index 2aa13cb3bbed..72fb11f7ea21 100644 --- a/arch/arm/boot/dts/exynos4210-origen.dts +++ b/arch/arm/boot/dts/exynos4210-origen.dts | |||
@@ -19,7 +19,7 @@ | |||
19 | 19 | ||
20 | / { | 20 | / { |
21 | model = "Insignal Origen evaluation board based on Exynos4210"; | 21 | model = "Insignal Origen evaluation board based on Exynos4210"; |
22 | compatible = "insignal,origen", "samsung,exynos4210"; | 22 | compatible = "insignal,origen", "samsung,exynos4210", "samsung,exynos4"; |
23 | 23 | ||
24 | memory { | 24 | memory { |
25 | reg = <0x40000000 0x10000000 | 25 | reg = <0x40000000 0x10000000 |
diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts b/arch/arm/boot/dts/exynos4210-smdkv310.dts index 9c01b718d29d..636d16684750 100644 --- a/arch/arm/boot/dts/exynos4210-smdkv310.dts +++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts | |||
@@ -19,7 +19,7 @@ | |||
19 | 19 | ||
20 | / { | 20 | / { |
21 | model = "Samsung smdkv310 evaluation board based on Exynos4210"; | 21 | model = "Samsung smdkv310 evaluation board based on Exynos4210"; |
22 | compatible = "samsung,smdkv310", "samsung,exynos4210"; | 22 | compatible = "samsung,smdkv310", "samsung,exynos4210", "samsung,exynos4"; |
23 | 23 | ||
24 | memory { | 24 | memory { |
25 | reg = <0x40000000 0x80000000>; | 25 | reg = <0x40000000 0x80000000>; |
diff --git a/arch/arm/boot/dts/exynos4210-trats.dts b/arch/arm/boot/dts/exynos4210-trats.dts index 63cc571ca307..361cb58052bf 100644 --- a/arch/arm/boot/dts/exynos4210-trats.dts +++ b/arch/arm/boot/dts/exynos4210-trats.dts | |||
@@ -17,7 +17,7 @@ | |||
17 | 17 | ||
18 | / { | 18 | / { |
19 | model = "Samsung Trats based on Exynos4210"; | 19 | model = "Samsung Trats based on Exynos4210"; |
20 | compatible = "samsung,trats", "samsung,exynos4210"; | 20 | compatible = "samsung,trats", "samsung,exynos4210", "samsung,exynos4"; |
21 | 21 | ||
22 | memory { | 22 | memory { |
23 | reg = <0x40000000 0x10000000 | 23 | reg = <0x40000000 0x10000000 |
diff --git a/arch/arm/boot/dts/exynos4210-universal_c210.dts b/arch/arm/boot/dts/exynos4210-universal_c210.dts index d2e3f5f5916d..27d3b70ee9e3 100644 --- a/arch/arm/boot/dts/exynos4210-universal_c210.dts +++ b/arch/arm/boot/dts/exynos4210-universal_c210.dts | |||
@@ -17,7 +17,7 @@ | |||
17 | 17 | ||
18 | / { | 18 | / { |
19 | model = "Samsung Universal C210 based on Exynos4210 rev0"; | 19 | model = "Samsung Universal C210 based on Exynos4210 rev0"; |
20 | compatible = "samsung,universal_c210", "samsung,exynos4210"; | 20 | compatible = "samsung,universal_c210", "samsung,exynos4210", "samsung,exynos4"; |
21 | 21 | ||
22 | memory { | 22 | memory { |
23 | reg = <0x40000000 0x10000000 | 23 | reg = <0x40000000 0x10000000 |
diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi index cb0e768dc6d4..cacf6140dd2f 100644 --- a/arch/arm/boot/dts/exynos4210.dtsi +++ b/arch/arm/boot/dts/exynos4210.dtsi | |||
@@ -23,7 +23,7 @@ | |||
23 | #include "exynos4210-pinctrl.dtsi" | 23 | #include "exynos4210-pinctrl.dtsi" |
24 | 24 | ||
25 | / { | 25 | / { |
26 | compatible = "samsung,exynos4210"; | 26 | compatible = "samsung,exynos4210", "samsung,exynos4"; |
27 | 27 | ||
28 | aliases { | 28 | aliases { |
29 | pinctrl0 = &pinctrl_0; | 29 | pinctrl0 = &pinctrl_0; |
diff --git a/arch/arm/boot/dts/exynos4212.dtsi b/arch/arm/boot/dts/exynos4212.dtsi index ceefc711793c..3c00e6ec9302 100644 --- a/arch/arm/boot/dts/exynos4212.dtsi +++ b/arch/arm/boot/dts/exynos4212.dtsi | |||
@@ -20,7 +20,7 @@ | |||
20 | #include "exynos4x12.dtsi" | 20 | #include "exynos4x12.dtsi" |
21 | 21 | ||
22 | / { | 22 | / { |
23 | compatible = "samsung,exynos4212"; | 23 | compatible = "samsung,exynos4212", "samsung,exynos4"; |
24 | 24 | ||
25 | combiner: interrupt-controller@10440000 { | 25 | combiner: interrupt-controller@10440000 { |
26 | samsung,combiner-nr = <18>; | 26 | samsung,combiner-nr = <18>; |
diff --git a/arch/arm/boot/dts/exynos4412-odroidx.dts b/arch/arm/boot/dts/exynos4412-odroidx.dts index 12459b01cca3..31db28a4bb33 100644 --- a/arch/arm/boot/dts/exynos4412-odroidx.dts +++ b/arch/arm/boot/dts/exynos4412-odroidx.dts | |||
@@ -16,7 +16,7 @@ | |||
16 | 16 | ||
17 | / { | 17 | / { |
18 | model = "Hardkernel ODROID-X board based on Exynos4412"; | 18 | model = "Hardkernel ODROID-X board based on Exynos4412"; |
19 | compatible = "hardkernel,odroid-x", "samsung,exynos4412"; | 19 | compatible = "hardkernel,odroid-x", "samsung,exynos4412", "samsung,exynos4"; |
20 | 20 | ||
21 | memory { | 21 | memory { |
22 | reg = <0x40000000 0x40000000>; | 22 | reg = <0x40000000 0x40000000>; |
diff --git a/arch/arm/boot/dts/exynos4412-origen.dts b/arch/arm/boot/dts/exynos4412-origen.dts index 388f03579661..e2c0dcab4d81 100644 --- a/arch/arm/boot/dts/exynos4412-origen.dts +++ b/arch/arm/boot/dts/exynos4412-origen.dts | |||
@@ -17,7 +17,7 @@ | |||
17 | 17 | ||
18 | / { | 18 | / { |
19 | model = "Insignal Origen evaluation board based on Exynos4412"; | 19 | model = "Insignal Origen evaluation board based on Exynos4412"; |
20 | compatible = "insignal,origen4412", "samsung,exynos4412"; | 20 | compatible = "insignal,origen4412", "samsung,exynos4412", "samsung,exynos4"; |
21 | 21 | ||
22 | memory { | 22 | memory { |
23 | reg = <0x40000000 0x40000000>; | 23 | reg = <0x40000000 0x40000000>; |
diff --git a/arch/arm/boot/dts/exynos4412-smdk4412.dts b/arch/arm/boot/dts/exynos4412-smdk4412.dts index ad316a1ee9e0..ded0b70f7644 100644 --- a/arch/arm/boot/dts/exynos4412-smdk4412.dts +++ b/arch/arm/boot/dts/exynos4412-smdk4412.dts | |||
@@ -17,7 +17,7 @@ | |||
17 | 17 | ||
18 | / { | 18 | / { |
19 | model = "Samsung SMDK evaluation board based on Exynos4412"; | 19 | model = "Samsung SMDK evaluation board based on Exynos4412"; |
20 | compatible = "samsung,smdk4412", "samsung,exynos4412"; | 20 | compatible = "samsung,smdk4412", "samsung,exynos4412", "samsung,exynos4"; |
21 | 21 | ||
22 | memory { | 22 | memory { |
23 | reg = <0x40000000 0x40000000>; | 23 | reg = <0x40000000 0x40000000>; |
diff --git a/arch/arm/boot/dts/exynos4412-tiny4412.dts b/arch/arm/boot/dts/exynos4412-tiny4412.dts index 0a9831256b33..ea6929d9c621 100644 --- a/arch/arm/boot/dts/exynos4412-tiny4412.dts +++ b/arch/arm/boot/dts/exynos4412-tiny4412.dts | |||
@@ -16,7 +16,7 @@ | |||
16 | 16 | ||
17 | / { | 17 | / { |
18 | model = "FriendlyARM TINY4412 board based on Exynos4412"; | 18 | model = "FriendlyARM TINY4412 board based on Exynos4412"; |
19 | compatible = "friendlyarm,tiny4412", "samsung,exynos4412"; | 19 | compatible = "friendlyarm,tiny4412", "samsung,exynos4412", "samsung,exynos4"; |
20 | 20 | ||
21 | memory { | 21 | memory { |
22 | reg = <0x40000000 0x40000000>; | 22 | reg = <0x40000000 0x40000000>; |
diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts index 322850640f43..c16b3159b813 100644 --- a/arch/arm/boot/dts/exynos4412-trats2.dts +++ b/arch/arm/boot/dts/exynos4412-trats2.dts | |||
@@ -17,7 +17,7 @@ | |||
17 | 17 | ||
18 | / { | 18 | / { |
19 | model = "Samsung Trats 2 based on Exynos4412"; | 19 | model = "Samsung Trats 2 based on Exynos4412"; |
20 | compatible = "samsung,trats2", "samsung,exynos4412"; | 20 | compatible = "samsung,trats2", "samsung,exynos4412", "samsung,exynos4"; |
21 | 21 | ||
22 | aliases { | 22 | aliases { |
23 | i2c8 = &i2c_ak8975; | 23 | i2c8 = &i2c_ak8975; |
diff --git a/arch/arm/boot/dts/exynos4412.dtsi b/arch/arm/boot/dts/exynos4412.dtsi index a40b6e20e92f..15d3c0ac2f5f 100644 --- a/arch/arm/boot/dts/exynos4412.dtsi +++ b/arch/arm/boot/dts/exynos4412.dtsi | |||
@@ -20,7 +20,7 @@ | |||
20 | #include "exynos4x12.dtsi" | 20 | #include "exynos4x12.dtsi" |
21 | 21 | ||
22 | / { | 22 | / { |
23 | compatible = "samsung,exynos4412"; | 23 | compatible = "samsung,exynos4412", "samsung,exynos4"; |
24 | 24 | ||
25 | combiner: interrupt-controller@10440000 { | 25 | combiner: interrupt-controller@10440000 { |
26 | samsung,combiner-nr = <20>; | 26 | samsung,combiner-nr = <20>; |
diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts index 9a78d96f8477..e1f5c7a1ab11 100644 --- a/arch/arm/boot/dts/exynos5250-arndale.dts +++ b/arch/arm/boot/dts/exynos5250-arndale.dts | |||
@@ -15,7 +15,7 @@ | |||
15 | 15 | ||
16 | / { | 16 | / { |
17 | model = "Insignal Arndale evaluation board based on EXYNOS5250"; | 17 | model = "Insignal Arndale evaluation board based on EXYNOS5250"; |
18 | compatible = "insignal,arndale", "samsung,exynos5250"; | 18 | compatible = "insignal,arndale", "samsung,exynos5250", "samsung,exynos5"; |
19 | 19 | ||
20 | memory { | 20 | memory { |
21 | reg = <0x40000000 0x80000000>; | 21 | reg = <0x40000000 0x80000000>; |
diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts index 140de8563e94..a794a705d404 100644 --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | / { | 15 | / { |
16 | model = "SAMSUNG SMDK5250 board based on EXYNOS5250"; | 16 | model = "SAMSUNG SMDK5250 board based on EXYNOS5250"; |
17 | compatible = "samsung,smdk5250", "samsung,exynos5250"; | 17 | compatible = "samsung,smdk5250", "samsung,exynos5250", "samsung,exynos5"; |
18 | 18 | ||
19 | aliases { | 19 | aliases { |
20 | }; | 20 | }; |
diff --git a/arch/arm/boot/dts/exynos5250-snow.dts b/arch/arm/boot/dts/exynos5250-snow.dts index b13bf499f5e2..1ce1088a00fb 100644 --- a/arch/arm/boot/dts/exynos5250-snow.dts +++ b/arch/arm/boot/dts/exynos5250-snow.dts | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | / { | 15 | / { |
16 | model = "Google Snow"; | 16 | model = "Google Snow"; |
17 | compatible = "google,snow", "samsung,exynos5250"; | 17 | compatible = "google,snow", "samsung,exynos5250", "samsung,exynos5"; |
18 | 18 | ||
19 | aliases { | 19 | aliases { |
20 | i2c104 = &i2c_104; | 20 | i2c104 = &i2c_104; |
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index fdeed7c29ac9..37423314a028 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi | |||
@@ -21,10 +21,10 @@ | |||
21 | #include "exynos5.dtsi" | 21 | #include "exynos5.dtsi" |
22 | #include "exynos5250-pinctrl.dtsi" | 22 | #include "exynos5250-pinctrl.dtsi" |
23 | 23 | ||
24 | #include <dt-bindings/clk/exynos-audss-clk.h> | 24 | #include <dt-bindings/clock/exynos-audss-clk.h> |
25 | 25 | ||
26 | / { | 26 | / { |
27 | compatible = "samsung,exynos5250"; | 27 | compatible = "samsung,exynos5250", "samsung,exynos5"; |
28 | 28 | ||
29 | aliases { | 29 | aliases { |
30 | spi0 = &spi_0; | 30 | spi0 = &spi_0; |
diff --git a/arch/arm/boot/dts/exynos5420-arndale-octa.dts b/arch/arm/boot/dts/exynos5420-arndale-octa.dts index df975b5df881..80a3bf4c5986 100644 --- a/arch/arm/boot/dts/exynos5420-arndale-octa.dts +++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts | |||
@@ -16,7 +16,7 @@ | |||
16 | 16 | ||
17 | / { | 17 | / { |
18 | model = "Insignal Arndale Octa evaluation board based on EXYNOS5420"; | 18 | model = "Insignal Arndale Octa evaluation board based on EXYNOS5420"; |
19 | compatible = "insignal,arndale-octa", "samsung,exynos5420"; | 19 | compatible = "insignal,arndale-octa", "samsung,exynos5420", "samsung,exynos5"; |
20 | 20 | ||
21 | memory { | 21 | memory { |
22 | reg = <0x20000000 0x80000000>; | 22 | reg = <0x20000000 0x80000000>; |
diff --git a/arch/arm/boot/dts/exynos5420-smdk5420.dts b/arch/arm/boot/dts/exynos5420-smdk5420.dts index ae1ee0470fca..69104850eb5e 100644 --- a/arch/arm/boot/dts/exynos5420-smdk5420.dts +++ b/arch/arm/boot/dts/exynos5420-smdk5420.dts | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | / { | 15 | / { |
16 | model = "Samsung SMDK5420 board based on EXYNOS5420"; | 16 | model = "Samsung SMDK5420 board based on EXYNOS5420"; |
17 | compatible = "samsung,smdk5420", "samsung,exynos5420"; | 17 | compatible = "samsung,smdk5420", "samsung,exynos5420", "samsung,exynos5"; |
18 | 18 | ||
19 | memory { | 19 | memory { |
20 | reg = <0x20000000 0x80000000>; | 20 | reg = <0x20000000 0x80000000>; |
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi index 82071154eb84..c3a9a66c5767 100644 --- a/arch/arm/boot/dts/exynos5420.dtsi +++ b/arch/arm/boot/dts/exynos5420.dtsi | |||
@@ -17,10 +17,10 @@ | |||
17 | #include "exynos5.dtsi" | 17 | #include "exynos5.dtsi" |
18 | #include "exynos5420-pinctrl.dtsi" | 18 | #include "exynos5420-pinctrl.dtsi" |
19 | 19 | ||
20 | #include <dt-bindings/clk/exynos-audss-clk.h> | 20 | #include <dt-bindings/clock/exynos-audss-clk.h> |
21 | 21 | ||
22 | / { | 22 | / { |
23 | compatible = "samsung,exynos5420"; | 23 | compatible = "samsung,exynos5420", "samsung,exynos5"; |
24 | 24 | ||
25 | aliases { | 25 | aliases { |
26 | mshc0 = &mmc_0; | 26 | mshc0 = &mmc_0; |
diff --git a/arch/arm/boot/dts/exynos5440-sd5v1.dts b/arch/arm/boot/dts/exynos5440-sd5v1.dts index 777fb1c2c70f..268609a42b2c 100644 --- a/arch/arm/boot/dts/exynos5440-sd5v1.dts +++ b/arch/arm/boot/dts/exynos5440-sd5v1.dts | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | / { | 15 | / { |
16 | model = "SAMSUNG SD5v1 board based on EXYNOS5440"; | 16 | model = "SAMSUNG SD5v1 board based on EXYNOS5440"; |
17 | compatible = "samsung,sd5v1", "samsung,exynos5440"; | 17 | compatible = "samsung,sd5v1", "samsung,exynos5440", "samsung,exynos5"; |
18 | 18 | ||
19 | chosen { | 19 | chosen { |
20 | bootargs = "root=/dev/sda2 rw rootwait ignore_loglevel earlyprintk no_console_suspend mem=2048M@0x80000000 mem=6144M@0x100000000 console=ttySAC0,115200"; | 20 | bootargs = "root=/dev/sda2 rw rootwait ignore_loglevel earlyprintk no_console_suspend mem=2048M@0x80000000 mem=6144M@0x100000000 console=ttySAC0,115200"; |
diff --git a/arch/arm/boot/dts/exynos5440-ssdk5440.dts b/arch/arm/boot/dts/exynos5440-ssdk5440.dts index d58cb787061a..ff55dac6e219 100644 --- a/arch/arm/boot/dts/exynos5440-ssdk5440.dts +++ b/arch/arm/boot/dts/exynos5440-ssdk5440.dts | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | / { | 15 | / { |
16 | model = "SAMSUNG SSDK5440 board based on EXYNOS5440"; | 16 | model = "SAMSUNG SSDK5440 board based on EXYNOS5440"; |
17 | compatible = "samsung,ssdk5440", "samsung,exynos5440"; | 17 | compatible = "samsung,ssdk5440", "samsung,exynos5440", "samsung,exynos5"; |
18 | 18 | ||
19 | chosen { | 19 | chosen { |
20 | bootargs = "root=/dev/sda2 rw rootwait ignore_loglevel earlyprintk no_console_suspend mem=2048M@0x80000000 mem=6144M@0x100000000 console=ttySAC0,115200"; | 20 | bootargs = "root=/dev/sda2 rw rootwait ignore_loglevel earlyprintk no_console_suspend mem=2048M@0x80000000 mem=6144M@0x100000000 console=ttySAC0,115200"; |
diff --git a/arch/arm/boot/dts/exynos5440.dtsi b/arch/arm/boot/dts/exynos5440.dtsi index 75c7b89cec2f..84f77c2fe4d4 100644 --- a/arch/arm/boot/dts/exynos5440.dtsi +++ b/arch/arm/boot/dts/exynos5440.dtsi | |||
@@ -13,7 +13,7 @@ | |||
13 | #include "skeleton.dtsi" | 13 | #include "skeleton.dtsi" |
14 | 14 | ||
15 | / { | 15 | / { |
16 | compatible = "samsung,exynos5440"; | 16 | compatible = "samsung,exynos5440", "samsung,exynos5"; |
17 | 17 | ||
18 | interrupt-parent = <&gic>; | 18 | interrupt-parent = <&gic>; |
19 | 19 | ||
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile index 58fe9e6f542f..a656dbe3b78c 100644 --- a/arch/arm/mach-exynos/Makefile +++ b/arch/arm/mach-exynos/Makefile | |||
@@ -12,7 +12,7 @@ obj- := | |||
12 | 12 | ||
13 | # Core | 13 | # Core |
14 | 14 | ||
15 | obj-$(CONFIG_ARCH_EXYNOS) += common.o | 15 | obj-$(CONFIG_ARCH_EXYNOS) += exynos.o |
16 | 16 | ||
17 | obj-$(CONFIG_PM_SLEEP) += pm.o sleep.o | 17 | obj-$(CONFIG_PM_SLEEP) += pm.o sleep.o |
18 | obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o | 18 | obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o |
@@ -29,8 +29,3 @@ obj-$(CONFIG_ARCH_EXYNOS) += firmware.o | |||
29 | 29 | ||
30 | plus_sec := $(call as-instr,.arch_extension sec,+sec) | 30 | plus_sec := $(call as-instr,.arch_extension sec,+sec) |
31 | AFLAGS_exynos-smc.o :=-Wa,-march=armv7-a$(plus_sec) | 31 | AFLAGS_exynos-smc.o :=-Wa,-march=armv7-a$(plus_sec) |
32 | |||
33 | # machine support | ||
34 | |||
35 | obj-$(CONFIG_ARCH_EXYNOS4) += mach-exynos4-dt.o | ||
36 | obj-$(CONFIG_ARCH_EXYNOS5) += mach-exynos5-dt.o | ||
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h index aba6a2ad7d1b..9ef3f83efaff 100644 --- a/arch/arm/mach-exynos/common.h +++ b/arch/arm/mach-exynos/common.h | |||
@@ -19,8 +19,7 @@ void mct_init(void __iomem *base, int irq_g0, int irq_l0, int irq_l1); | |||
19 | 19 | ||
20 | struct map_desc; | 20 | struct map_desc; |
21 | void exynos_init_io(void); | 21 | void exynos_init_io(void); |
22 | void exynos4_restart(enum reboot_mode mode, const char *cmd); | 22 | void exynos_restart(enum reboot_mode mode, const char *cmd); |
23 | void exynos5_restart(enum reboot_mode mode, const char *cmd); | ||
24 | void exynos_cpuidle_init(void); | 23 | void exynos_cpuidle_init(void); |
25 | void exynos_cpufreq_init(void); | 24 | void exynos_cpufreq_init(void); |
26 | void exynos_init_late(void); | 25 | void exynos_init_late(void); |
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/exynos.c index e98ddadc5f74..4987ec7711c3 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/exynos.c | |||
@@ -1,105 +1,40 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. | 2 | * SAMSUNG EXYNOS Flattened Device Tree enabled machine |
3 | * http://www.samsung.com | ||
4 | * | 3 | * |
5 | * Common Codes for EXYNOS | 4 | * Copyright (c) 2010-2014 Samsung Electronics Co., Ltd. |
5 | * http://www.samsung.com | ||
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or modify | 7 | * This program is free software; you can redistribute it and/or modify |
8 | * it under the terms of the GNU General Public License version 2 as | 8 | * it under the terms of the GNU General Public License version 2 as |
9 | * published by the Free Software Foundation. | 9 | * published by the Free Software Foundation. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/kernel.h> | 12 | #include <linux/init.h> |
13 | #include <linux/bitops.h> | ||
14 | #include <linux/interrupt.h> | ||
15 | #include <linux/irq.h> | ||
16 | #include <linux/irqchip.h> | ||
17 | #include <linux/io.h> | 13 | #include <linux/io.h> |
18 | #include <linux/device.h> | 14 | #include <linux/kernel.h> |
19 | #include <linux/gpio.h> | ||
20 | #include <clocksource/samsung_pwm.h> | ||
21 | #include <linux/sched.h> | ||
22 | #include <linux/serial_core.h> | ||
23 | #include <linux/serial_s3c.h> | 15 | #include <linux/serial_s3c.h> |
24 | #include <linux/of.h> | 16 | #include <linux/of.h> |
25 | #include <linux/of_fdt.h> | ||
26 | #include <linux/of_irq.h> | ||
27 | #include <linux/pm_domain.h> | ||
28 | #include <linux/export.h> | ||
29 | #include <linux/irqdomain.h> | ||
30 | #include <linux/of_address.h> | 17 | #include <linux/of_address.h> |
31 | #include <linux/irqchip/arm-gic.h> | 18 | #include <linux/of_fdt.h> |
32 | #include <linux/irqchip/chained_irq.h> | 19 | #include <linux/of_platform.h> |
33 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/pm_domain.h> | ||
34 | 22 | ||
35 | #include <asm/proc-fns.h> | 23 | #include <asm/cacheflush.h> |
36 | #include <asm/exception.h> | ||
37 | #include <asm/hardware/cache-l2x0.h> | 24 | #include <asm/hardware/cache-l2x0.h> |
25 | #include <asm/mach/arch.h> | ||
38 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
39 | #include <asm/mach/irq.h> | 27 | #include <asm/memory.h> |
40 | #include <asm/cacheflush.h> | ||
41 | 28 | ||
42 | #include <plat/cpu.h> | 29 | #include <plat/cpu.h> |
43 | #include <plat/pm.h> | ||
44 | 30 | ||
45 | #include "common.h" | 31 | #include "common.h" |
32 | #include "mfc.h" | ||
46 | #include "regs-pmu.h" | 33 | #include "regs-pmu.h" |
47 | 34 | ||
48 | #define L2_AUX_VAL 0x7C470001 | 35 | #define L2_AUX_VAL 0x7C470001 |
49 | #define L2_AUX_MASK 0xC200ffff | 36 | #define L2_AUX_MASK 0xC200ffff |
50 | 37 | ||
51 | static const char name_exynos4210[] = "EXYNOS4210"; | ||
52 | static const char name_exynos4212[] = "EXYNOS4212"; | ||
53 | static const char name_exynos4412[] = "EXYNOS4412"; | ||
54 | static const char name_exynos5250[] = "EXYNOS5250"; | ||
55 | static const char name_exynos5420[] = "EXYNOS5420"; | ||
56 | static const char name_exynos5440[] = "EXYNOS5440"; | ||
57 | |||
58 | static void exynos4_map_io(void); | ||
59 | static void exynos5_map_io(void); | ||
60 | static int exynos_init(void); | ||
61 | |||
62 | static struct cpu_table cpu_ids[] __initdata = { | ||
63 | { | ||
64 | .idcode = EXYNOS4210_CPU_ID, | ||
65 | .idmask = EXYNOS4_CPU_MASK, | ||
66 | .map_io = exynos4_map_io, | ||
67 | .init = exynos_init, | ||
68 | .name = name_exynos4210, | ||
69 | }, { | ||
70 | .idcode = EXYNOS4212_CPU_ID, | ||
71 | .idmask = EXYNOS4_CPU_MASK, | ||
72 | .map_io = exynos4_map_io, | ||
73 | .init = exynos_init, | ||
74 | .name = name_exynos4212, | ||
75 | }, { | ||
76 | .idcode = EXYNOS4412_CPU_ID, | ||
77 | .idmask = EXYNOS4_CPU_MASK, | ||
78 | .map_io = exynos4_map_io, | ||
79 | .init = exynos_init, | ||
80 | .name = name_exynos4412, | ||
81 | }, { | ||
82 | .idcode = EXYNOS5250_SOC_ID, | ||
83 | .idmask = EXYNOS5_SOC_MASK, | ||
84 | .map_io = exynos5_map_io, | ||
85 | .init = exynos_init, | ||
86 | .name = name_exynos5250, | ||
87 | }, { | ||
88 | .idcode = EXYNOS5420_SOC_ID, | ||
89 | .idmask = EXYNOS5_SOC_MASK, | ||
90 | .map_io = exynos5_map_io, | ||
91 | .init = exynos_init, | ||
92 | .name = name_exynos5420, | ||
93 | }, { | ||
94 | .idcode = EXYNOS5440_SOC_ID, | ||
95 | .idmask = EXYNOS5_SOC_MASK, | ||
96 | .init = exynos_init, | ||
97 | .name = name_exynos5440, | ||
98 | }, | ||
99 | }; | ||
100 | |||
101 | /* Initial IO mappings */ | ||
102 | |||
103 | static struct map_desc exynos4_iodesc[] __initdata = { | 38 | static struct map_desc exynos4_iodesc[] __initdata = { |
104 | { | 39 | { |
105 | .virtual = (unsigned long)S3C_VA_SYS, | 40 | .virtual = (unsigned long)S3C_VA_SYS, |
@@ -263,19 +198,11 @@ static struct map_desc exynos5_iodesc[] __initdata = { | |||
263 | }, | 198 | }, |
264 | }; | 199 | }; |
265 | 200 | ||
266 | void exynos4_restart(enum reboot_mode mode, const char *cmd) | 201 | void exynos_restart(enum reboot_mode mode, const char *cmd) |
267 | { | ||
268 | __raw_writel(0x1, S5P_SWRESET); | ||
269 | } | ||
270 | |||
271 | void exynos5_restart(enum reboot_mode mode, const char *cmd) | ||
272 | { | 202 | { |
273 | struct device_node *np; | 203 | struct device_node *np; |
274 | u32 val; | 204 | u32 val = 0x1; |
275 | void __iomem *addr; | 205 | void __iomem *addr = EXYNOS_SWRESET; |
276 | |||
277 | val = 0x1; | ||
278 | addr = EXYNOS_SWRESET; | ||
279 | 206 | ||
280 | if (of_machine_is_compatible("samsung,exynos5440")) { | 207 | if (of_machine_is_compatible("samsung,exynos5440")) { |
281 | u32 status; | 208 | u32 status; |
@@ -346,6 +273,28 @@ static int __init exynos_fdt_map_chipid(unsigned long node, const char *uname, | |||
346 | * | 273 | * |
347 | * register the standard cpu IO areas | 274 | * register the standard cpu IO areas |
348 | */ | 275 | */ |
276 | static void __init exynos_map_io(void) | ||
277 | { | ||
278 | if (soc_is_exynos4()) | ||
279 | iotable_init(exynos4_iodesc, ARRAY_SIZE(exynos4_iodesc)); | ||
280 | |||
281 | if (soc_is_exynos5()) | ||
282 | iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc)); | ||
283 | |||
284 | if (soc_is_exynos4210()) { | ||
285 | if (samsung_rev() == EXYNOS4210_REV_0) | ||
286 | iotable_init(exynos4_iodesc0, | ||
287 | ARRAY_SIZE(exynos4_iodesc0)); | ||
288 | else | ||
289 | iotable_init(exynos4_iodesc1, | ||
290 | ARRAY_SIZE(exynos4_iodesc1)); | ||
291 | iotable_init(exynos4210_iodesc, ARRAY_SIZE(exynos4210_iodesc)); | ||
292 | } | ||
293 | if (soc_is_exynos4212() || soc_is_exynos4412()) | ||
294 | iotable_init(exynos4x12_iodesc, ARRAY_SIZE(exynos4x12_iodesc)); | ||
295 | if (soc_is_exynos5250()) | ||
296 | iotable_init(exynos5250_iodesc, ARRAY_SIZE(exynos5250_iodesc)); | ||
297 | } | ||
349 | 298 | ||
350 | void __init exynos_init_io(void) | 299 | void __init exynos_init_io(void) |
351 | { | 300 | { |
@@ -356,30 +305,7 @@ void __init exynos_init_io(void) | |||
356 | /* detect cpu id and rev. */ | 305 | /* detect cpu id and rev. */ |
357 | s5p_init_cpu(S5P_VA_CHIPID); | 306 | s5p_init_cpu(S5P_VA_CHIPID); |
358 | 307 | ||
359 | s3c_init_cpu(samsung_cpu_id, cpu_ids, ARRAY_SIZE(cpu_ids)); | 308 | exynos_map_io(); |
360 | } | ||
361 | |||
362 | static void __init exynos4_map_io(void) | ||
363 | { | ||
364 | iotable_init(exynos4_iodesc, ARRAY_SIZE(exynos4_iodesc)); | ||
365 | |||
366 | if (soc_is_exynos4210() && samsung_rev() == EXYNOS4210_REV_0) | ||
367 | iotable_init(exynos4_iodesc0, ARRAY_SIZE(exynos4_iodesc0)); | ||
368 | else | ||
369 | iotable_init(exynos4_iodesc1, ARRAY_SIZE(exynos4_iodesc1)); | ||
370 | |||
371 | if (soc_is_exynos4210()) | ||
372 | iotable_init(exynos4210_iodesc, ARRAY_SIZE(exynos4210_iodesc)); | ||
373 | if (soc_is_exynos4212() || soc_is_exynos4412()) | ||
374 | iotable_init(exynos4x12_iodesc, ARRAY_SIZE(exynos4x12_iodesc)); | ||
375 | } | ||
376 | |||
377 | static void __init exynos5_map_io(void) | ||
378 | { | ||
379 | iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc)); | ||
380 | |||
381 | if (soc_is_exynos5250()) | ||
382 | iotable_init(exynos5250_iodesc, ARRAY_SIZE(exynos5250_iodesc)); | ||
383 | } | 309 | } |
384 | 310 | ||
385 | struct bus_type exynos_subsys = { | 311 | struct bus_type exynos_subsys = { |
@@ -387,10 +313,6 @@ struct bus_type exynos_subsys = { | |||
387 | .dev_name = "exynos-core", | 313 | .dev_name = "exynos-core", |
388 | }; | 314 | }; |
389 | 315 | ||
390 | static struct device exynos4_dev = { | ||
391 | .bus = &exynos_subsys, | ||
392 | }; | ||
393 | |||
394 | static int __init exynos_core_init(void) | 316 | static int __init exynos_core_init(void) |
395 | { | 317 | { |
396 | return subsys_system_register(&exynos_subsys, NULL); | 318 | return subsys_system_register(&exynos_subsys, NULL); |
@@ -411,9 +333,77 @@ static int __init exynos4_l2x0_cache_init(void) | |||
411 | } | 333 | } |
412 | early_initcall(exynos4_l2x0_cache_init); | 334 | early_initcall(exynos4_l2x0_cache_init); |
413 | 335 | ||
414 | static int __init exynos_init(void) | 336 | static void __init exynos_dt_machine_init(void) |
415 | { | 337 | { |
416 | printk(KERN_INFO "EXYNOS: Initializing architecture\n"); | 338 | struct device_node *i2c_np; |
339 | const char *i2c_compat = "samsung,s3c2440-i2c"; | ||
340 | unsigned int tmp; | ||
341 | int id; | ||
342 | |||
343 | /* | ||
344 | * Exynos5's legacy i2c controller and new high speed i2c | ||
345 | * controller have muxed interrupt sources. By default the | ||
346 | * interrupts for 4-channel HS-I2C controller are enabled. | ||
347 | * If node for first four channels of legacy i2c controller | ||
348 | * are available then re-configure the interrupts via the | ||
349 | * system register. | ||
350 | */ | ||
351 | if (soc_is_exynos5()) { | ||
352 | for_each_compatible_node(i2c_np, NULL, i2c_compat) { | ||
353 | if (of_device_is_available(i2c_np)) { | ||
354 | id = of_alias_get_id(i2c_np, "i2c"); | ||
355 | if (id < 4) { | ||
356 | tmp = readl(EXYNOS5_SYS_I2C_CFG); | ||
357 | writel(tmp & ~(0x1 << id), | ||
358 | EXYNOS5_SYS_I2C_CFG); | ||
359 | } | ||
360 | } | ||
361 | } | ||
362 | } | ||
417 | 363 | ||
418 | return device_register(&exynos4_dev); | 364 | exynos_cpuidle_init(); |
365 | exynos_cpufreq_init(); | ||
366 | |||
367 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
419 | } | 368 | } |
369 | |||
370 | static char const *exynos_dt_compat[] __initconst = { | ||
371 | "samsung,exynos4", | ||
372 | "samsung,exynos4210", | ||
373 | "samsung,exynos4212", | ||
374 | "samsung,exynos4412", | ||
375 | "samsung,exynos5", | ||
376 | "samsung,exynos5250", | ||
377 | "samsung,exynos5420", | ||
378 | "samsung,exynos5440", | ||
379 | NULL | ||
380 | }; | ||
381 | |||
382 | static void __init exynos_reserve(void) | ||
383 | { | ||
384 | #ifdef CONFIG_S5P_DEV_MFC | ||
385 | int i; | ||
386 | char *mfc_mem[] = { | ||
387 | "samsung,mfc-v5", | ||
388 | "samsung,mfc-v6", | ||
389 | "samsung,mfc-v7", | ||
390 | }; | ||
391 | |||
392 | for (i = 0; i < ARRAY_SIZE(mfc_mem); i++) | ||
393 | if (of_scan_flat_dt(s5p_fdt_alloc_mfc_mem, mfc_mem[i])) | ||
394 | break; | ||
395 | #endif | ||
396 | } | ||
397 | |||
398 | DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened Device Tree)") | ||
399 | /* Maintainer: Thomas Abraham <thomas.abraham@linaro.org> */ | ||
400 | /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */ | ||
401 | .smp = smp_ops(exynos_smp_ops), | ||
402 | .map_io = exynos_init_io, | ||
403 | .init_early = exynos_firmware_init, | ||
404 | .init_machine = exynos_dt_machine_init, | ||
405 | .init_late = exynos_init_late, | ||
406 | .dt_compat = exynos_dt_compat, | ||
407 | .restart = exynos_restart, | ||
408 | .reserve = exynos_reserve, | ||
409 | MACHINE_END | ||
diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c deleted file mode 100644 index d3e54b7644d7..000000000000 --- a/arch/arm/mach-exynos/mach-exynos4-dt.c +++ /dev/null | |||
@@ -1,59 +0,0 @@ | |||
1 | /* | ||
2 | * Samsung's EXYNOS4 flattened device tree enabled machine | ||
3 | * | ||
4 | * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. | ||
5 | * http://www.samsung.com | ||
6 | * Copyright (c) 2010-2011 Linaro Ltd. | ||
7 | * www.linaro.org | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | */ | ||
13 | |||
14 | #include <linux/of_platform.h> | ||
15 | #include <linux/of_fdt.h> | ||
16 | |||
17 | #include <asm/mach/arch.h> | ||
18 | #include <plat/mfc.h> | ||
19 | |||
20 | #include "common.h" | ||
21 | |||
22 | static void __init exynos4_dt_machine_init(void) | ||
23 | { | ||
24 | exynos_cpuidle_init(); | ||
25 | exynos_cpufreq_init(); | ||
26 | |||
27 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
28 | } | ||
29 | |||
30 | static char const *exynos4_dt_compat[] __initdata = { | ||
31 | "samsung,exynos4210", | ||
32 | "samsung,exynos4212", | ||
33 | "samsung,exynos4412", | ||
34 | NULL | ||
35 | }; | ||
36 | |||
37 | static void __init exynos4_reserve(void) | ||
38 | { | ||
39 | #ifdef CONFIG_S5P_DEV_MFC | ||
40 | struct s5p_mfc_dt_meminfo mfc_mem; | ||
41 | |||
42 | /* Reserve memory for MFC only if it's available */ | ||
43 | mfc_mem.compatible = "samsung,mfc-v5"; | ||
44 | if (of_scan_flat_dt(s5p_fdt_find_mfc_mem, &mfc_mem)) | ||
45 | s5p_mfc_reserve_mem(mfc_mem.roff, mfc_mem.rsize, mfc_mem.loff, | ||
46 | mfc_mem.lsize); | ||
47 | #endif | ||
48 | } | ||
49 | DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)") | ||
50 | /* Maintainer: Thomas Abraham <thomas.abraham@linaro.org> */ | ||
51 | .smp = smp_ops(exynos_smp_ops), | ||
52 | .map_io = exynos_init_io, | ||
53 | .init_early = exynos_firmware_init, | ||
54 | .init_machine = exynos4_dt_machine_init, | ||
55 | .init_late = exynos_init_late, | ||
56 | .dt_compat = exynos4_dt_compat, | ||
57 | .restart = exynos4_restart, | ||
58 | .reserve = exynos4_reserve, | ||
59 | MACHINE_END | ||
diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c deleted file mode 100644 index 37ea261f0f6c..000000000000 --- a/arch/arm/mach-exynos/mach-exynos5-dt.c +++ /dev/null | |||
@@ -1,81 +0,0 @@ | |||
1 | /* | ||
2 | * SAMSUNG EXYNOS5250 Flattened Device Tree enabled machine | ||
3 | * | ||
4 | * Copyright (c) 2012 Samsung Electronics Co., Ltd. | ||
5 | * http://www.samsung.com | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | #include <linux/of_platform.h> | ||
13 | #include <linux/of_fdt.h> | ||
14 | #include <linux/io.h> | ||
15 | |||
16 | #include <asm/mach/arch.h> | ||
17 | #include <plat/mfc.h> | ||
18 | |||
19 | #include "common.h" | ||
20 | #include "regs-pmu.h" | ||
21 | |||
22 | static void __init exynos5_dt_machine_init(void) | ||
23 | { | ||
24 | struct device_node *i2c_np; | ||
25 | const char *i2c_compat = "samsung,s3c2440-i2c"; | ||
26 | unsigned int tmp; | ||
27 | |||
28 | /* | ||
29 | * Exynos5's legacy i2c controller and new high speed i2c | ||
30 | * controller have muxed interrupt sources. By default the | ||
31 | * interrupts for 4-channel HS-I2C controller are enabled. | ||
32 | * If node for first four channels of legacy i2c controller | ||
33 | * are available then re-configure the interrupts via the | ||
34 | * system register. | ||
35 | */ | ||
36 | for_each_compatible_node(i2c_np, NULL, i2c_compat) { | ||
37 | if (of_device_is_available(i2c_np)) { | ||
38 | if (of_alias_get_id(i2c_np, "i2c") < 4) { | ||
39 | tmp = readl(EXYNOS5_SYS_I2C_CFG); | ||
40 | writel(tmp & ~(0x1 << of_alias_get_id(i2c_np, "i2c")), | ||
41 | EXYNOS5_SYS_I2C_CFG); | ||
42 | } | ||
43 | } | ||
44 | } | ||
45 | |||
46 | exynos_cpuidle_init(); | ||
47 | exynos_cpufreq_init(); | ||
48 | |||
49 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
50 | } | ||
51 | |||
52 | static char const *exynos5_dt_compat[] __initdata = { | ||
53 | "samsung,exynos5250", | ||
54 | "samsung,exynos5420", | ||
55 | "samsung,exynos5440", | ||
56 | NULL | ||
57 | }; | ||
58 | |||
59 | static void __init exynos5_reserve(void) | ||
60 | { | ||
61 | #ifdef CONFIG_S5P_DEV_MFC | ||
62 | struct s5p_mfc_dt_meminfo mfc_mem; | ||
63 | |||
64 | /* Reserve memory for MFC only if it's available */ | ||
65 | mfc_mem.compatible = "samsung,mfc-v6"; | ||
66 | if (of_scan_flat_dt(s5p_fdt_find_mfc_mem, &mfc_mem)) | ||
67 | s5p_mfc_reserve_mem(mfc_mem.roff, mfc_mem.rsize, mfc_mem.loff, | ||
68 | mfc_mem.lsize); | ||
69 | #endif | ||
70 | } | ||
71 | |||
72 | DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)") | ||
73 | /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */ | ||
74 | .smp = smp_ops(exynos_smp_ops), | ||
75 | .map_io = exynos_init_io, | ||
76 | .init_machine = exynos5_dt_machine_init, | ||
77 | .init_late = exynos_init_late, | ||
78 | .dt_compat = exynos5_dt_compat, | ||
79 | .restart = exynos5_restart, | ||
80 | .reserve = exynos5_reserve, | ||
81 | MACHINE_END | ||
diff --git a/arch/arm/mach-exynos/mfc.h b/arch/arm/mach-exynos/mfc.h new file mode 100644 index 000000000000..dec93cd5b3c6 --- /dev/null +++ b/arch/arm/mach-exynos/mfc.h | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2013 Samsung Electronics Co.Ltd | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify it | ||
5 | * under the terms of the GNU General Public License as published by the | ||
6 | * Free Software Foundation; either version 2 of the License, or (at your | ||
7 | * option) any later version. | ||
8 | */ | ||
9 | |||
10 | #ifndef __MACH_EXYNOS_MFC_H | ||
11 | #define __MACH_EXYNOS_MFC_H __FILE__ | ||
12 | |||
13 | int __init s5p_fdt_alloc_mfc_mem(unsigned long node, const char *uname, | ||
14 | int depth, void *data); | ||
15 | |||
16 | #endif /* __MACH_EXYNOS_MFC_H */ | ||
diff --git a/arch/arm/mach-exynos/regs-pmu.h b/arch/arm/mach-exynos/regs-pmu.h index 2c15a8fbcb5a..4f6a2560d022 100644 --- a/arch/arm/mach-exynos/regs-pmu.h +++ b/arch/arm/mach-exynos/regs-pmu.h | |||
@@ -26,7 +26,6 @@ | |||
26 | #define S5P_USE_STANDBY_WFI0 (1 << 16) | 26 | #define S5P_USE_STANDBY_WFI0 (1 << 16) |
27 | #define S5P_USE_STANDBY_WFE0 (1 << 24) | 27 | #define S5P_USE_STANDBY_WFE0 (1 << 24) |
28 | 28 | ||
29 | #define S5P_SWRESET S5P_PMUREG(0x0400) | ||
30 | #define EXYNOS_SWRESET S5P_PMUREG(0x0400) | 29 | #define EXYNOS_SWRESET S5P_PMUREG(0x0400) |
31 | #define EXYNOS5440_SWRESET S5P_PMUREG(0x00C4) | 30 | #define EXYNOS5440_SWRESET S5P_PMUREG(0x00C4) |
32 | 31 | ||
diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h index d762533b856f..5992b8dd9b89 100644 --- a/arch/arm/plat-samsung/include/plat/cpu.h +++ b/arch/arm/plat-samsung/include/plat/cpu.h | |||
@@ -166,6 +166,10 @@ IS_SAMSUNG_CPU(exynos5440, EXYNOS5440_SOC_ID, EXYNOS5_SOC_MASK) | |||
166 | # define soc_is_exynos5440() 0 | 166 | # define soc_is_exynos5440() 0 |
167 | #endif | 167 | #endif |
168 | 168 | ||
169 | #define soc_is_exynos4() (soc_is_exynos4210() || soc_is_exynos4212() || \ | ||
170 | soc_is_exynos4412()) | ||
171 | #define soc_is_exynos5() (soc_is_exynos5250() || soc_is_exynos5420()) | ||
172 | |||
169 | #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE } | 173 | #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE } |
170 | 174 | ||
171 | #ifndef KHZ | 175 | #ifndef KHZ |
diff --git a/arch/arm/plat-samsung/include/plat/mfc.h b/arch/arm/plat-samsung/include/plat/mfc.h index e6d7c42d68b6..033654e91e22 100644 --- a/arch/arm/plat-samsung/include/plat/mfc.h +++ b/arch/arm/plat-samsung/include/plat/mfc.h | |||
@@ -32,7 +32,4 @@ struct s5p_mfc_dt_meminfo { | |||
32 | void __init s5p_mfc_reserve_mem(phys_addr_t rbase, unsigned int rsize, | 32 | void __init s5p_mfc_reserve_mem(phys_addr_t rbase, unsigned int rsize, |
33 | phys_addr_t lbase, unsigned int lsize); | 33 | phys_addr_t lbase, unsigned int lsize); |
34 | 34 | ||
35 | int __init s5p_fdt_find_mfc_mem(unsigned long node, const char *uname, | ||
36 | int depth, void *data); | ||
37 | |||
38 | #endif /* __PLAT_SAMSUNG_MFC_H */ | 35 | #endif /* __PLAT_SAMSUNG_MFC_H */ |
diff --git a/arch/arm/plat-samsung/s5p-dev-mfc.c b/arch/arm/plat-samsung/s5p-dev-mfc.c index ad51f85fbd01..98087b655df0 100644 --- a/arch/arm/plat-samsung/s5p-dev-mfc.c +++ b/arch/arm/plat-samsung/s5p-dev-mfc.c | |||
@@ -122,32 +122,35 @@ device_initcall(s5p_mfc_memory_init); | |||
122 | #endif | 122 | #endif |
123 | 123 | ||
124 | #ifdef CONFIG_OF | 124 | #ifdef CONFIG_OF |
125 | int __init s5p_fdt_find_mfc_mem(unsigned long node, const char *uname, | 125 | int __init s5p_fdt_alloc_mfc_mem(unsigned long node, const char *uname, |
126 | int depth, void *data) | 126 | int depth, void *data) |
127 | { | 127 | { |
128 | __be32 *prop; | 128 | __be32 *prop; |
129 | unsigned long len; | 129 | unsigned long len; |
130 | struct s5p_mfc_dt_meminfo *mfc_mem = data; | 130 | struct s5p_mfc_dt_meminfo mfc_mem; |
131 | 131 | ||
132 | if (!data) | 132 | if (!data) |
133 | return 0; | 133 | return 0; |
134 | 134 | ||
135 | if (!of_flat_dt_is_compatible(node, mfc_mem->compatible)) | 135 | if (!of_flat_dt_is_compatible(node, data)) |
136 | return 0; | 136 | return 0; |
137 | 137 | ||
138 | prop = of_get_flat_dt_prop(node, "samsung,mfc-l", &len); | 138 | prop = of_get_flat_dt_prop(node, "samsung,mfc-l", &len); |
139 | if (!prop || (len != 2 * sizeof(unsigned long))) | 139 | if (!prop || (len != 2 * sizeof(unsigned long))) |
140 | return 0; | 140 | return 0; |
141 | 141 | ||
142 | mfc_mem->loff = be32_to_cpu(prop[0]); | 142 | mfc_mem.loff = be32_to_cpu(prop[0]); |
143 | mfc_mem->lsize = be32_to_cpu(prop[1]); | 143 | mfc_mem.lsize = be32_to_cpu(prop[1]); |
144 | 144 | ||
145 | prop = of_get_flat_dt_prop(node, "samsung,mfc-r", &len); | 145 | prop = of_get_flat_dt_prop(node, "samsung,mfc-r", &len); |
146 | if (!prop || (len != 2 * sizeof(unsigned long))) | 146 | if (!prop || (len != 2 * sizeof(unsigned long))) |
147 | return 0; | 147 | return 0; |
148 | 148 | ||
149 | mfc_mem->roff = be32_to_cpu(prop[0]); | 149 | mfc_mem.roff = be32_to_cpu(prop[0]); |
150 | mfc_mem->rsize = be32_to_cpu(prop[1]); | 150 | mfc_mem.rsize = be32_to_cpu(prop[1]); |
151 | |||
152 | s5p_mfc_reserve_mem(mfc_mem.roff, mfc_mem.rsize, | ||
153 | mfc_mem.loff, mfc_mem.lsize); | ||
151 | 154 | ||
152 | return 1; | 155 | return 1; |
153 | } | 156 | } |
diff --git a/drivers/clk/samsung/clk-exynos-audss.c b/drivers/clk/samsung/clk-exynos-audss.c index 884187fbfe00..13eae14c2cc2 100644 --- a/drivers/clk/samsung/clk-exynos-audss.c +++ b/drivers/clk/samsung/clk-exynos-audss.c | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | 19 | ||
20 | #include <dt-bindings/clk/exynos-audss-clk.h> | 20 | #include <dt-bindings/clock/exynos-audss-clk.h> |
21 | 21 | ||
22 | enum exynos_audss_clk_type { | 22 | enum exynos_audss_clk_type { |
23 | TYPE_EXYNOS4210, | 23 | TYPE_EXYNOS4210, |
diff --git a/include/dt-bindings/clk/exynos-audss-clk.h b/include/dt-bindings/clock/exynos-audss-clk.h index 0ae6f5a75d2a..0ae6f5a75d2a 100644 --- a/include/dt-bindings/clk/exynos-audss-clk.h +++ b/include/dt-bindings/clock/exynos-audss-clk.h | |||