aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/dts/exynos4210-origen.dts2
-rw-r--r--arch/arm/boot/dts/exynos4210-smdkv310.dts2
-rw-r--r--arch/arm/boot/dts/exynos4210-trats.dts2
-rw-r--r--arch/arm/boot/dts/exynos4210-universal_c210.dts2
-rw-r--r--arch/arm/boot/dts/exynos4210.dtsi2
-rw-r--r--arch/arm/boot/dts/exynos4212.dtsi2
-rw-r--r--arch/arm/boot/dts/exynos4412-odroidx.dts2
-rw-r--r--arch/arm/boot/dts/exynos4412-origen.dts2
-rw-r--r--arch/arm/boot/dts/exynos4412-smdk4412.dts2
-rw-r--r--arch/arm/boot/dts/exynos4412-tiny4412.dts2
-rw-r--r--arch/arm/boot/dts/exynos4412-trats2.dts2
-rw-r--r--arch/arm/boot/dts/exynos4412.dtsi2
-rw-r--r--arch/arm/boot/dts/exynos5250-arndale.dts2
-rw-r--r--arch/arm/boot/dts/exynos5250-smdk5250.dts2
-rw-r--r--arch/arm/boot/dts/exynos5250-snow.dts2
-rw-r--r--arch/arm/boot/dts/exynos5250.dtsi4
-rw-r--r--arch/arm/boot/dts/exynos5420-arndale-octa.dts2
-rw-r--r--arch/arm/boot/dts/exynos5420-smdk5420.dts2
-rw-r--r--arch/arm/boot/dts/exynos5420.dtsi4
-rw-r--r--arch/arm/boot/dts/exynos5440-sd5v1.dts2
-rw-r--r--arch/arm/boot/dts/exynos5440-ssdk5440.dts2
-rw-r--r--arch/arm/boot/dts/exynos5440.dtsi2
-rw-r--r--arch/arm/mach-exynos/Makefile7
-rw-r--r--arch/arm/mach-exynos/common.h3
-rw-r--r--arch/arm/mach-exynos/exynos.c (renamed from arch/arm/mach-exynos/common.c)228
-rw-r--r--arch/arm/mach-exynos/mach-exynos4-dt.c59
-rw-r--r--arch/arm/mach-exynos/mach-exynos5-dt.c81
-rw-r--r--arch/arm/mach-exynos/mfc.h16
-rw-r--r--arch/arm/mach-exynos/regs-pmu.h1
-rw-r--r--arch/arm/plat-samsung/include/plat/cpu.h4
-rw-r--r--arch/arm/plat-samsung/include/plat/mfc.h3
-rw-r--r--arch/arm/plat-samsung/s5p-dev-mfc.c17
-rw-r--r--drivers/clk/samsung/clk-exynos-audss.c2
-rw-r--r--include/dt-bindings/clock/exynos-audss-clk.h (renamed from include/dt-bindings/clk/exynos-audss-clk.h)0
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
15obj-$(CONFIG_ARCH_EXYNOS) += common.o 15obj-$(CONFIG_ARCH_EXYNOS) += exynos.o
16 16
17obj-$(CONFIG_PM_SLEEP) += pm.o sleep.o 17obj-$(CONFIG_PM_SLEEP) += pm.o sleep.o
18obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o 18obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o
@@ -29,8 +29,3 @@ obj-$(CONFIG_ARCH_EXYNOS) += firmware.o
29 29
30plus_sec := $(call as-instr,.arch_extension sec,+sec) 30plus_sec := $(call as-instr,.arch_extension sec,+sec)
31AFLAGS_exynos-smc.o :=-Wa,-march=armv7-a$(plus_sec) 31AFLAGS_exynos-smc.o :=-Wa,-march=armv7-a$(plus_sec)
32
33# machine support
34
35obj-$(CONFIG_ARCH_EXYNOS4) += mach-exynos4-dt.o
36obj-$(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
20struct map_desc; 20struct map_desc;
21void exynos_init_io(void); 21void exynos_init_io(void);
22void exynos4_restart(enum reboot_mode mode, const char *cmd); 22void exynos_restart(enum reboot_mode mode, const char *cmd);
23void exynos5_restart(enum reboot_mode mode, const char *cmd);
24void exynos_cpuidle_init(void); 23void exynos_cpuidle_init(void);
25void exynos_cpufreq_init(void); 24void exynos_cpufreq_init(void);
26void exynos_init_late(void); 25void 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
51static const char name_exynos4210[] = "EXYNOS4210";
52static const char name_exynos4212[] = "EXYNOS4212";
53static const char name_exynos4412[] = "EXYNOS4412";
54static const char name_exynos5250[] = "EXYNOS5250";
55static const char name_exynos5420[] = "EXYNOS5420";
56static const char name_exynos5440[] = "EXYNOS5440";
57
58static void exynos4_map_io(void);
59static void exynos5_map_io(void);
60static int exynos_init(void);
61
62static 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
103static struct map_desc exynos4_iodesc[] __initdata = { 38static 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
266void exynos4_restart(enum reboot_mode mode, const char *cmd) 201void exynos_restart(enum reboot_mode mode, const char *cmd)
267{
268 __raw_writel(0x1, S5P_SWRESET);
269}
270
271void 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 */
276static 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
350void __init exynos_init_io(void) 299void __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
362static 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
377static 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
385struct bus_type exynos_subsys = { 311struct 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
390static struct device exynos4_dev = {
391 .bus = &exynos_subsys,
392};
393
394static int __init exynos_core_init(void) 316static 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}
412early_initcall(exynos4_l2x0_cache_init); 334early_initcall(exynos4_l2x0_cache_init);
413 335
414static int __init exynos_init(void) 336static 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
370static 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
382static 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
398DT_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,
409MACHINE_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
22static 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
30static char const *exynos4_dt_compat[] __initdata = {
31 "samsung,exynos4210",
32 "samsung,exynos4212",
33 "samsung,exynos4412",
34 NULL
35};
36
37static 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}
49DT_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,
59MACHINE_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
22static 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
52static char const *exynos5_dt_compat[] __initdata = {
53 "samsung,exynos5250",
54 "samsung,exynos5420",
55 "samsung,exynos5440",
56 NULL
57};
58
59static 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
72DT_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,
81MACHINE_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
13int __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 {
32void __init s5p_mfc_reserve_mem(phys_addr_t rbase, unsigned int rsize, 32void __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
35int __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
125int __init s5p_fdt_find_mfc_mem(unsigned long node, const char *uname, 125int __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
22enum exynos_audss_clk_type { 22enum 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