aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/dts/Makefile4
-rw-r--r--arch/arm/boot/dts/emev2.dtsi6
-rw-r--r--arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts65
-rw-r--r--arch/arm/boot/dts/r8a73a4-ape6evm.dts2
-rw-r--r--arch/arm/boot/dts/r8a7740.dtsi12
-rw-r--r--arch/arm/boot/dts/r8a7778-bockw-reference.dts32
-rw-r--r--arch/arm/boot/dts/r8a7778-bockw.dts2
-rw-r--r--arch/arm/boot/dts/r8a7779-marzen-reference.dts2
-rw-r--r--arch/arm/boot/dts/r8a7779-marzen.dts27
-rw-r--r--arch/arm/boot/dts/r8a7790-lager-reference.dts45
-rw-r--r--arch/arm/boot/dts/r8a7790-lager.dts2
-rw-r--r--arch/arm/boot/dts/sh73a0-kzm9g-reference.dts2
-rw-r--r--arch/arm/boot/dts/sh73a0-kzm9g.dts2
-rw-r--r--arch/arm/boot/dts/sh73a0.dtsi6
-rw-r--r--arch/arm/mach-shmobile/Kconfig37
-rw-r--r--arch/arm/mach-shmobile/Makefile3
-rw-r--r--arch/arm/mach-shmobile/Makefile.boot3
-rw-r--r--arch/arm/mach-shmobile/board-ape6evm-reference.c64
-rw-r--r--arch/arm/mach-shmobile/board-armadillo800eva.c2
-rw-r--r--arch/arm/mach-shmobile/board-bockw-reference.c62
-rw-r--r--arch/arm/mach-shmobile/board-lager-reference.c45
-rw-r--r--arch/arm/mach-shmobile/board-marzen.c11
-rw-r--r--arch/arm/mach-shmobile/include/mach/r8a73a4.h1
-rw-r--r--arch/arm/mach-shmobile/include/mach/r8a7740.h1
-rw-r--r--arch/arm/mach-shmobile/include/mach/r8a7778.h1
-rw-r--r--arch/arm/mach-shmobile/include/mach/r8a7779.h1
-rw-r--r--arch/arm/mach-shmobile/include/mach/r8a7790.h1
-rw-r--r--arch/arm/mach-shmobile/intc-r8a7740.c20
-rw-r--r--arch/arm/mach-shmobile/intc-r8a7779.c22
-rw-r--r--arch/arm/mach-shmobile/setup-r8a73a4.c9
-rw-r--r--arch/arm/mach-shmobile/setup-r8a7778.c7
-rw-r--r--arch/arm/mach-shmobile/setup-r8a7790.c9
-rw-r--r--arch/arm/mach-shmobile/smp-r8a7779.c12
-rw-r--r--arch/arm/mach-shmobile/smp-sh73a0.c11
34 files changed, 461 insertions, 70 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index af19e38f8e97..07204ca96853 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -186,12 +186,16 @@ dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
186 emev2-kzm9d-reference.dtb \ 186 emev2-kzm9d-reference.dtb \
187 r8a7740-armadillo800eva.dtb \ 187 r8a7740-armadillo800eva.dtb \
188 r8a7778-bockw.dtb \ 188 r8a7778-bockw.dtb \
189 r8a7778-bockw-reference.dtb \
189 r8a7740-armadillo800eva-reference.dtb \ 190 r8a7740-armadillo800eva-reference.dtb \
191 r8a7779-marzen.dtb \
190 r8a7779-marzen-reference.dtb \ 192 r8a7779-marzen-reference.dtb \
191 r8a7790-lager.dtb \ 193 r8a7790-lager.dtb \
194 r8a7790-lager-reference.dtb \
192 sh73a0-kzm9g.dtb \ 195 sh73a0-kzm9g.dtb \
193 sh73a0-kzm9g-reference.dtb \ 196 sh73a0-kzm9g-reference.dtb \
194 r8a73a4-ape6evm.dtb \ 197 r8a73a4-ape6evm.dtb \
198 r8a73a4-ape6evm-reference.dtb \
195 sh7372-mackerel.dtb 199 sh7372-mackerel.dtb
196dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_cyclone5.dtb \ 200dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_cyclone5.dtb \
197 socfpga_vt.dtb 201 socfpga_vt.dtb
diff --git a/arch/arm/boot/dts/emev2.dtsi b/arch/arm/boot/dts/emev2.dtsi
index 99ad2b2e8e14..9063a4434d6a 100644
--- a/arch/arm/boot/dts/emev2.dtsi
+++ b/arch/arm/boot/dts/emev2.dtsi
@@ -46,6 +46,12 @@
46 <0xe0020000 0x0100>; 46 <0xe0020000 0x0100>;
47 }; 47 };
48 48
49 pmu {
50 compatible = "arm,cortex-a9-pmu";
51 interrupts = <0 120 4>,
52 <0 121 4>;
53 };
54
49 sti@e0180000 { 55 sti@e0180000 {
50 compatible = "renesas,em-sti"; 56 compatible = "renesas,em-sti";
51 reg = <0xe0180000 0x54>; 57 reg = <0xe0180000 0x54>;
diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts b/arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts
new file mode 100644
index 000000000000..f444624eb097
--- /dev/null
+++ b/arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts
@@ -0,0 +1,65 @@
1/*
2 * Device Tree Source for the APE6EVM board
3 *
4 * Copyright (C) 2013 Renesas Solutions Corp.
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10
11/dts-v1/;
12/include/ "r8a73a4.dtsi"
13
14/ {
15 model = "APE6EVM";
16 compatible = "renesas,ape6evm-reference", "renesas,r8a73a4";
17
18 chosen {
19 bootargs = "console=ttySC0,115200 ignore_loglevel rw";
20 };
21
22 memory@40000000 {
23 device_type = "memory";
24 reg = <0 0x40000000 0 0x40000000>;
25 };
26
27 lbsc {
28 compatible = "simple-bus";
29 #address-cells = <1>;
30 #size-cells = <1>;
31 ranges = <0 0 0 0x80000000>;
32 };
33};
34
35&i2c5 {
36 vdd_dvfs: max8973@1b {
37 compatible = "maxim,max8973";
38 reg = <0x1b>;
39
40 regulator-min-microvolt = <935000>;
41 regulator-max-microvolt = <1200000>;
42 regulator-boot-on;
43 regulator-always-on;
44 };
45};
46
47&cpu0 {
48 cpu0-supply = <&vdd_dvfs>;
49 operating-points = <
50 /* kHz uV */
51 1950000 1115000
52 1462500 995000
53 >;
54 voltage-tolerance = <1>; /* 1% */
55};
56
57&pfc {
58 pinctrl-0 = <&scifa0_pins>;
59 pinctrl-names = "default";
60
61 scifa0_pins: scifa0 {
62 renesas,groups = "scifa0_data";
63 renesas,function = "scifa0";
64 };
65};
diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
index e657a9db1666..72f867e65791 100644
--- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
+++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
@@ -16,7 +16,7 @@
16 compatible = "renesas,ape6evm", "renesas,r8a73a4"; 16 compatible = "renesas,ape6evm", "renesas,r8a73a4";
17 17
18 chosen { 18 chosen {
19 bootargs = "console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp"; 19 bootargs = "console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp rw";
20 }; 20 };
21 21
22 memory@40000000 { 22 memory@40000000 {
diff --git a/arch/arm/boot/dts/r8a7740.dtsi b/arch/arm/boot/dts/r8a7740.dtsi
index 24e930643821..27f014f3f1aa 100644
--- a/arch/arm/boot/dts/r8a7740.dtsi
+++ b/arch/arm/boot/dts/r8a7740.dtsi
@@ -32,6 +32,11 @@
32 <0xc2000000 0x1000>; 32 <0xc2000000 0x1000>;
33 }; 33 };
34 34
35 pmu {
36 compatible = "arm,cortex-a9-pmu";
37 interrupts = <0 83 4>;
38 };
39
35 /* irqpin0: IRQ0 - IRQ7 */ 40 /* irqpin0: IRQ0 - IRQ7 */
36 irqpin0: irqpin@e6900000 { 41 irqpin0: irqpin@e6900000 {
37 compatible = "renesas,intc-irqpin"; 42 compatible = "renesas,intc-irqpin";
@@ -139,4 +144,11 @@
139 0 72 0x4 144 0 72 0x4
140 0 73 0x4>; 145 0 73 0x4>;
141 }; 146 };
147
148 tpu: pwm@e6600000 {
149 compatible = "renesas,tpu-r8a7740", "renesas,tpu";
150 reg = <0xe6600000 0x100>;
151 status = "disabled";
152 #pwm-cells = <3>;
153 };
142}; 154};
diff --git a/arch/arm/boot/dts/r8a7778-bockw-reference.dts b/arch/arm/boot/dts/r8a7778-bockw-reference.dts
new file mode 100644
index 000000000000..9bb903a3230d
--- /dev/null
+++ b/arch/arm/boot/dts/r8a7778-bockw-reference.dts
@@ -0,0 +1,32 @@
1/*
2 * Reference Device Tree Source for the Bock-W board
3 *
4 * Copyright (C) 2013 Renesas Solutions Corp.
5 * Copyright (C) 2013 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
6 *
7 * based on r8a7779
8 *
9 * Copyright (C) 2013 Renesas Solutions Corp.
10 * Copyright (C) 2013 Simon Horman
11 *
12 * This file is licensed under the terms of the GNU General Public License
13 * version 2. This program is licensed "as is" without any warranty of any
14 * kind, whether express or implied.
15 */
16
17/dts-v1/;
18/include/ "r8a7778.dtsi"
19
20/ {
21 model = "bockw";
22 compatible = "renesas,bockw-reference", "renesas,r8a7778";
23
24 chosen {
25 bootargs = "console=ttySC0,115200 ignore_loglevel rw";
26 };
27
28 memory {
29 device_type = "memory";
30 reg = <0x60000000 0x10000000>;
31 };
32};
diff --git a/arch/arm/boot/dts/r8a7778-bockw.dts b/arch/arm/boot/dts/r8a7778-bockw.dts
index 0076b1e8a0fb..12bbebc9c955 100644
--- a/arch/arm/boot/dts/r8a7778-bockw.dts
+++ b/arch/arm/boot/dts/r8a7778-bockw.dts
@@ -22,7 +22,7 @@
22 compatible = "renesas,bockw", "renesas,r8a7778"; 22 compatible = "renesas,bockw", "renesas,r8a7778";
23 23
24 chosen { 24 chosen {
25 bootargs = "console=ttySC0,115200 ignore_loglevel ip=dhcp root=/dev/nfs"; 25 bootargs = "console=ttySC0,115200 ignore_loglevel ip=dhcp root=/dev/nfs rw";
26 }; 26 };
27 27
28 memory { 28 memory {
diff --git a/arch/arm/boot/dts/r8a7779-marzen-reference.dts b/arch/arm/boot/dts/r8a7779-marzen-reference.dts
index 72be4c87cfb5..5c22feeaddd6 100644
--- a/arch/arm/boot/dts/r8a7779-marzen-reference.dts
+++ b/arch/arm/boot/dts/r8a7779-marzen-reference.dts
@@ -17,7 +17,7 @@
17 compatible = "renesas,marzen-reference", "renesas,r8a7779"; 17 compatible = "renesas,marzen-reference", "renesas,r8a7779";
18 18
19 chosen { 19 chosen {
20 bootargs = "console=ttySC2,115200 earlyprintk=sh-sci.2,115200 ignore_loglevel root=/dev/nfs ip=on"; 20 bootargs = "console=ttySC2,115200 earlyprintk=sh-sci.2,115200 ignore_loglevel root=/dev/nfs ip=on rw";
21 }; 21 };
22 22
23 memory { 23 memory {
diff --git a/arch/arm/boot/dts/r8a7779-marzen.dts b/arch/arm/boot/dts/r8a7779-marzen.dts
new file mode 100644
index 000000000000..f3f7f7999736
--- /dev/null
+++ b/arch/arm/boot/dts/r8a7779-marzen.dts
@@ -0,0 +1,27 @@
1/*
2 * Device Tree Source for the Marzen board
3 *
4 * Copyright (C) 2013 Renesas Solutions Corp.
5 * Copyright (C) 2013 Simon Horman
6 *
7 * This file is licensed under the terms of the GNU General Public License
8 * version 2. This program is licensed "as is" without any warranty of any
9 * kind, whether express or implied.
10 */
11
12/dts-v1/;
13/include/ "r8a7779.dtsi"
14
15/ {
16 model = "marzen";
17 compatible = "renesas,marzen", "renesas,r8a7779";
18
19 chosen {
20 bootargs = "console=ttySC2,115200 earlyprintk=sh-sci.2,115200 ignore_loglevel root=/dev/nfs ip=on";
21 };
22
23 memory {
24 device_type = "memory";
25 reg = <0x60000000 0x40000000>;
26 };
27};
diff --git a/arch/arm/boot/dts/r8a7790-lager-reference.dts b/arch/arm/boot/dts/r8a7790-lager-reference.dts
new file mode 100644
index 000000000000..c462ef138922
--- /dev/null
+++ b/arch/arm/boot/dts/r8a7790-lager-reference.dts
@@ -0,0 +1,45 @@
1/*
2 * Device Tree Source for the Lager board
3 *
4 * Copyright (C) 2013 Renesas Solutions Corp.
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10
11/dts-v1/;
12/include/ "r8a7790.dtsi"
13#include <dt-bindings/gpio/gpio.h>
14
15/ {
16 model = "Lager";
17 compatible = "renesas,lager-reference", "renesas,r8a7790";
18
19 chosen {
20 bootargs = "console=ttySC6,115200 ignore_loglevel rw";
21 };
22
23 memory@40000000 {
24 device_type = "memory";
25 reg = <0 0x40000000 0 0x80000000>;
26 };
27
28 lbsc {
29 #address-cells = <1>;
30 #size-cells = <1>;
31 };
32
33 leds {
34 compatible = "gpio-leds";
35 led6 {
36 gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>;
37 };
38 led7 {
39 gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>;
40 };
41 led8 {
42 gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
43 };
44 };
45};
diff --git a/arch/arm/boot/dts/r8a7790-lager.dts b/arch/arm/boot/dts/r8a7790-lager.dts
index 09a84fce89d6..203bd089af29 100644
--- a/arch/arm/boot/dts/r8a7790-lager.dts
+++ b/arch/arm/boot/dts/r8a7790-lager.dts
@@ -16,7 +16,7 @@
16 compatible = "renesas,lager", "renesas,r8a7790"; 16 compatible = "renesas,lager", "renesas,r8a7790";
17 17
18 chosen { 18 chosen {
19 bootargs = "console=ttySC6,115200 ignore_loglevel"; 19 bootargs = "console=ttySC6,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp";
20 }; 20 };
21 21
22 memory@40000000 { 22 memory@40000000 {
diff --git a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
index b6f759e830ed..6d9ece2399a0 100644
--- a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
+++ b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
@@ -32,7 +32,7 @@
32 }; 32 };
33 33
34 chosen { 34 chosen {
35 bootargs = "console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel earlyprintk=sh-sci.4,115200"; 35 bootargs = "console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel earlyprintk=sh-sci.4,115200 rw";
36 }; 36 };
37 37
38 memory { 38 memory {
diff --git a/arch/arm/boot/dts/sh73a0-kzm9g.dts b/arch/arm/boot/dts/sh73a0-kzm9g.dts
index 7c4071e7790c..0f1ca7792c46 100644
--- a/arch/arm/boot/dts/sh73a0-kzm9g.dts
+++ b/arch/arm/boot/dts/sh73a0-kzm9g.dts
@@ -16,7 +16,7 @@
16 compatible = "renesas,kzm9g", "renesas,sh73a0"; 16 compatible = "renesas,kzm9g", "renesas,sh73a0";
17 17
18 chosen { 18 chosen {
19 bootargs = "console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel earlyprintk=sh-sci.4,115200"; 19 bootargs = "console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel earlyprintk=sh-sci.4,115200 rw";
20 }; 20 };
21 21
22 memory { 22 memory {
diff --git a/arch/arm/boot/dts/sh73a0.dtsi b/arch/arm/boot/dts/sh73a0.dtsi
index b97750256003..7137c0f284f2 100644
--- a/arch/arm/boot/dts/sh73a0.dtsi
+++ b/arch/arm/boot/dts/sh73a0.dtsi
@@ -38,6 +38,12 @@
38 <0xf0000100 0x100>; 38 <0xf0000100 0x100>;
39 }; 39 };
40 40
41 pmu {
42 compatible = "arm,cortex-a9-pmu";
43 interrupts = <0 55 4>,
44 <0 56 4>;
45 };
46
41 irqpin0: irqpin@e6900000 { 47 irqpin0: irqpin@e6900000 {
42 compatible = "renesas,intc-irqpin"; 48 compatible = "renesas,intc-irqpin";
43 #interrupt-cells = <2>; 49 #interrupt-cells = <2>;
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index e4ad4089f6ff..fed06b06056d 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -76,6 +76,17 @@ config MACH_APE6EVM
76 depends on ARCH_R8A73A4 76 depends on ARCH_R8A73A4
77 select USE_OF 77 select USE_OF
78 78
79config MACH_APE6EVM_REFERENCE
80 bool "APE6EVM board - Reference Device Tree Implementation"
81 depends on ARCH_R8A73A4
82 select USE_OF
83 ---help---
84 Use reference implementation of APE6EVM board support
85 which makes a greater use of device tree at the expense
86 of not supporting a number of devices.
87
88 This is intended to aid developers
89
79config MACH_MACKEREL 90config MACH_MACKEREL
80 bool "mackerel board" 91 bool "mackerel board"
81 depends on ARCH_SH7372 92 depends on ARCH_SH7372
@@ -113,11 +124,26 @@ config MACH_BOCKW
113 select RENESAS_INTC_IRQPIN 124 select RENESAS_INTC_IRQPIN
114 select USE_OF 125 select USE_OF
115 126
127config MACH_BOCKW_REFERENCE
128 bool "BOCK-W - Reference Device Tree Implementation"
129 depends on ARCH_R8A7778
130 select ARCH_REQUIRE_GPIOLIB
131 select RENESAS_INTC_IRQPIN
132 select REGULATOR_FIXED_VOLTAGE if REGULATOR
133 select USE_OF
134 ---help---
135 Use reference implementation of BockW board support
136 which makes use of device tree at the expense
137 of not supporting a number of devices.
138
139 This is intended to aid developers
140
116config MACH_MARZEN 141config MACH_MARZEN
117 bool "MARZEN board" 142 bool "MARZEN board"
118 depends on ARCH_R8A7779 143 depends on ARCH_R8A7779
119 select ARCH_REQUIRE_GPIOLIB 144 select ARCH_REQUIRE_GPIOLIB
120 select REGULATOR_FIXED_VOLTAGE if REGULATOR 145 select REGULATOR_FIXED_VOLTAGE if REGULATOR
146 select USE_OF
121 147
122config MACH_MARZEN_REFERENCE 148config MACH_MARZEN_REFERENCE
123 bool "MARZEN board - Reference Device Tree Implementation" 149 bool "MARZEN board - Reference Device Tree Implementation"
@@ -137,6 +163,17 @@ config MACH_LAGER
137 depends on ARCH_R8A7790 163 depends on ARCH_R8A7790
138 select USE_OF 164 select USE_OF
139 165
166config MACH_LAGER_REFERENCE
167 bool "Lager board - Reference Device Tree Implementation"
168 depends on ARCH_R8A7790
169 select USE_OF
170 ---help---
171 Use reference implementation of Lager board support
172 which makes use of device tree at the expense
173 of not supporting a number of devices.
174
175 This is intended to aid developers
176
140config MACH_KZM9D 177config MACH_KZM9D
141 bool "KZM9D board" 178 bool "KZM9D board"
142 depends on ARCH_EMEV2 179 depends on ARCH_EMEV2
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile
index e3f8592fab88..f6881f9b7d5f 100644
--- a/arch/arm/mach-shmobile/Makefile
+++ b/arch/arm/mach-shmobile/Makefile
@@ -34,11 +34,14 @@ obj-$(CONFIG_ARCH_R8A7779) += pm-r8a7779.o
34 34
35# Board objects 35# Board objects
36obj-$(CONFIG_MACH_APE6EVM) += board-ape6evm.o 36obj-$(CONFIG_MACH_APE6EVM) += board-ape6evm.o
37obj-$(CONFIG_MACH_APE6EVM_REFERENCE) += board-ape6evm-reference.o
37obj-$(CONFIG_MACH_MACKEREL) += board-mackerel.o 38obj-$(CONFIG_MACH_MACKEREL) += board-mackerel.o
38obj-$(CONFIG_MACH_BOCKW) += board-bockw.o 39obj-$(CONFIG_MACH_BOCKW) += board-bockw.o
40obj-$(CONFIG_MACH_BOCKW_REFERENCE) += board-bockw-reference.o
39obj-$(CONFIG_MACH_MARZEN) += board-marzen.o 41obj-$(CONFIG_MACH_MARZEN) += board-marzen.o
40obj-$(CONFIG_MACH_MARZEN_REFERENCE) += board-marzen-reference.o 42obj-$(CONFIG_MACH_MARZEN_REFERENCE) += board-marzen-reference.o
41obj-$(CONFIG_MACH_LAGER) += board-lager.o 43obj-$(CONFIG_MACH_LAGER) += board-lager.o
44obj-$(CONFIG_MACH_LAGER_REFERENCE) += board-lager-reference.o
42obj-$(CONFIG_MACH_ARMADILLO800EVA) += board-armadillo800eva.o 45obj-$(CONFIG_MACH_ARMADILLO800EVA) += board-armadillo800eva.o
43obj-$(CONFIG_MACH_ARMADILLO800EVA_REFERENCE) += board-armadillo800eva-reference.o 46obj-$(CONFIG_MACH_ARMADILLO800EVA_REFERENCE) += board-armadillo800eva-reference.o
44obj-$(CONFIG_MACH_KZM9D) += board-kzm9d.o 47obj-$(CONFIG_MACH_KZM9D) += board-kzm9d.o
diff --git a/arch/arm/mach-shmobile/Makefile.boot b/arch/arm/mach-shmobile/Makefile.boot
index b8c1a21fcaf3..6a504fe7d86c 100644
--- a/arch/arm/mach-shmobile/Makefile.boot
+++ b/arch/arm/mach-shmobile/Makefile.boot
@@ -1,14 +1,17 @@
1# per-board load address for uImage 1# per-board load address for uImage
2loadaddr-y := 2loadaddr-y :=
3loadaddr-$(CONFIG_MACH_APE6EVM) += 0x40008000 3loadaddr-$(CONFIG_MACH_APE6EVM) += 0x40008000
4loadaddr-$(CONFIG_MACH_APE6EVM_REFERENCE) += 0x40008000
4loadaddr-$(CONFIG_MACH_ARMADILLO800EVA) += 0x40008000 5loadaddr-$(CONFIG_MACH_ARMADILLO800EVA) += 0x40008000
5loadaddr-$(CONFIG_MACH_ARMADILLO800EVA_REFERENCE) += 0x40008000 6loadaddr-$(CONFIG_MACH_ARMADILLO800EVA_REFERENCE) += 0x40008000
6loadaddr-$(CONFIG_MACH_BOCKW) += 0x60008000 7loadaddr-$(CONFIG_MACH_BOCKW) += 0x60008000
8loadaddr-$(CONFIG_MACH_BOCKW_REFERENCE) += 0x60008000
7loadaddr-$(CONFIG_MACH_KZM9D) += 0x40008000 9loadaddr-$(CONFIG_MACH_KZM9D) += 0x40008000
8loadaddr-$(CONFIG_MACH_KZM9D_REFERENCE) += 0x40008000 10loadaddr-$(CONFIG_MACH_KZM9D_REFERENCE) += 0x40008000
9loadaddr-$(CONFIG_MACH_KZM9G) += 0x41008000 11loadaddr-$(CONFIG_MACH_KZM9G) += 0x41008000
10loadaddr-$(CONFIG_MACH_KZM9G_REFERENCE) += 0x41008000 12loadaddr-$(CONFIG_MACH_KZM9G_REFERENCE) += 0x41008000
11loadaddr-$(CONFIG_MACH_LAGER) += 0x40008000 13loadaddr-$(CONFIG_MACH_LAGER) += 0x40008000
14loadaddr-$(CONFIG_MACH_LAGER_REFERENCE) += 0x40008000
12loadaddr-$(CONFIG_MACH_MACKEREL) += 0x40008000 15loadaddr-$(CONFIG_MACH_MACKEREL) += 0x40008000
13loadaddr-$(CONFIG_MACH_MARZEN) += 0x60008000 16loadaddr-$(CONFIG_MACH_MARZEN) += 0x60008000
14loadaddr-$(CONFIG_MACH_MARZEN_REFERENCE) += 0x60008000 17loadaddr-$(CONFIG_MACH_MARZEN_REFERENCE) += 0x60008000
diff --git a/arch/arm/mach-shmobile/board-ape6evm-reference.c b/arch/arm/mach-shmobile/board-ape6evm-reference.c
new file mode 100644
index 000000000000..52cc5fa5563a
--- /dev/null
+++ b/arch/arm/mach-shmobile/board-ape6evm-reference.c
@@ -0,0 +1,64 @@
1/*
2 * APE6EVM board support
3 *
4 * Copyright (C) 2013 Renesas Solutions Corp.
5 * Copyright (C) 2013 Magnus Damm
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 as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#include <linux/gpio.h>
22#include <linux/kernel.h>
23#include <linux/of_platform.h>
24#include <linux/pinctrl/machine.h>
25#include <linux/platform_device.h>
26#include <linux/sh_clk.h>
27#include <mach/common.h>
28#include <mach/r8a73a4.h>
29#include <asm/mach-types.h>
30#include <asm/mach/arch.h>
31
32static void __init ape6evm_add_standard_devices(void)
33{
34
35 struct clk *parent;
36 struct clk *mp;
37
38 r8a73a4_clock_init();
39
40 /* MP clock parent = extal2 */
41 parent = clk_get(NULL, "extal2");
42 mp = clk_get(NULL, "mp");
43 BUG_ON(IS_ERR(parent) || IS_ERR(mp));
44
45 clk_set_parent(mp, parent);
46 clk_put(parent);
47 clk_put(mp);
48
49 r8a73a4_add_dt_devices();
50 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
51 platform_device_register_simple("cpufreq-cpu0", -1, NULL, 0);
52}
53
54static const char *ape6evm_boards_compat_dt[] __initdata = {
55 "renesas,ape6evm-reference",
56 NULL,
57};
58
59DT_MACHINE_START(APE6EVM_DT, "ape6evm")
60 .init_early = r8a73a4_init_delay,
61 .init_time = shmobile_timer_init,
62 .init_machine = ape6evm_add_standard_devices,
63 .dt_compat = ape6evm_boards_compat_dt,
64MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c
index f62719dc3bd6..bdcc8a055ad4 100644
--- a/arch/arm/mach-shmobile/board-armadillo800eva.c
+++ b/arch/arm/mach-shmobile/board-armadillo800eva.c
@@ -1315,7 +1315,7 @@ static const char *eva_boards_compat_dt[] __initdata = {
1315DT_MACHINE_START(ARMADILLO800EVA_DT, "armadillo800eva") 1315DT_MACHINE_START(ARMADILLO800EVA_DT, "armadillo800eva")
1316 .map_io = r8a7740_map_io, 1316 .map_io = r8a7740_map_io,
1317 .init_early = eva_add_early_devices, 1317 .init_early = eva_add_early_devices,
1318 .init_irq = r8a7740_init_irq, 1318 .init_irq = r8a7740_init_irq_of,
1319 .init_machine = eva_init, 1319 .init_machine = eva_init,
1320 .init_late = shmobile_init_late, 1320 .init_late = shmobile_init_late,
1321 .init_time = eva_earlytimer_init, 1321 .init_time = eva_earlytimer_init,
diff --git a/arch/arm/mach-shmobile/board-bockw-reference.c b/arch/arm/mach-shmobile/board-bockw-reference.c
new file mode 100644
index 000000000000..24db8de73cae
--- /dev/null
+++ b/arch/arm/mach-shmobile/board-bockw-reference.c
@@ -0,0 +1,62 @@
1/*
2 * Bock-W board support
3 *
4 * Copyright (C) 2013 Renesas Solutions Corp.
5 * Copyright (C) 2013 Kuninori Morimoto <kuninori.morimoto.gx@renesas.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 as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#include <linux/of_platform.h>
22#include <linux/pinctrl/machine.h>
23#include <mach/common.h>
24#include <mach/r8a7778.h>
25#include <asm/mach/arch.h>
26
27/*
28 * see board-bock.c for checking detail of dip-switch
29 */
30
31static const struct pinctrl_map bockw_pinctrl_map[] = {
32 /* SCIF0 */
33 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778",
34 "scif0_data_a", "scif0"),
35 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778",
36 "scif0_ctrl", "scif0"),
37};
38
39static void __init bockw_init(void)
40{
41 r8a7778_clock_init();
42
43 pinctrl_register_mappings(bockw_pinctrl_map,
44 ARRAY_SIZE(bockw_pinctrl_map));
45 r8a7778_pinmux_init();
46 r8a7778_add_dt_devices();
47
48 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
49}
50
51static const char *bockw_boards_compat_dt[] __initdata = {
52 "renesas,bockw-reference",
53 NULL,
54};
55
56DT_MACHINE_START(BOCKW_DT, "bockw")
57 .init_early = r8a7778_init_delay,
58 .init_irq = r8a7778_init_irq_dt,
59 .init_machine = bockw_init,
60 .init_time = shmobile_timer_init,
61 .dt_compat = bockw_boards_compat_dt,
62MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-lager-reference.c b/arch/arm/mach-shmobile/board-lager-reference.c
new file mode 100644
index 000000000000..9c316a1b2e32
--- /dev/null
+++ b/arch/arm/mach-shmobile/board-lager-reference.c
@@ -0,0 +1,45 @@
1/*
2 * Lager board support - Reference DT implementation
3 *
4 * Copyright (C) 2013 Renesas Solutions Corp.
5 * Copyright (C) 2013 Simon Horman
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 as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#include <linux/init.h>
22#include <linux/of_platform.h>
23#include <mach/r8a7790.h>
24#include <asm/mach/arch.h>
25
26static void __init lager_add_standard_devices(void)
27{
28 /* clocks are setup late during boot in the case of DT */
29 r8a7790_clock_init();
30
31 r8a7790_add_dt_devices();
32 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
33}
34
35static const char *lager_boards_compat_dt[] __initdata = {
36 "renesas,lager-reference",
37 NULL,
38};
39
40DT_MACHINE_START(LAGER_DT, "lager")
41 .init_early = r8a7790_init_delay,
42 .init_machine = lager_add_standard_devices,
43 .init_time = r8a7790_timer_init,
44 .dt_compat = lager_boards_compat_dt,
45MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c
index 7474a60f98ae..3551b5480b47 100644
--- a/arch/arm/mach-shmobile/board-marzen.c
+++ b/arch/arm/mach-shmobile/board-marzen.c
@@ -257,13 +257,18 @@ static void __init marzen_init(void)
257 platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices)); 257 platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices));
258} 258}
259 259
260MACHINE_START(MARZEN, "marzen") 260static const char *marzen_boards_compat_dt[] __initdata = {
261 "renesas,marzen",
262 NULL,
263};
264
265DT_MACHINE_START(MARZEN, "marzen")
261 .smp = smp_ops(r8a7779_smp_ops), 266 .smp = smp_ops(r8a7779_smp_ops),
262 .map_io = r8a7779_map_io, 267 .map_io = r8a7779_map_io,
263 .init_early = r8a7779_add_early_devices, 268 .init_early = r8a7779_add_early_devices,
264 .nr_irqs = NR_IRQS_LEGACY, 269 .init_irq = r8a7779_init_irq_dt,
265 .init_irq = r8a7779_init_irq,
266 .init_machine = marzen_init, 270 .init_machine = marzen_init,
267 .init_late = r8a7779_init_late, 271 .init_late = r8a7779_init_late,
272 .dt_compat = marzen_boards_compat_dt,
268 .init_time = r8a7779_earlytimer_init, 273 .init_time = r8a7779_earlytimer_init,
269MACHINE_END 274MACHINE_END
diff --git a/arch/arm/mach-shmobile/include/mach/r8a73a4.h b/arch/arm/mach-shmobile/include/mach/r8a73a4.h
index 144a85e29245..f3a9b702da56 100644
--- a/arch/arm/mach-shmobile/include/mach/r8a73a4.h
+++ b/arch/arm/mach-shmobile/include/mach/r8a73a4.h
@@ -2,6 +2,7 @@
2#define __ASM_R8A73A4_H__ 2#define __ASM_R8A73A4_H__
3 3
4void r8a73a4_add_standard_devices(void); 4void r8a73a4_add_standard_devices(void);
5void r8a73a4_add_dt_devices(void);
5void r8a73a4_clock_init(void); 6void r8a73a4_clock_init(void);
6void r8a73a4_pinmux_init(void); 7void r8a73a4_pinmux_init(void);
7void r8a73a4_init_delay(void); 8void r8a73a4_init_delay(void);
diff --git a/arch/arm/mach-shmobile/include/mach/r8a7740.h b/arch/arm/mach-shmobile/include/mach/r8a7740.h
index 56f375005fcd..d07932f872b6 100644
--- a/arch/arm/mach-shmobile/include/mach/r8a7740.h
+++ b/arch/arm/mach-shmobile/include/mach/r8a7740.h
@@ -48,7 +48,6 @@ enum {
48 48
49extern void r8a7740_meram_workaround(void); 49extern void r8a7740_meram_workaround(void);
50extern void r8a7740_init_delay(void); 50extern void r8a7740_init_delay(void);
51extern void r8a7740_init_irq(void);
52extern void r8a7740_init_irq_of(void); 51extern void r8a7740_init_irq_of(void);
53extern void r8a7740_map_io(void); 52extern void r8a7740_map_io(void);
54extern void r8a7740_add_early_devices(void); 53extern void r8a7740_add_early_devices(void);
diff --git a/arch/arm/mach-shmobile/include/mach/r8a7778.h b/arch/arm/mach-shmobile/include/mach/r8a7778.h
index 9b561bf4229f..8d24f73d142f 100644
--- a/arch/arm/mach-shmobile/include/mach/r8a7778.h
+++ b/arch/arm/mach-shmobile/include/mach/r8a7778.h
@@ -30,6 +30,7 @@ extern void r8a7778_add_usb_phy_device(struct rcar_phy_platform_data *pdata);
30extern void r8a7778_add_i2c_device(int id); 30extern void r8a7778_add_i2c_device(int id);
31extern void r8a7778_add_hspi_device(int id); 31extern void r8a7778_add_hspi_device(int id);
32extern void r8a7778_add_mmc_device(struct sh_mmcif_plat_data *info); 32extern void r8a7778_add_mmc_device(struct sh_mmcif_plat_data *info);
33extern void r8a7778_add_dt_devices(void);
33 34
34extern void r8a7778_init_late(void); 35extern void r8a7778_init_late(void);
35extern void r8a7778_init_delay(void); 36extern void r8a7778_init_delay(void);
diff --git a/arch/arm/mach-shmobile/include/mach/r8a7779.h b/arch/arm/mach-shmobile/include/mach/r8a7779.h
index f10727f77b11..f08d6ecf5d1d 100644
--- a/arch/arm/mach-shmobile/include/mach/r8a7779.h
+++ b/arch/arm/mach-shmobile/include/mach/r8a7779.h
@@ -24,7 +24,6 @@ static inline struct r8a7779_pm_ch *to_r8a7779_ch(struct generic_pm_domain *d)
24} 24}
25 25
26extern void r8a7779_init_delay(void); 26extern void r8a7779_init_delay(void);
27extern void r8a7779_init_irq(void);
28extern void r8a7779_init_irq_extpin(int irlm); 27extern void r8a7779_init_irq_extpin(int irlm);
29extern void r8a7779_init_irq_dt(void); 28extern void r8a7779_init_irq_dt(void);
30extern void r8a7779_map_io(void); 29extern void r8a7779_map_io(void);
diff --git a/arch/arm/mach-shmobile/include/mach/r8a7790.h b/arch/arm/mach-shmobile/include/mach/r8a7790.h
index 7aaef409a059..788d55952091 100644
--- a/arch/arm/mach-shmobile/include/mach/r8a7790.h
+++ b/arch/arm/mach-shmobile/include/mach/r8a7790.h
@@ -2,6 +2,7 @@
2#define __ASM_R8A7790_H__ 2#define __ASM_R8A7790_H__
3 3
4void r8a7790_add_standard_devices(void); 4void r8a7790_add_standard_devices(void);
5void r8a7790_add_dt_devices(void);
5void r8a7790_clock_init(void); 6void r8a7790_clock_init(void);
6void r8a7790_pinmux_init(void); 7void r8a7790_pinmux_init(void);
7void r8a7790_init_delay(void); 8void r8a7790_init_delay(void);
diff --git a/arch/arm/mach-shmobile/intc-r8a7740.c b/arch/arm/mach-shmobile/intc-r8a7740.c
index 8871f7717dc8..75193539b541 100644
--- a/arch/arm/mach-shmobile/intc-r8a7740.c
+++ b/arch/arm/mach-shmobile/intc-r8a7740.c
@@ -23,12 +23,14 @@
23#include <linux/irqchip.h> 23#include <linux/irqchip.h>
24#include <linux/irqchip/arm-gic.h> 24#include <linux/irqchip/arm-gic.h>
25 25
26static void __init r8a7740_init_irq_common(void) 26void __init r8a7740_init_irq_of(void)
27{ 27{
28 void __iomem *intc_prio_base = ioremap_nocache(0xe6900010, 0x10); 28 void __iomem *intc_prio_base = ioremap_nocache(0xe6900010, 0x10);
29 void __iomem *intc_msk_base = ioremap_nocache(0xe6900040, 0x10); 29 void __iomem *intc_msk_base = ioremap_nocache(0xe6900040, 0x10);
30 void __iomem *pfc_inta_ctrl = ioremap_nocache(0xe605807c, 0x4); 30 void __iomem *pfc_inta_ctrl = ioremap_nocache(0xe605807c, 0x4);
31 31
32 irqchip_init();
33
32 /* route signals to GIC */ 34 /* route signals to GIC */
33 iowrite32(0x0, pfc_inta_ctrl); 35 iowrite32(0x0, pfc_inta_ctrl);
34 36
@@ -50,19 +52,3 @@ static void __init r8a7740_init_irq_common(void)
50 iounmap(intc_msk_base); 52 iounmap(intc_msk_base);
51 iounmap(pfc_inta_ctrl); 53 iounmap(pfc_inta_ctrl);
52} 54}
53
54void __init r8a7740_init_irq_of(void)
55{
56 irqchip_init();
57 r8a7740_init_irq_common();
58}
59
60void __init r8a7740_init_irq(void)
61{
62 void __iomem *gic_dist_base = ioremap_nocache(0xc2800000, 0x1000);
63 void __iomem *gic_cpu_base = ioremap_nocache(0xc2000000, 0x1000);
64
65 /* initialize the Generic Interrupt Controller PL390 r0p0 */
66 gic_init(0, 29, gic_dist_base, gic_cpu_base);
67 r8a7740_init_irq_common();
68}
diff --git a/arch/arm/mach-shmobile/intc-r8a7779.c b/arch/arm/mach-shmobile/intc-r8a7779.c
index 5f9e5dc0238b..e992a68b3bc7 100644
--- a/arch/arm/mach-shmobile/intc-r8a7779.c
+++ b/arch/arm/mach-shmobile/intc-r8a7779.c
@@ -89,15 +89,18 @@ void __init r8a7779_init_irq_extpin(int irlm)
89 pr_warn("r8a7779: unable to setup external irq pin mode\n"); 89 pr_warn("r8a7779: unable to setup external irq pin mode\n");
90} 90}
91 91
92#ifdef CONFIG_OF
92static int r8a7779_set_wake(struct irq_data *data, unsigned int on) 93static int r8a7779_set_wake(struct irq_data *data, unsigned int on)
93{ 94{
94 return 0; /* always allow wakeup */ 95 return 0; /* always allow wakeup */
95} 96}
96 97
97static void __init r8a7779_init_irq_common(void) 98void __init r8a7779_init_irq_dt(void)
98{ 99{
99 gic_arch_extn.irq_set_wake = r8a7779_set_wake; 100 gic_arch_extn.irq_set_wake = r8a7779_set_wake;
100 101
102 irqchip_init();
103
101 /* route all interrupts to ARM */ 104 /* route all interrupts to ARM */
102 __raw_writel(0xffffffff, INT2NTSR0); 105 __raw_writel(0xffffffff, INT2NTSR0);
103 __raw_writel(0x3fffffff, INT2NTSR1); 106 __raw_writel(0x3fffffff, INT2NTSR1);
@@ -108,23 +111,6 @@ static void __init r8a7779_init_irq_common(void)
108 __raw_writel(0xfffbffdf, INT2SMSKCR2); 111 __raw_writel(0xfffbffdf, INT2SMSKCR2);
109 __raw_writel(0xbffffffc, INT2SMSKCR3); 112 __raw_writel(0xbffffffc, INT2SMSKCR3);
110 __raw_writel(0x003fee3f, INT2SMSKCR4); 113 __raw_writel(0x003fee3f, INT2SMSKCR4);
111}
112
113void __init r8a7779_init_irq(void)
114{
115 void __iomem *gic_dist_base = IOMEM(0xf0001000);
116 void __iomem *gic_cpu_base = IOMEM(0xf0000100);
117 114
118 /* use GIC to handle interrupts */
119 gic_init(0, 29, gic_dist_base, gic_cpu_base);
120
121 r8a7779_init_irq_common();
122}
123
124#ifdef CONFIG_OF
125void __init r8a7779_init_irq_dt(void)
126{
127 irqchip_init();
128 r8a7779_init_irq_common();
129} 115}
130#endif 116#endif
diff --git a/arch/arm/mach-shmobile/setup-r8a73a4.c b/arch/arm/mach-shmobile/setup-r8a73a4.c
index 11c0f6305e6b..2ee45d5288b1 100644
--- a/arch/arm/mach-shmobile/setup-r8a73a4.c
+++ b/arch/arm/mach-shmobile/setup-r8a73a4.c
@@ -188,7 +188,7 @@ static struct resource cmt10_resources[] = {
188 &cmt##idx##_platform_data, \ 188 &cmt##idx##_platform_data, \
189 sizeof(struct sh_timer_config)) 189 sizeof(struct sh_timer_config))
190 190
191void __init r8a73a4_add_standard_devices(void) 191void __init r8a73a4_add_dt_devices(void)
192{ 192{
193 r8a73a4_register_scif(SCIFA0); 193 r8a73a4_register_scif(SCIFA0);
194 r8a73a4_register_scif(SCIFA1); 194 r8a73a4_register_scif(SCIFA1);
@@ -196,10 +196,15 @@ void __init r8a73a4_add_standard_devices(void)
196 r8a73a4_register_scif(SCIFB1); 196 r8a73a4_register_scif(SCIFB1);
197 r8a73a4_register_scif(SCIFB2); 197 r8a73a4_register_scif(SCIFB2);
198 r8a73a4_register_scif(SCIFB3); 198 r8a73a4_register_scif(SCIFB3);
199 r8a7790_register_cmt(10);
200}
201
202void __init r8a73a4_add_standard_devices(void)
203{
204 r8a73a4_add_dt_devices();
199 r8a73a4_register_irqc(0); 205 r8a73a4_register_irqc(0);
200 r8a73a4_register_irqc(1); 206 r8a73a4_register_irqc(1);
201 r8a73a4_register_thermal(); 207 r8a73a4_register_thermal();
202 r8a7790_register_cmt(10);
203} 208}
204 209
205void __init r8a73a4_init_delay(void) 210void __init r8a73a4_init_delay(void)
diff --git a/arch/arm/mach-shmobile/setup-r8a7778.c b/arch/arm/mach-shmobile/setup-r8a7778.c
index a3a2e37b03f3..9d4b6bf4245e 100644
--- a/arch/arm/mach-shmobile/setup-r8a7778.c
+++ b/arch/arm/mach-shmobile/setup-r8a7778.c
@@ -333,7 +333,7 @@ void __init r8a7778_add_mmc_device(struct sh_mmcif_plat_data *info)
333 info, sizeof(*info)); 333 info, sizeof(*info));
334} 334}
335 335
336void __init r8a7778_add_standard_devices(void) 336void __init r8a7778_add_dt_devices(void)
337{ 337{
338 int i; 338 int i;
339 339
@@ -357,6 +357,11 @@ void __init r8a7778_add_standard_devices(void)
357 r8a7778_register_tmu(1); 357 r8a7778_register_tmu(1);
358} 358}
359 359
360void __init r8a7778_add_standard_devices(void)
361{
362 r8a7778_add_dt_devices();
363}
364
360void __init r8a7778_init_late(void) 365void __init r8a7778_init_late(void)
361{ 366{
362 phy = usb_get_phy(USB_PHY_TYPE_USB2); 367 phy = usb_get_phy(USB_PHY_TYPE_USB2);
diff --git a/arch/arm/mach-shmobile/setup-r8a7790.c b/arch/arm/mach-shmobile/setup-r8a7790.c
index 4c96dad21195..86cf507bc957 100644
--- a/arch/arm/mach-shmobile/setup-r8a7790.c
+++ b/arch/arm/mach-shmobile/setup-r8a7790.c
@@ -179,7 +179,7 @@ static struct resource cmt00_resources[] = {
179 &cmt##idx##_platform_data, \ 179 &cmt##idx##_platform_data, \
180 sizeof(struct sh_timer_config)) 180 sizeof(struct sh_timer_config))
181 181
182void __init r8a7790_add_standard_devices(void) 182void __init r8a7790_add_dt_devices(void)
183{ 183{
184 r8a7790_register_scif(SCIFA0); 184 r8a7790_register_scif(SCIFA0);
185 r8a7790_register_scif(SCIFA1); 185 r8a7790_register_scif(SCIFA1);
@@ -191,9 +191,14 @@ void __init r8a7790_add_standard_devices(void)
191 r8a7790_register_scif(SCIF1); 191 r8a7790_register_scif(SCIF1);
192 r8a7790_register_scif(HSCIF0); 192 r8a7790_register_scif(HSCIF0);
193 r8a7790_register_scif(HSCIF1); 193 r8a7790_register_scif(HSCIF1);
194 r8a7790_register_cmt(00);
195}
196
197void __init r8a7790_add_standard_devices(void)
198{
199 r8a7790_add_dt_devices();
194 r8a7790_register_irqc(0); 200 r8a7790_register_irqc(0);
195 r8a7790_register_thermal(); 201 r8a7790_register_thermal();
196 r8a7790_register_cmt(00);
197} 202}
198 203
199#define MODEMR 0xe6160060 204#define MODEMR 0xe6160060
diff --git a/arch/arm/mach-shmobile/smp-r8a7779.c b/arch/arm/mach-shmobile/smp-r8a7779.c
index 526cfaae81c1..bb3adae7de0f 100644
--- a/arch/arm/mach-shmobile/smp-r8a7779.c
+++ b/arch/arm/mach-shmobile/smp-r8a7779.c
@@ -99,6 +99,9 @@ static int __cpuinit r8a7779_boot_secondary(unsigned int cpu, struct task_struct
99 99
100static void __init r8a7779_smp_prepare_cpus(unsigned int max_cpus) 100static void __init r8a7779_smp_prepare_cpus(unsigned int max_cpus)
101{ 101{
102
103 /* setup r8a7779 specific SCU base */
104 shmobile_scu_base = IOMEM(R8A7779_SCU_BASE);
102 scu_enable(shmobile_scu_base); 105 scu_enable(shmobile_scu_base);
103 106
104 /* Map the reset vector (in headsmp-scu.S, headsmp.S) */ 107 /* Map the reset vector (in headsmp-scu.S, headsmp.S) */
@@ -117,14 +120,6 @@ static void __init r8a7779_smp_prepare_cpus(unsigned int max_cpus)
117 r8a7779_platform_cpu_kill(3); 120 r8a7779_platform_cpu_kill(3);
118} 121}
119 122
120static void __init r8a7779_smp_init_cpus(void)
121{
122 /* setup r8a7779 specific SCU base */
123 shmobile_scu_base = IOMEM(R8A7779_SCU_BASE);
124
125 shmobile_smp_init_cpus(scu_get_core_count(shmobile_scu_base));
126}
127
128#ifdef CONFIG_HOTPLUG_CPU 123#ifdef CONFIG_HOTPLUG_CPU
129static int r8a7779_scu_psr_core_disabled(int cpu) 124static int r8a7779_scu_psr_core_disabled(int cpu)
130{ 125{
@@ -175,7 +170,6 @@ static int r8a7779_cpu_disable(unsigned int cpu)
175#endif /* CONFIG_HOTPLUG_CPU */ 170#endif /* CONFIG_HOTPLUG_CPU */
176 171
177struct smp_operations r8a7779_smp_ops __initdata = { 172struct smp_operations r8a7779_smp_ops __initdata = {
178 .smp_init_cpus = r8a7779_smp_init_cpus,
179 .smp_prepare_cpus = r8a7779_smp_prepare_cpus, 173 .smp_prepare_cpus = r8a7779_smp_prepare_cpus,
180 .smp_boot_secondary = r8a7779_boot_secondary, 174 .smp_boot_secondary = r8a7779_boot_secondary,
181#ifdef CONFIG_HOTPLUG_CPU 175#ifdef CONFIG_HOTPLUG_CPU
diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c
index d613113a04bd..1b3dc7c1e87e 100644
--- a/arch/arm/mach-shmobile/smp-sh73a0.c
+++ b/arch/arm/mach-shmobile/smp-sh73a0.c
@@ -62,6 +62,8 @@ static int __cpuinit sh73a0_boot_secondary(unsigned int cpu, struct task_struct
62 62
63static void __init sh73a0_smp_prepare_cpus(unsigned int max_cpus) 63static void __init sh73a0_smp_prepare_cpus(unsigned int max_cpus)
64{ 64{
65 /* setup sh73a0 specific SCU base */
66 shmobile_scu_base = IOMEM(SH73A0_SCU_BASE);
65 scu_enable(shmobile_scu_base); 67 scu_enable(shmobile_scu_base);
66 68
67 /* Map the reset vector (in headsmp-scu.S, headsmp.S) */ 69 /* Map the reset vector (in headsmp-scu.S, headsmp.S) */
@@ -74,14 +76,6 @@ static void __init sh73a0_smp_prepare_cpus(unsigned int max_cpus)
74 scu_power_mode(shmobile_scu_base, SCU_PM_NORMAL); 76 scu_power_mode(shmobile_scu_base, SCU_PM_NORMAL);
75} 77}
76 78
77static void __init sh73a0_smp_init_cpus(void)
78{
79 /* setup sh73a0 specific SCU base */
80 shmobile_scu_base = IOMEM(SH73A0_SCU_BASE);
81
82 shmobile_smp_init_cpus(scu_get_core_count(shmobile_scu_base));
83}
84
85#ifdef CONFIG_HOTPLUG_CPU 79#ifdef CONFIG_HOTPLUG_CPU
86static int sh73a0_cpu_kill(unsigned int cpu) 80static int sh73a0_cpu_kill(unsigned int cpu)
87{ 81{
@@ -120,7 +114,6 @@ static int sh73a0_cpu_disable(unsigned int cpu)
120#endif /* CONFIG_HOTPLUG_CPU */ 114#endif /* CONFIG_HOTPLUG_CPU */
121 115
122struct smp_operations sh73a0_smp_ops __initdata = { 116struct smp_operations sh73a0_smp_ops __initdata = {
123 .smp_init_cpus = sh73a0_smp_init_cpus,
124 .smp_prepare_cpus = sh73a0_smp_prepare_cpus, 117 .smp_prepare_cpus = sh73a0_smp_prepare_cpus,
125 .smp_boot_secondary = sh73a0_boot_secondary, 118 .smp_boot_secondary = sh73a0_boot_secondary,
126#ifdef CONFIG_HOTPLUG_CPU 119#ifdef CONFIG_HOTPLUG_CPU