aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-09-06 16:34:43 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-09-06 16:34:43 -0400
commit44598f98b98e54beca34dc836b38eaea40be1abf (patch)
tree42a498e0267b23289ffe240907fd9bacb9156a2c /arch
parentb4b50fd78b1e31989940dfc647e64453d0f7176a (diff)
parent4e5f67fa538ded704c904157e3ca23ceef9c7e64 (diff)
Merge tag 'boards-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC board updates from Olof Johansson: "Board updates for 3.12. Again, a bit of domain overlap with SoC and DT branches, but most of this is around legacy code and board support. We've found that platform maintainers have a hard time separating all of these out and might move towards fewer branches for next release. - Removal of a number of Marvell Kirkwood board files, since contents is now common and mostly configured via DT. - Device-tree updates for Marvell Dove, including irqchip and clocksource setup. - Defconfig updates. Gotta go somewhere. One new one for Renesas Lager. - New backlight drivers for backlights used on Renesas shmobile platforms. - Removal of Renesas leds driver. - Shuffling of some of the new Broadcom platforms to give room for others in the same mach directory. More in 3.13" * tag 'boards-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (67 commits) mmc: sdhci-bcm-kona: Staticize sdhci_bcm_kona_card_event mmc: sdhci-bcm-kona: Remove unneeded version.h inclusion ARM: bcm: Make secure API call optional ARM: DT: binding fixup to align with vendor-prefixes.txt (drivers) ARM: mmc: fix NONREMOVABLE test in sdhci-bcm-kona ARM: bcm: Rename board_bcm mmc: sdhci-bcm-kona: make linker-section warning go away ARM: tegra: defconfig updates ARM: dove: add initial DT file for Globalscale D2Plug ARM: dove: add GPIO IR receiver node to SolidRun CuBox ARM: dove: add common pinmux functions to DT ARM: dove: add cpu device tree node ARM: dove: update dove_defconfig with SI5351, PCI, and xHCI arch/arm/mach-kirkwood: Avoid using ARRAY_AND_SIZE(e) as a function argument ARM: kirkwood: fix DT building and update defconfig ARM: kirkwood: Remove all remaining trace of DNS-320/325 platform code ARM: configs: disable DEBUG_LL in bcm_defconfig ARM: bcm281xx: Board specific reboot code ARM bcm281xx: Turn on socket & network support. ARM: bcm281xx: Turn on L2 cache. ...
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/boot/dts/Makefile2
-rw-r--r--arch/arm/boot/dts/dove-cubox.dts37
-rw-r--r--arch/arm/boot/dts/dove-d2plug.dts69
-rw-r--r--arch/arm/boot/dts/dove.dtsi285
-rw-r--r--arch/arm/boot/dts/kirkwood-cloudbox.dts16
-rw-r--r--arch/arm/boot/dts/kirkwood-db.dtsi16
-rw-r--r--arch/arm/boot/dts/kirkwood-dnskw.dtsi16
-rw-r--r--arch/arm/boot/dts/kirkwood-dockstar.dts17
-rw-r--r--arch/arm/boot/dts/kirkwood-dreamplug.dts28
-rw-r--r--arch/arm/boot/dts/kirkwood-goflexnet.dts16
-rw-r--r--arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts30
-rw-r--r--arch/arm/boot/dts/kirkwood-ib62x0.dts16
-rw-r--r--arch/arm/boot/dts/kirkwood-iconnect.dts16
-rw-r--r--arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts24
-rw-r--r--arch/arm/boot/dts/kirkwood-is2.dts2
-rw-r--r--arch/arm/boot/dts/kirkwood-km_kirkwood.dts16
-rw-r--r--arch/arm/boot/dts/kirkwood-lsxl.dtsi28
-rw-r--r--arch/arm/boot/dts/kirkwood-mplcec4.dts27
-rw-r--r--arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts125
-rw-r--r--arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts16
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2-common.dtsi16
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2.dts2
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2lite.dts2
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2max.dts2
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2mini.dts2
-rw-r--r--arch/arm/boot/dts/kirkwood-openblocks_a6.dts16
-rw-r--r--arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi16
-rw-r--r--arch/arm/boot/dts/kirkwood-topkick.dts16
-rw-r--r--arch/arm/boot/dts/kirkwood-ts219-6281.dts4
-rw-r--r--arch/arm/boot/dts/kirkwood-ts219-6282.dts4
-rw-r--r--arch/arm/boot/dts/kirkwood-ts219.dtsi16
-rw-r--r--arch/arm/boot/dts/kirkwood.dtsi87
-rw-r--r--arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts17
-rw-r--r--arch/arm/boot/dts/orion5x.dtsi34
-rw-r--r--arch/arm/configs/ape6evm_defconfig6
-rw-r--r--arch/arm/configs/bcm_defconfig13
-rw-r--r--arch/arm/configs/dove_defconfig4
-rw-r--r--arch/arm/configs/kirkwood_defconfig51
-rw-r--r--arch/arm/configs/lager_defconfig120
-rw-r--r--arch/arm/configs/marzen_defconfig1
-rw-r--r--arch/arm/configs/mvebu_defconfig2
-rw-r--r--arch/arm/configs/tegra_defconfig9
-rw-r--r--arch/arm/mach-bcm/Kconfig1
-rw-r--r--arch/arm/mach-bcm/Makefile4
-rw-r--r--arch/arm/mach-bcm/bcm_kona_smc.c12
-rw-r--r--arch/arm/mach-bcm/bcm_kona_smc.h2
-rw-r--r--arch/arm/mach-bcm/board_bcm281xx.c (renamed from arch/arm/mach-bcm/board_bcm.c)30
-rw-r--r--arch/arm/mach-bcm/kona.c65
-rw-r--r--arch/arm/mach-bcm/kona.h17
-rw-r--r--arch/arm/mach-dove/Kconfig2
-rw-r--r--arch/arm/mach-dove/Makefile4
-rw-r--r--arch/arm/mach-dove/board-dt.c30
-rw-r--r--arch/arm/mach-kirkwood/Kconfig243
-rw-r--r--arch/arm/mach-kirkwood/Makefile36
-rw-r--r--arch/arm/mach-kirkwood/board-db88f628x-bp.c24
-rw-r--r--arch/arm/mach-kirkwood/board-dnskw.c43
-rw-r--r--arch/arm/mach-kirkwood/board-dockstar.c32
-rw-r--r--arch/arm/mach-kirkwood/board-dreamplug.c35
-rw-r--r--arch/arm/mach-kirkwood/board-dt.c117
-rw-r--r--arch/arm/mach-kirkwood/board-goflexnet.c34
-rw-r--r--arch/arm/mach-kirkwood/board-guruplug.c33
-rw-r--r--arch/arm/mach-kirkwood/board-ib62x0.c29
-rw-r--r--arch/arm/mach-kirkwood/board-iconnect.c24
-rw-r--r--arch/arm/mach-kirkwood/board-iomega_ix2_200.c34
-rw-r--r--arch/arm/mach-kirkwood/board-km_kirkwood.c44
-rw-r--r--arch/arm/mach-kirkwood/board-lsxl.c36
-rw-r--r--arch/arm/mach-kirkwood/board-mplcec4.c35
-rw-r--r--arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c50
-rw-r--r--arch/arm/mach-kirkwood/board-ns2.c35
-rw-r--r--arch/arm/mach-kirkwood/board-openblocks_a6.c26
-rw-r--r--arch/arm/mach-kirkwood/board-readynas.c27
-rw-r--r--arch/arm/mach-kirkwood/board-sheevaplug.c27
-rw-r--r--arch/arm/mach-kirkwood/board-ts219.c40
-rw-r--r--arch/arm/mach-kirkwood/board-usi_topkick.c29
-rw-r--r--arch/arm/mach-kirkwood/common.h115
-rw-r--r--arch/arm/mach-kirkwood/dockstar-setup.c111
-rw-r--r--arch/arm/mach-kirkwood/guruplug-setup.c133
-rw-r--r--arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c172
-rw-r--r--arch/arm/mach-kirkwood/netspace_v2-setup.c293
-rw-r--r--arch/arm/mach-kirkwood/openrd-setup.c3
-rw-r--r--arch/arm/mach-kirkwood/rd88f6281-setup.c4
-rw-r--r--arch/arm/mach-kirkwood/sheevaplug-setup.c161
-rw-r--r--arch/arm/mach-orion5x/edmini_v2-setup.c11
-rw-r--r--arch/arm/mach-shmobile/Kconfig1
-rw-r--r--arch/arm/mach-shmobile/board-ag5evm.c65
-rw-r--r--arch/arm/mach-shmobile/board-ape6evm.c145
-rw-r--r--arch/arm/mach-shmobile/board-armadillo800eva.c56
-rw-r--r--arch/arm/mach-shmobile/board-kota2.c169
-rw-r--r--arch/arm/mach-shmobile/board-lager.c60
-rw-r--r--arch/arm/mach-shmobile/board-mackerel.c34
-rw-r--r--arch/arm/mach-shmobile/clock-sh73a0.c12
-rw-r--r--arch/arm/mach-shmobile/include/mach/sh73a0.h373
-rw-r--r--arch/arm/plat-orion/irq.c2
-rw-r--r--arch/sh/boards/mach-ecovec24/setup.c37
-rw-r--r--arch/sh/boards/mach-kfr2r09/lcd_wqvga.c48
-rw-r--r--arch/sh/boards/mach-kfr2r09/setup.c19
-rw-r--r--arch/sh/include/mach-kfr2r09/mach/kfr2r09.h2
97 files changed, 1802 insertions, 2666 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index f9f4c4d9c704..000cf7628e6e 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -48,6 +48,7 @@ dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \
48 da850-evm.dtb 48 da850-evm.dtb
49dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \ 49dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \
50 dove-cubox.dtb \ 50 dove-cubox.dtb \
51 dove-d2plug.dtb \
51 dove-dove-db.dtb 52 dove-dove-db.dtb
52dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \ 53dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
53 exynos4210-smdkv310.dtb \ 54 exynos4210-smdkv310.dtb \
@@ -85,6 +86,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
85 kirkwood-lschlv2.dtb \ 86 kirkwood-lschlv2.dtb \
86 kirkwood-lsxhl.dtb \ 87 kirkwood-lsxhl.dtb \
87 kirkwood-mplcec4.dtb \ 88 kirkwood-mplcec4.dtb \
89 kirkwood-mv88f6281gtw-ge.dtb \
88 kirkwood-netgear_readynas_duo_v2.dtb \ 90 kirkwood-netgear_readynas_duo_v2.dtb \
89 kirkwood-ns2.dtb \ 91 kirkwood-ns2.dtb \
90 kirkwood-ns2lite.dtb \ 92 kirkwood-ns2lite.dtb \
diff --git a/arch/arm/boot/dts/dove-cubox.dts b/arch/arm/boot/dts/dove-cubox.dts
index 5cae2ab69762..022646ef4b38 100644
--- a/arch/arm/boot/dts/dove-cubox.dts
+++ b/arch/arm/boot/dts/dove-cubox.dts
@@ -42,6 +42,8 @@
42 regulator-always-on; 42 regulator-always-on;
43 regulator-boot-on; 43 regulator-boot-on;
44 gpio = <&gpio0 1 0>; 44 gpio = <&gpio0 1 0>;
45 pinctrl-0 = <&pmx_gpio_1>;
46 pinctrl-names = "default";
45 }; 47 };
46 }; 48 };
47 49
@@ -53,10 +55,24 @@
53 clock-frequency = <25000000>; 55 clock-frequency = <25000000>;
54 }; 56 };
55 }; 57 };
58
59 ir_recv: ir-receiver {
60 compatible = "gpio-ir-receiver";
61 gpios = <&gpio0 19 1>;
62 pinctrl-0 = <&pmx_gpio_19>;
63 pinctrl-names = "default";
64 };
56}; 65};
57 66
58&uart0 { status = "okay"; }; 67&uart0 { status = "okay"; };
59&sata0 { status = "okay"; }; 68&sata0 { status = "okay"; };
69&mdio { status = "okay"; };
70&eth { status = "okay"; };
71
72&ethphy {
73 compatible = "marvell,88e1310";
74 reg = <1>;
75};
60 76
61&i2c0 { 77&i2c0 {
62 status = "okay"; 78 status = "okay";
@@ -103,6 +119,7 @@
103 status = "okay"; 119 status = "okay";
104 /* sdio0 card detect is connected to wrong pin on CuBox */ 120 /* sdio0 card detect is connected to wrong pin on CuBox */
105 cd-gpios = <&gpio0 12 1>; 121 cd-gpios = <&gpio0 12 1>;
122 pinctrl-0 = <&pmx_sdio0 &pmx_gpio_12>;
106}; 123};
107 124
108&spi0 { 125&spi0 {
@@ -115,23 +132,3 @@
115 reg = <0>; 132 reg = <0>;
116 }; 133 };
117}; 134};
118
119&pinctrl {
120 pinctrl-0 = <&pmx_gpio_1 &pmx_gpio_12>;
121 pinctrl-names = "default";
122
123 pmx_gpio_1: pmx-gpio-1 {
124 marvell,pins = "mpp1";
125 marvell,function = "gpio";
126 };
127
128 pmx_gpio_12: pmx-gpio-12 {
129 marvell,pins = "mpp12";
130 marvell,function = "gpio";
131 };
132
133 pmx_gpio_18: pmx-gpio-18 {
134 marvell,pins = "mpp18";
135 marvell,function = "gpio";
136 };
137};
diff --git a/arch/arm/boot/dts/dove-d2plug.dts b/arch/arm/boot/dts/dove-d2plug.dts
new file mode 100644
index 000000000000..e2222ce94f2f
--- /dev/null
+++ b/arch/arm/boot/dts/dove-d2plug.dts
@@ -0,0 +1,69 @@
1/dts-v1/;
2
3/include/ "dove.dtsi"
4
5/ {
6 model = "Globalscale D2Plug";
7 compatible = "globalscale,d2plug", "marvell,dove";
8
9 memory {
10 device_type = "memory";
11 reg = <0x00000000 0x40000000>;
12 };
13
14 chosen {
15 bootargs = "console=ttyS0,115200n8 earlyprintk";
16 };
17
18 leds {
19 compatible = "gpio-leds";
20 pinctrl-0 = <&pmx_gpio_0 &pmx_gpio_1 &pmx_gpio_2>;
21 pinctrl-names = "default";
22
23 wlan-ap {
24 label = "wlan-ap";
25 gpios = <&gpio0 0 1>;
26 };
27
28 wlan-act {
29 label = "wlan-act";
30 gpios = <&gpio0 1 1>;
31 };
32
33 bluetooth-act {
34 label = "bt-act";
35 gpios = <&gpio0 2 1>;
36 };
37 };
38};
39
40&uart0 { status = "okay"; };
41&sata0 { status = "okay"; };
42&i2c0 { status = "okay"; };
43&mdio { status = "okay"; };
44&eth { status = "okay"; };
45
46/* Samsung M8G2F eMMC */
47&sdio0 {
48 status = "okay";
49 non-removable;
50 bus-width = <4>;
51};
52
53/* Marvell SD8787 WLAN/BT */
54&sdio1 {
55 status = "okay";
56 non-removable;
57 bus-width = <4>;
58};
59
60&spi0 {
61 status = "okay";
62
63 /* spi0.0: 4M Flash Macronix MX25L3205D */
64 spi-flash@0 {
65 compatible = "st,m25l3205d";
66 spi-max-frequency = <20000000>;
67 reg = <0>;
68 };
69};
diff --git a/arch/arm/boot/dts/dove.dtsi b/arch/arm/boot/dts/dove.dtsi
index 6cab46849cdb..cc279166646f 100644
--- a/arch/arm/boot/dts/dove.dtsi
+++ b/arch/arm/boot/dts/dove.dtsi
@@ -10,6 +10,23 @@
10 gpio2 = &gpio2; 10 gpio2 = &gpio2;
11 }; 11 };
12 12
13 cpus {
14 #address-cells = <1>;
15 #size-cells = <0>;
16
17 cpu0: cpu@0 {
18 compatible = "marvell,pj4a", "marvell,sheeva-v7";
19 device_type = "cpu";
20 next-level-cache = <&l2>;
21 reg = <0>;
22 };
23 };
24
25 l2: l2-cache {
26 compatible = "marvell,tauros2-cache";
27 marvell,tauros2-cache-features = <0>;
28 };
29
13 soc@f1000000 { 30 soc@f1000000 {
14 compatible = "simple-bus"; 31 compatible = "simple-bus";
15 #address-cells = <1>; 32 #address-cells = <1>;
@@ -25,16 +42,28 @@
25 0xf2100000 0xf2100000 0x0100000 /* PCIe0 I/O 1M */ 42 0xf2100000 0xf2100000 0x0100000 /* PCIe0 I/O 1M */
26 0xf8000000 0xf8000000 0x8000000>; /* BootROM 128M */ 43 0xf8000000 0xf8000000 0x8000000>; /* BootROM 128M */
27 44
28 l2: l2-cache { 45 timer: timer@20300 {
29 compatible = "marvell,tauros2-cache"; 46 compatible = "marvell,orion-timer";
30 marvell,tauros2-cache-features = <0>; 47 reg = <0x20300 0x20>;
48 interrupt-parent = <&bridge_intc>;
49 interrupts = <1>, <2>;
50 clocks = <&core_clk 0>;
31 }; 51 };
32 52
33 intc: interrupt-controller { 53 intc: main-interrupt-ctrl@20200 {
34 compatible = "marvell,orion-intc"; 54 compatible = "marvell,orion-intc";
35 interrupt-controller; 55 interrupt-controller;
36 #interrupt-cells = <1>; 56 #interrupt-cells = <1>;
37 reg = <0x20204 0x04>, <0x20214 0x04>; 57 reg = <0x20200 0x10>, <0x20210 0x10>;
58 };
59
60 bridge_intc: bridge-interrupt-ctrl@20110 {
61 compatible = "marvell,orion-bridge-intc";
62 interrupt-controller;
63 #interrupt-cells = <1>;
64 reg = <0x20110 0x8>;
65 interrupts = <0>;
66 marvell,#interrupts = <5>;
38 }; 67 };
39 68
40 core_clk: core-clocks@d0214 { 69 core_clk: core-clocks@d0214 {
@@ -43,14 +72,14 @@
43 #clock-cells = <1>; 72 #clock-cells = <1>;
44 }; 73 };
45 74
46 gate_clk: clock-gating-control@d0038 { 75 gate_clk: clock-gating-ctrl@d0038 {
47 compatible = "marvell,dove-gating-clock"; 76 compatible = "marvell,dove-gating-clock";
48 reg = <0xd0038 0x4>; 77 reg = <0xd0038 0x4>;
49 clocks = <&core_clk 0>; 78 clocks = <&core_clk 0>;
50 #clock-cells = <1>; 79 #clock-cells = <1>;
51 }; 80 };
52 81
53 thermal: thermal@d001c { 82 thermal: thermal-diode@d001c {
54 compatible = "marvell,dove-thermal"; 83 compatible = "marvell,dove-thermal";
55 reg = <0xd001c 0x0c>, <0xd005c 0x08>; 84 reg = <0xd001c 0x0c>, <0xd005c 0x08>;
56 }; 85 };
@@ -70,6 +99,8 @@
70 reg-shift = <2>; 99 reg-shift = <2>;
71 interrupts = <8>; 100 interrupts = <8>;
72 clocks = <&core_clk 0>; 101 clocks = <&core_clk 0>;
102 pinctrl-0 = <&pmx_uart1>;
103 pinctrl-names = "default";
73 status = "disabled"; 104 status = "disabled";
74 }; 105 };
75 106
@@ -91,7 +122,7 @@
91 status = "disabled"; 122 status = "disabled";
92 }; 123 };
93 124
94 gpio0: gpio@d0400 { 125 gpio0: gpio-ctrl@d0400 {
95 compatible = "marvell,orion-gpio"; 126 compatible = "marvell,orion-gpio";
96 #gpio-cells = <2>; 127 #gpio-cells = <2>;
97 gpio-controller; 128 gpio-controller;
@@ -102,7 +133,7 @@
102 interrupts = <12>, <13>, <14>, <60>; 133 interrupts = <12>, <13>, <14>, <60>;
103 }; 134 };
104 135
105 gpio1: gpio@d0420 { 136 gpio1: gpio-ctrl@d0420 {
106 compatible = "marvell,orion-gpio"; 137 compatible = "marvell,orion-gpio";
107 #gpio-cells = <2>; 138 #gpio-cells = <2>;
108 gpio-controller; 139 gpio-controller;
@@ -113,7 +144,7 @@
113 interrupts = <61>; 144 interrupts = <61>;
114 }; 145 };
115 146
116 gpio2: gpio@e8400 { 147 gpio2: gpio-ctrl@e8400 {
117 compatible = "marvell,orion-gpio"; 148 compatible = "marvell,orion-gpio";
118 #gpio-cells = <2>; 149 #gpio-cells = <2>;
119 gpio-controller; 150 gpio-controller;
@@ -121,13 +152,188 @@
121 ngpios = <8>; 152 ngpios = <8>;
122 }; 153 };
123 154
124 pinctrl: pinctrl@d0200 { 155 pinctrl: pin-ctrl@d0200 {
125 compatible = "marvell,dove-pinctrl"; 156 compatible = "marvell,dove-pinctrl";
126 reg = <0xd0200 0x10>; 157 reg = <0xd0200 0x10>;
127 clocks = <&gate_clk 22>; 158 clocks = <&gate_clk 22>;
159
160 pmx_gpio_0: pmx-gpio-0 {
161 marvell,pins = "mpp0";
162 marvell,function = "gpio";
163 };
164
165 pmx_gpio_1: pmx-gpio-1 {
166 marvell,pins = "mpp1";
167 marvell,function = "gpio";
168 };
169
170 pmx_gpio_2: pmx-gpio-2 {
171 marvell,pins = "mpp2";
172 marvell,function = "gpio";
173 };
174
175 pmx_gpio_3: pmx-gpio-3 {
176 marvell,pins = "mpp3";
177 marvell,function = "gpio";
178 };
179
180 pmx_gpio_4: pmx-gpio-4 {
181 marvell,pins = "mpp4";
182 marvell,function = "gpio";
183 };
184
185 pmx_gpio_5: pmx-gpio-5 {
186 marvell,pins = "mpp5";
187 marvell,function = "gpio";
188 };
189
190 pmx_gpio_6: pmx-gpio-6 {
191 marvell,pins = "mpp6";
192 marvell,function = "gpio";
193 };
194
195 pmx_gpio_7: pmx-gpio-7 {
196 marvell,pins = "mpp7";
197 marvell,function = "gpio";
198 };
199
200 pmx_gpio_8: pmx-gpio-8 {
201 marvell,pins = "mpp8";
202 marvell,function = "gpio";
203 };
204
205 pmx_gpio_9: pmx-gpio-9 {
206 marvell,pins = "mpp9";
207 marvell,function = "gpio";
208 };
209
210 pmx_gpio_10: pmx-gpio-10 {
211 marvell,pins = "mpp10";
212 marvell,function = "gpio";
213 };
214
215 pmx_gpio_11: pmx-gpio-11 {
216 marvell,pins = "mpp11";
217 marvell,function = "gpio";
218 };
219
220 pmx_gpio_12: pmx-gpio-12 {
221 marvell,pins = "mpp12";
222 marvell,function = "gpio";
223 };
224
225 pmx_gpio_13: pmx-gpio-13 {
226 marvell,pins = "mpp13";
227 marvell,function = "gpio";
228 };
229
230 pmx_gpio_14: pmx-gpio-14 {
231 marvell,pins = "mpp14";
232 marvell,function = "gpio";
233 };
234
235 pmx_gpio_15: pmx-gpio-15 {
236 marvell,pins = "mpp15";
237 marvell,function = "gpio";
238 };
239
240 pmx_gpio_16: pmx-gpio-16 {
241 marvell,pins = "mpp16";
242 marvell,function = "gpio";
243 };
244
245 pmx_gpio_17: pmx-gpio-17 {
246 marvell,pins = "mpp17";
247 marvell,function = "gpio";
248 };
249
250 pmx_gpio_18: pmx-gpio-18 {
251 marvell,pins = "mpp18";
252 marvell,function = "gpio";
253 };
254
255 pmx_gpio_19: pmx-gpio-19 {
256 marvell,pins = "mpp19";
257 marvell,function = "gpio";
258 };
259
260 pmx_gpio_20: pmx-gpio-20 {
261 marvell,pins = "mpp20";
262 marvell,function = "gpio";
263 };
264
265 pmx_gpio_21: pmx-gpio-21 {
266 marvell,pins = "mpp21";
267 marvell,function = "gpio";
268 };
269
270 pmx_camera: pmx-camera {
271 marvell,pins = "mpp_camera";
272 marvell,function = "camera";
273 };
274
275 pmx_camera_gpio: pmx-camera-gpio {
276 marvell,pins = "mpp_camera";
277 marvell,function = "gpio";
278 };
279
280 pmx_sdio0: pmx-sdio0 {
281 marvell,pins = "mpp_sdio0";
282 marvell,function = "sdio0";
283 };
284
285 pmx_sdio0_gpio: pmx-sdio0-gpio {
286 marvell,pins = "mpp_sdio0";
287 marvell,function = "gpio";
288 };
289
290 pmx_sdio1: pmx-sdio1 {
291 marvell,pins = "mpp_sdio1";
292 marvell,function = "sdio1";
293 };
294
295 pmx_sdio1_gpio: pmx-sdio1-gpio {
296 marvell,pins = "mpp_sdio1";
297 marvell,function = "gpio";
298 };
299
300 pmx_audio1_gpio: pmx-audio1-gpio {
301 marvell,pins = "mpp_audio1";
302 marvell,function = "gpio";
303 };
304
305 pmx_spi0: pmx-spi0 {
306 marvell,pins = "mpp_spi0";
307 marvell,function = "spi0";
308 };
309
310 pmx_spi0_gpio: pmx-spi0-gpio {
311 marvell,pins = "mpp_spi0";
312 marvell,function = "gpio";
313 };
314
315 pmx_uart1: pmx-uart1 {
316 marvell,pins = "mpp_uart1";
317 marvell,function = "uart1";
318 };
319
320 pmx_uart1_gpio: pmx-uart1-gpio {
321 marvell,pins = "mpp_uart1";
322 marvell,function = "gpio";
323 };
324
325 pmx_nand: pmx-nand {
326 marvell,pins = "mpp_nand";
327 marvell,function = "nand";
328 };
329
330 pmx_nand_gpo: pmx-nand-gpo {
331 marvell,pins = "mpp_nand";
332 marvell,function = "gpo";
333 };
128 }; 334 };
129 335
130 spi0: spi@10600 { 336 spi0: spi-ctrl@10600 {
131 compatible = "marvell,orion-spi"; 337 compatible = "marvell,orion-spi";
132 #address-cells = <1>; 338 #address-cells = <1>;
133 #size-cells = <0>; 339 #size-cells = <0>;
@@ -135,10 +341,12 @@
135 interrupts = <6>; 341 interrupts = <6>;
136 reg = <0x10600 0x28>; 342 reg = <0x10600 0x28>;
137 clocks = <&core_clk 0>; 343 clocks = <&core_clk 0>;
344 pinctrl-0 = <&pmx_spi0>;
345 pinctrl-names = "default";
138 status = "disabled"; 346 status = "disabled";
139 }; 347 };
140 348
141 spi1: spi@14600 { 349 spi1: spi-ctrl@14600 {
142 compatible = "marvell,orion-spi"; 350 compatible = "marvell,orion-spi";
143 #address-cells = <1>; 351 #address-cells = <1>;
144 #size-cells = <0>; 352 #size-cells = <0>;
@@ -149,7 +357,7 @@
149 status = "disabled"; 357 status = "disabled";
150 }; 358 };
151 359
152 i2c0: i2c@11000 { 360 i2c0: i2c-ctrl@11000 {
153 compatible = "marvell,mv64xxx-i2c"; 361 compatible = "marvell,mv64xxx-i2c";
154 reg = <0x11000 0x20>; 362 reg = <0x11000 0x20>;
155 #address-cells = <1>; 363 #address-cells = <1>;
@@ -177,23 +385,27 @@
177 status = "okay"; 385 status = "okay";
178 }; 386 };
179 387
180 sdio0: sdio@92000 { 388 sdio0: sdio-host@92000 {
181 compatible = "marvell,dove-sdhci"; 389 compatible = "marvell,dove-sdhci";
182 reg = <0x92000 0x100>; 390 reg = <0x92000 0x100>;
183 interrupts = <35>, <37>; 391 interrupts = <35>, <37>;
184 clocks = <&gate_clk 8>; 392 clocks = <&gate_clk 8>;
393 pinctrl-0 = <&pmx_sdio0>;
394 pinctrl-names = "default";
185 status = "disabled"; 395 status = "disabled";
186 }; 396 };
187 397
188 sdio1: sdio@90000 { 398 sdio1: sdio-host@90000 {
189 compatible = "marvell,dove-sdhci"; 399 compatible = "marvell,dove-sdhci";
190 reg = <0x90000 0x100>; 400 reg = <0x90000 0x100>;
191 interrupts = <36>, <38>; 401 interrupts = <36>, <38>;
192 clocks = <&gate_clk 9>; 402 clocks = <&gate_clk 9>;
403 pinctrl-0 = <&pmx_sdio1>;
404 pinctrl-names = "default";
193 status = "disabled"; 405 status = "disabled";
194 }; 406 };
195 407
196 sata0: sata@a0000 { 408 sata0: sata-host@a0000 {
197 compatible = "marvell,orion-sata"; 409 compatible = "marvell,orion-sata";
198 reg = <0xa0000 0x2400>; 410 reg = <0xa0000 0x2400>;
199 interrupts = <62>; 411 interrupts = <62>;
@@ -202,12 +414,12 @@
202 status = "disabled"; 414 status = "disabled";
203 }; 415 };
204 416
205 rtc@d8500 { 417 rtc: real-time-clock@d8500 {
206 compatible = "marvell,orion-rtc"; 418 compatible = "marvell,orion-rtc";
207 reg = <0xd8500 0x20>; 419 reg = <0xd8500 0x20>;
208 }; 420 };
209 421
210 crypto: crypto@30000 { 422 crypto: crypto-engine@30000 {
211 compatible = "marvell,orion-crypto"; 423 compatible = "marvell,orion-crypto";
212 reg = <0x30000 0x10000>, 424 reg = <0x30000 0x10000>,
213 <0xc8000000 0x800>; 425 <0xc8000000 0x800>;
@@ -258,5 +470,40 @@
258 dmacap,xor; 470 dmacap,xor;
259 }; 471 };
260 }; 472 };
473
474 mdio: mdio-bus@72004 {
475 compatible = "marvell,orion-mdio";
476 #address-cells = <1>;
477 #size-cells = <0>;
478 reg = <0x72004 0x84>;
479 interrupts = <30>;
480 clocks = <&gate_clk 2>;
481 status = "disabled";
482
483 ethphy: ethernet-phy {
484 device-type = "ethernet-phy";
485 /* set phy address in board file */
486 };
487 };
488
489 eth: ethernet-controller@72000 {
490 compatible = "marvell,orion-eth";
491 #address-cells = <1>;
492 #size-cells = <0>;
493 reg = <0x72000 0x4000>;
494 clocks = <&gate_clk 2>;
495 marvell,tx-checksum-limit = <1600>;
496 status = "disabled";
497
498 ethernet-port@0 {
499 device_type = "network";
500 compatible = "marvell,orion-eth-port";
501 reg = <0>;
502 interrupts = <29>;
503 /* overwrite MAC address in bootloader */
504 local-mac-address = [00 00 00 00 00 00];
505 phy-handle = <&ethphy>;
506 };
507 };
261 }; 508 };
262}; 509};
diff --git a/arch/arm/boot/dts/kirkwood-cloudbox.dts b/arch/arm/boot/dts/kirkwood-cloudbox.dts
index 9bf139c5a34d..142b9cd3b454 100644
--- a/arch/arm/boot/dts/kirkwood-cloudbox.dts
+++ b/arch/arm/boot/dts/kirkwood-cloudbox.dts
@@ -89,3 +89,19 @@
89 gpios = <&gpio0 17 0>; 89 gpios = <&gpio0 17 0>;
90 }; 90 };
91}; 91};
92
93&mdio {
94 status = "okay";
95
96 ethphy0: ethernet-phy@0 {
97 device_type = "ethernet-phy";
98 reg = <0>;
99 };
100};
101
102&eth0 {
103 status = "okay";
104 ethernet0-port@0 {
105 phy-handle = <&ethphy0>;
106 };
107};
diff --git a/arch/arm/boot/dts/kirkwood-db.dtsi b/arch/arm/boot/dts/kirkwood-db.dtsi
index 45c1bf74ac00..c0e2a5879174 100644
--- a/arch/arm/boot/dts/kirkwood-db.dtsi
+++ b/arch/arm/boot/dts/kirkwood-db.dtsi
@@ -79,3 +79,19 @@
79 }; 79 };
80 }; 80 };
81}; 81};
82
83&mdio {
84 status = "okay";
85
86 ethphy0: ethernet-phy@8 {
87 device_type = "ethernet-phy";
88 reg = <8>;
89 };
90};
91
92&eth0 {
93 status = "okay";
94 ethernet0-port@0 {
95 phy-handle = <&ethphy0>;
96 };
97};
diff --git a/arch/arm/boot/dts/kirkwood-dnskw.dtsi b/arch/arm/boot/dts/kirkwood-dnskw.dtsi
index 2e04284846a0..d544f77a4ca4 100644
--- a/arch/arm/boot/dts/kirkwood-dnskw.dtsi
+++ b/arch/arm/boot/dts/kirkwood-dnskw.dtsi
@@ -219,3 +219,19 @@
219 }; 219 };
220 }; 220 };
221}; 221};
222
223&mdio {
224 status = "okay";
225
226 ethphy0: ethernet-phy@8 {
227 device_type = "ethernet-phy";
228 reg = <8>;
229 };
230};
231
232&eth0 {
233 status = "okay";
234 ethernet0-port@0 {
235 phy-handle = <&ethphy0>;
236 };
237};
diff --git a/arch/arm/boot/dts/kirkwood-dockstar.dts b/arch/arm/boot/dts/kirkwood-dockstar.dts
index 4387ae8e93fe..59a2117c35a7 100644
--- a/arch/arm/boot/dts/kirkwood-dockstar.dts
+++ b/arch/arm/boot/dts/kirkwood-dockstar.dts
@@ -90,3 +90,20 @@
90 }; 90 };
91 }; 91 };
92}; 92};
93
94&mdio {
95 status = "okay";
96
97 ethphy0: ethernet-phy@0 {
98 device_type = "ethernet-phy";
99 compatible = "marvell,88e1116";
100 reg = <0>;
101 };
102};
103
104&eth0 {
105 status = "okay";
106 ethernet0-port@0 {
107 phy-handle = <&ethphy0>;
108 };
109};
diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts
index c62837837246..6f62af99c9cb 100644
--- a/arch/arm/boot/dts/kirkwood-dreamplug.dts
+++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts
@@ -99,3 +99,31 @@
99 }; 99 };
100 }; 100 };
101}; 101};
102
103&mdio {
104 status = "okay";
105
106 ethphy0: ethernet-phy@0 {
107 device_type = "ethernet-phy";
108 reg = <0>;
109 };
110
111 ethphy1: ethernet-phy@1 {
112 device_type = "ethernet-phy";
113 reg = <1>;
114 };
115};
116
117&eth0 {
118 status = "okay";
119 ethernet0-port@0 {
120 phy-handle = <&ethphy0>;
121 };
122};
123
124&eth1 {
125 status = "okay";
126 ethernet1-port@0 {
127 phy-handle = <&ethphy1>;
128 };
129};
diff --git a/arch/arm/boot/dts/kirkwood-goflexnet.dts b/arch/arm/boot/dts/kirkwood-goflexnet.dts
index e57118039277..6f7c7d7ecf2a 100644
--- a/arch/arm/boot/dts/kirkwood-goflexnet.dts
+++ b/arch/arm/boot/dts/kirkwood-goflexnet.dts
@@ -170,3 +170,19 @@
170 }; 170 };
171 }; 171 };
172}; 172};
173
174&mdio {
175 status = "okay";
176
177 ethphy0: ethernet-phy@0 {
178 device_type = "ethernet-phy";
179 reg = <0>;
180 };
181};
182
183&eth0 {
184 status = "okay";
185 ethernet0-port@0 {
186 phy-handle = <&ethphy0>;
187 };
188};
diff --git a/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts b/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
index 2c5673adb4bd..6548b9dc6855 100644
--- a/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
+++ b/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
@@ -96,3 +96,33 @@
96 }; 96 };
97 }; 97 };
98}; 98};
99
100&mdio {
101 status = "okay";
102
103 ethphy0: ethernet-phy@0 {
104 device_type = "ethernet-phy";
105 compatible = "marvell,88e1121";
106 reg = <0>;
107 };
108
109 ethphy1: ethernet-phy@1 {
110 device_type = "ethernet-phy";
111 compatible = "marvell,88e1121";
112 reg = <1>;
113 };
114};
115
116&eth0 {
117 status = "okay";
118 ethernet0-port@0 {
119 phy-handle = <&ethphy0>;
120 };
121};
122
123&eth1 {
124 status = "okay";
125 ethernet1-port@0 {
126 phy-handle = <&ethphy1>;
127 };
128};
diff --git a/arch/arm/boot/dts/kirkwood-ib62x0.dts b/arch/arm/boot/dts/kirkwood-ib62x0.dts
index 158161ff6826..cb711a3bd983 100644
--- a/arch/arm/boot/dts/kirkwood-ib62x0.dts
+++ b/arch/arm/boot/dts/kirkwood-ib62x0.dts
@@ -122,3 +122,19 @@
122 122
123 123
124}; 124};
125
126&mdio {
127 status = "okay";
128
129 ethphy0: ethernet-phy@8 {
130 device_type = "ethernet-phy";
131 reg = <8>;
132 };
133};
134
135&eth0 {
136 status = "okay";
137 ethernet0-port@0 {
138 phy-handle = <&ethphy0>;
139 };
140};
diff --git a/arch/arm/boot/dts/kirkwood-iconnect.dts b/arch/arm/boot/dts/kirkwood-iconnect.dts
index 8314118b6b8a..0323f017eeed 100644
--- a/arch/arm/boot/dts/kirkwood-iconnect.dts
+++ b/arch/arm/boot/dts/kirkwood-iconnect.dts
@@ -179,3 +179,19 @@
179 }; 179 };
180 }; 180 };
181}; 181};
182
183&mdio {
184 status = "okay";
185
186 ethphy0: ethernet-phy@11 {
187 device_type = "ethernet-phy";
188 reg = <11>;
189 };
190};
191
192&eth0 {
193 status = "okay";
194 ethernet0-port@0 {
195 phy-handle = <&ethphy0>;
196 };
197};
diff --git a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
index fd7f053e9c96..df8447442b37 100644
--- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
+++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
@@ -194,3 +194,27 @@
194 }; 194 };
195 }; 195 };
196}; 196};
197
198&mdio {
199 status = "okay";
200
201 ethphy1: ethernet-phy@11 {
202 device_type = "ethernet-phy";
203 reg = <11>;
204 };
205};
206
207&eth0 {
208 status = "okay";
209 ethernet0-port@0 {
210 speed = <1000>;
211 duplex = <1>;
212 };
213};
214
215&eth1 {
216 status = "okay";
217 ethernet1-port@0 {
218 phy-handle = <&ethphy1>;
219 };
220};
diff --git a/arch/arm/boot/dts/kirkwood-is2.dts b/arch/arm/boot/dts/kirkwood-is2.dts
index bd88a236f729..da674bbd49a8 100644
--- a/arch/arm/boot/dts/kirkwood-is2.dts
+++ b/arch/arm/boot/dts/kirkwood-is2.dts
@@ -30,3 +30,5 @@
30 }; 30 };
31 }; 31 };
32}; 32};
33
34&ethphy0 { reg = <8>; };
diff --git a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
index b071d37cc291..6899408482d2 100644
--- a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
+++ b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
@@ -50,3 +50,19 @@
50 i2c-gpio,delay-us = <2>; /* ~100 kHz */ 50 i2c-gpio,delay-us = <2>; /* ~100 kHz */
51 }; 51 };
52}; 52};
53
54&mdio {
55 status = "okay";
56
57 ethphy0: ethernet-phy@0 {
58 device_type = "ethernet-phy";
59 reg = <0>;
60 };
61};
62
63&eth0 {
64 status = "okay";
65 ethernet0-port@0 {
66 phy-handle = <&ethphy0>;
67 };
68};
diff --git a/arch/arm/boot/dts/kirkwood-lsxl.dtsi b/arch/arm/boot/dts/kirkwood-lsxl.dtsi
index f7e247cc925a..4e8f9e42c592 100644
--- a/arch/arm/boot/dts/kirkwood-lsxl.dtsi
+++ b/arch/arm/boot/dts/kirkwood-lsxl.dtsi
@@ -207,3 +207,31 @@
207 }; 207 };
208 }; 208 };
209}; 209};
210
211&mdio {
212 status = "okay";
213
214 ethphy0: ethernet-phy@0 {
215 device_type = "ethernet-phy";
216 reg = <0>;
217 };
218
219 ethphy1: ethernet-phy@8 {
220 device_type = "ethernet-phy";
221 reg = <8>;
222 };
223};
224
225&eth0 {
226 status = "okay";
227 ethernet0-port@0 {
228 phy-handle = <&ethphy0>;
229 };
230};
231
232&eth1 {
233 status = "okay";
234 ethernet1-port@0 {
235 phy-handle = <&ethphy1>;
236 };
237};
diff --git a/arch/arm/boot/dts/kirkwood-mplcec4.dts b/arch/arm/boot/dts/kirkwood-mplcec4.dts
index 21f1954c9e54..ce2b94b513db 100644
--- a/arch/arm/boot/dts/kirkwood-mplcec4.dts
+++ b/arch/arm/boot/dts/kirkwood-mplcec4.dts
@@ -194,3 +194,30 @@
194 }; 194 };
195}; 195};
196 196
197&mdio {
198 status = "okay";
199
200 ethphy0: ethernet-phy@1 {
201 device_type = "ethernet-phy";
202 reg = <1>;
203 };
204
205 ethphy1: ethernet-phy@2 {
206 device_type = "ethernet-phy";
207 reg = <2>;
208 };
209};
210
211&eth0 {
212 status = "okay";
213 ethernet0-port@0 {
214 phy-handle = <&ethphy0>;
215 };
216};
217
218&eth1 {
219 status = "okay";
220 ethernet1-port@0 {
221 phy-handle = <&ethphy1>;
222 };
223};
diff --git a/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts b/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
new file mode 100644
index 000000000000..6317e1d088b3
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
@@ -0,0 +1,125 @@
1/*
2 * Marvell 88F6281 GTW GE Board
3 *
4 * Lennert Buytenhek <buytenh@marvell.com>
5 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
6 *
7 * This file is licensed under the terms of the GNU General Public
8 * License version 2. This program is licensed "as is" without any
9 * warranty of any kind, whether express or implied.
10 *
11 * This file contains the definitions that are common between the 6281
12 * and 6282 variants of the Marvell Kirkwood Development Board.
13 */
14
15/dts-v1/;
16
17#include "kirkwood.dtsi"
18#include "kirkwood-6281.dtsi"
19
20/ {
21 model = "Marvell 88F6281 GTW GE Board";
22 compatible = "marvell,mv88f6281gtw-ge", "marvell,kirkwood-88f6281", "marvell,kirkwood";
23
24 memory {
25 device_type = "memory";
26 reg = <0x00000000 0x20000000>; /* 512 MB */
27 };
28
29 chosen {
30 bootargs = "console=ttyS0,115200n8 earlyprintk";
31 };
32
33 ocp@f1000000 {
34 pinctrl@10000 {
35 pmx_usb_led: pmx-usb-led {
36 marvell,pins = "mpp12";
37 marvell,function = "gpo";
38 };
39
40 pmx_leds: pmx-leds {
41 marvell,pins = "mpp20", "mpp21";
42 marvell,function = "gpio";
43 };
44
45 pmx_keys: pmx-keys {
46 marvell,pins = "mpp46", "mpp47";
47 marvell,function = "gpio";
48 };
49 };
50
51 spi@10600 {
52 pinctrl-0 = <&pmx_spi>;
53 pinctrl-names = "default";
54 status = "okay";
55
56 flash@0 {
57 #address-cells = <1>;
58 #size-cells = <1>;
59 compatible = "mx25l12805d";
60 reg = <0>;
61 spi-max-frequency = <50000000>;
62 mode = <0>;
63 };
64 };
65
66 serial@12000 {
67 pinctrl-0 = <&pmx_uart0>;
68 pinctrl-names = "default";
69 clock-frequency = <200000000>;
70 status = "ok";
71 };
72
73 ehci@50000 {
74 status = "okay";
75 };
76
77 pcie-controller {
78 status = "okay";
79
80 pcie@1,0 {
81 status = "okay";
82 };
83 };
84 };
85
86 gpio-leds {
87 compatible = "gpio-leds";
88 pinctrl-0 = <&pmx_leds &pmx_usb_led>;
89 pinctrl-names = "default";
90
91 green-status {
92 label = "gtw:green:Status";
93 gpios = <&gpio0 20 0>;
94 };
95
96 red-status {
97 label = "gtw:red:Status";
98 gpios = <&gpio0 21 0>;
99 };
100
101 green-usb {
102 label = "gtw:green:USB";
103 gpios = <&gpio0 12 0>;
104 };
105 };
106
107 gpio_keys {
108 compatible = "gpio-keys";
109 #address-cells = <1>;
110 #size-cells = <0>;
111 pinctrl-0 = <&pmx_keys>;
112 pinctrl-names = "default";
113
114 button@1 {
115 label = "SWR Button";
116 linux,code = <0x198>; /* KEY_RESTART */
117 gpios = <&gpio1 15 1>;
118 };
119 button@2 {
120 label = "WPS Button";
121 linux,code = <0x211>; /* KEY_WPS_BUTTON */
122 gpios = <&gpio1 14 1>;
123 };
124 };
125};
diff --git a/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts b/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
index cc40f19ae3fc..874857ea9cb8 100644
--- a/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
+++ b/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
@@ -207,3 +207,19 @@
207 }; 207 };
208 }; 208 };
209}; 209};
210
211&mdio {
212 status = "okay";
213
214 ethphy0: ethernet-phy@0 {
215 device_type = "ethernet-phy";
216 reg = <0>;
217 };
218};
219
220&eth0 {
221 status = "okay";
222 ethernet0-port@0 {
223 phy-handle = <&ethphy0>;
224 };
225};
diff --git a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
index d0fb34dc1667..2fcb82e20828 100644
--- a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
+++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
@@ -84,3 +84,19 @@
84 }; 84 };
85 85
86}; 86};
87
88&mdio {
89 status = "okay";
90
91 ethphy0: ethernet-phy {
92 device_type = "ethernet-phy";
93 /* overwrite reg property in board file */
94 };
95};
96
97&eth0 {
98 status = "okay";
99 ethernet0-port@0 {
100 phy-handle = <&ethphy0>;
101 };
102};
diff --git a/arch/arm/boot/dts/kirkwood-ns2.dts b/arch/arm/boot/dts/kirkwood-ns2.dts
index 0599f3cb844e..53368d1022cc 100644
--- a/arch/arm/boot/dts/kirkwood-ns2.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2.dts
@@ -30,3 +30,5 @@
30 }; 30 };
31 }; 31 };
32}; 32};
33
34&ethphy0 { reg = <8>; };
diff --git a/arch/arm/boot/dts/kirkwood-ns2lite.dts b/arch/arm/boot/dts/kirkwood-ns2lite.dts
index b0e17984aea0..279607093cdb 100644
--- a/arch/arm/boot/dts/kirkwood-ns2lite.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2lite.dts
@@ -30,3 +30,5 @@
30 }; 30 };
31 }; 31 };
32}; 32};
33
34&ethphy0 { reg = <0>; };
diff --git a/arch/arm/boot/dts/kirkwood-ns2max.dts b/arch/arm/boot/dts/kirkwood-ns2max.dts
index d4f6a586d553..defdc77fb550 100644
--- a/arch/arm/boot/dts/kirkwood-ns2max.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2max.dts
@@ -49,3 +49,5 @@
49 }; 49 };
50 }; 50 };
51}; 51};
52
53&ethphy0 { reg = <8>; };
diff --git a/arch/arm/boot/dts/kirkwood-ns2mini.dts b/arch/arm/boot/dts/kirkwood-ns2mini.dts
index f30e05af6473..adbafdd90991 100644
--- a/arch/arm/boot/dts/kirkwood-ns2mini.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2mini.dts
@@ -50,3 +50,5 @@
50 }; 50 };
51 }; 51 };
52}; 52};
53
54&ethphy0 { reg = <0>; };
diff --git a/arch/arm/boot/dts/kirkwood-openblocks_a6.dts b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
index 365b792b23a7..85ccf8d8abb1 100644
--- a/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
+++ b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
@@ -166,3 +166,19 @@
166 }; 166 };
167 }; 167 };
168}; 168};
169
170&mdio {
171 status = "okay";
172
173 ethphy0: ethernet-phy@0 {
174 device_type = "ethernet-phy";
175 reg = <0>;
176 };
177};
178
179&eth0 {
180 status = "okay";
181 ethernet0-port@0 {
182 phy-handle = <&ethphy0>;
183 };
184};
diff --git a/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi b/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi
index 0cc5f26bbbb6..5696b630b70b 100644
--- a/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi
+++ b/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi
@@ -91,3 +91,19 @@
91 }; 91 };
92 }; 92 };
93}; 93};
94
95&mdio {
96 status = "okay";
97
98 ethphy0: ethernet-phy@0 {
99 device_type = "ethernet-phy";
100 reg = <0>;
101 };
102};
103
104&eth0 {
105 status = "okay";
106 ethernet0-port@0 {
107 phy-handle = <&ethphy0>;
108 };
109};
diff --git a/arch/arm/boot/dts/kirkwood-topkick.dts b/arch/arm/boot/dts/kirkwood-topkick.dts
index 974f1e0f09b2..30842b4ff293 100644
--- a/arch/arm/boot/dts/kirkwood-topkick.dts
+++ b/arch/arm/boot/dts/kirkwood-topkick.dts
@@ -203,3 +203,19 @@
203 }; 203 };
204 }; 204 };
205}; 205};
206
207&mdio {
208 status = "okay";
209
210 ethphy0: ethernet-phy@0 {
211 device_type = "ethernet-phy";
212 reg = <0>;
213 };
214};
215
216&eth0 {
217 status = "okay";
218 ethernet0-port@0 {
219 phy-handle = <&ethphy0>;
220 };
221};
diff --git a/arch/arm/boot/dts/kirkwood-ts219-6281.dts b/arch/arm/boot/dts/kirkwood-ts219-6281.dts
index 3867ae3030be..f755bc1dc604 100644
--- a/arch/arm/boot/dts/kirkwood-ts219-6281.dts
+++ b/arch/arm/boot/dts/kirkwood-ts219-6281.dts
@@ -50,4 +50,6 @@
50 gpios = <&gpio0 16 1>; 50 gpios = <&gpio0 16 1>;
51 }; 51 };
52 }; 52 };
53}; \ No newline at end of file 53};
54
55&ethphy0 { reg = <8>; };
diff --git a/arch/arm/boot/dts/kirkwood-ts219-6282.dts b/arch/arm/boot/dts/kirkwood-ts219-6282.dts
index 04f6fe106bb5..9efcd2dc79d3 100644
--- a/arch/arm/boot/dts/kirkwood-ts219-6282.dts
+++ b/arch/arm/boot/dts/kirkwood-ts219-6282.dts
@@ -61,4 +61,6 @@
61 gpios = <&gpio1 5 1>; 61 gpios = <&gpio1 5 1>;
62 }; 62 };
63 }; 63 };
64}; \ No newline at end of file 64};
65
66&ethphy0 { reg = <0>; };
diff --git a/arch/arm/boot/dts/kirkwood-ts219.dtsi b/arch/arm/boot/dts/kirkwood-ts219.dtsi
index 7019cf675df2..39158cf16258 100644
--- a/arch/arm/boot/dts/kirkwood-ts219.dtsi
+++ b/arch/arm/boot/dts/kirkwood-ts219.dtsi
@@ -99,3 +99,19 @@
99 }; 99 };
100 }; 100 };
101}; 101};
102
103&mdio {
104 status = "okay";
105
106 ethphy0: ethernet-phy {
107 device_type = "ethernet-phy";
108 /* overwrite reg property in board file */
109 };
110};
111
112&eth0 {
113 status = "okay";
114 ethernet0-port@0 {
115 phy-handle = <&ethphy0>;
116 };
117};
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi
index 70f414d9bd9a..cf7aeaf89e9c 100644
--- a/arch/arm/boot/dts/kirkwood.dtsi
+++ b/arch/arm/boot/dts/kirkwood.dtsi
@@ -22,13 +22,6 @@
22 gpio0 = &gpio0; 22 gpio0 = &gpio0;
23 gpio1 = &gpio1; 23 gpio1 = &gpio1;
24 }; 24 };
25 intc: interrupt-controller {
26 compatible = "marvell,orion-intc", "marvell,intc";
27 interrupt-controller;
28 #interrupt-cells = <1>;
29 reg = <0xf1020204 0x04>,
30 <0xf1020214 0x04>;
31 };
32 25
33 mbus { 26 mbus {
34 compatible = "marvell,kirkwood-mbus", "simple-bus"; 27 compatible = "marvell,kirkwood-mbus", "simple-bus";
@@ -52,6 +45,30 @@
52 reg = <0x20000 0x80>, <0x1500 0x20>; 45 reg = <0x20000 0x80>, <0x1500 0x20>;
53 }; 46 };
54 47
48 timer: timer@20300 {
49 compatible = "marvell,orion-timer";
50 reg = <0x20300 0x20>;
51 interrupt-parent = <&bridge_intc>;
52 interrupts = <1>, <2>;
53 clocks = <&core_clk 0>;
54 };
55
56 intc: main-interrupt-ctrl@20200 {
57 compatible = "marvell,orion-intc";
58 interrupt-controller;
59 #interrupt-cells = <1>;
60 reg = <0x20200 0x10>, <0x20210 0x10>;
61 };
62
63 bridge_intc: bridge-interrupt-ctrl@20110 {
64 compatible = "marvell,orion-bridge-intc";
65 interrupt-controller;
66 #interrupt-cells = <1>;
67 reg = <0x20110 0x8>;
68 interrupts = <1>;
69 marvell,#interrupts = <6>;
70 };
71
55 core_clk: core-clocks@10030 { 72 core_clk: core-clocks@10030 {
56 compatible = "marvell,kirkwood-core-clock"; 73 compatible = "marvell,kirkwood-core-clock";
57 reg = <0x10030 0x4>; 74 reg = <0x10030 0x4>;
@@ -118,9 +135,11 @@
118 #clock-cells = <1>; 135 #clock-cells = <1>;
119 }; 136 };
120 137
121 wdt@20300 { 138 wdt: watchdog-timer@20300 {
122 compatible = "marvell,orion-wdt"; 139 compatible = "marvell,orion-wdt";
123 reg = <0x20300 0x28>; 140 reg = <0x20300 0x28>;
141 interrupt-parent = <&bridge_intc>;
142 interrupts = <3>;
124 clocks = <&gate_clk 7>; 143 clocks = <&gate_clk 7>;
125 status = "okay"; 144 status = "okay";
126 }; 145 };
@@ -207,5 +226,57 @@
207 clocks = <&gate_clk 17>; 226 clocks = <&gate_clk 17>;
208 status = "okay"; 227 status = "okay";
209 }; 228 };
229
230 mdio: mdio-bus@72004 {
231 compatible = "marvell,orion-mdio";
232 #address-cells = <1>;
233 #size-cells = <0>;
234 reg = <0x72004 0x84>;
235 interrupts = <46>;
236 clocks = <&gate_clk 0>;
237 status = "disabled";
238
239 /* add phy nodes in board file */
240 };
241
242 eth0: ethernet-controller@72000 {
243 compatible = "marvell,kirkwood-eth";
244 #address-cells = <1>;
245 #size-cells = <0>;
246 reg = <0x72000 0x4000>;
247 clocks = <&gate_clk 0>;
248 marvell,tx-checksum-limit = <1600>;
249 status = "disabled";
250
251 ethernet0-port@0 {
252 device_type = "network";
253 compatible = "marvell,kirkwood-eth-port";
254 reg = <0>;
255 interrupts = <11>;
256 /* overwrite MAC address in bootloader */
257 local-mac-address = [00 00 00 00 00 00];
258 /* set phy-handle property in board file */
259 };
260 };
261
262 eth1: ethernet-controller@76000 {
263 compatible = "marvell,kirkwood-eth";
264 #address-cells = <1>;
265 #size-cells = <0>;
266 reg = <0x76000 0x4000>;
267 clocks = <&gate_clk 19>;
268 marvell,tx-checksum-limit = <1600>;
269 status = "disabled";
270
271 ethernet1-port@0 {
272 device_type = "network";
273 compatible = "marvell,kirkwood-eth-port";
274 reg = <0>;
275 interrupts = <15>;
276 /* overwrite MAC address in bootloader */
277 local-mac-address = [00 00 00 00 00 00];
278 /* set phy-handle property in board file */
279 };
280 };
210 }; 281 };
211}; 282};
diff --git a/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts
index 0077fc8510b7..aed83deaa991 100644
--- a/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts
+++ b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts
@@ -53,3 +53,20 @@
53 }; 53 };
54 }; 54 };
55}; 55};
56
57&mdio {
58 status = "okay";
59
60 ethphy: ethernet-phy {
61 device-type = "ethernet-phy";
62 reg = <8>;
63 };
64};
65
66&eth {
67 status = "okay";
68
69 ethernet-port@0 {
70 phy-handle = <&ethphy>;
71 };
72};
diff --git a/arch/arm/boot/dts/orion5x.dtsi b/arch/arm/boot/dts/orion5x.dtsi
index 892c64e3f1e1..e06c37e91ac6 100644
--- a/arch/arm/boot/dts/orion5x.dtsi
+++ b/arch/arm/boot/dts/orion5x.dtsi
@@ -16,11 +16,12 @@
16 aliases { 16 aliases {
17 gpio0 = &gpio0; 17 gpio0 = &gpio0;
18 }; 18 };
19
19 intc: interrupt-controller { 20 intc: interrupt-controller {
20 compatible = "marvell,orion-intc", "marvell,intc"; 21 compatible = "marvell,orion-intc";
21 interrupt-controller; 22 interrupt-controller;
22 #interrupt-cells = <1>; 23 #interrupt-cells = <1>;
23 reg = <0xf1020204 0x04>; 24 reg = <0xf1020200 0x08>;
24 }; 25 };
25 26
26 ocp@f1000000 { 27 ocp@f1000000 {
@@ -132,5 +133,34 @@
132 interrupts = <28>; 133 interrupts = <28>;
133 status = "okay"; 134 status = "okay";
134 }; 135 };
136
137 mdio: mdio-bus@72004 {
138 compatible = "marvell,orion-mdio";
139 #address-cells = <1>;
140 #size-cells = <0>;
141 reg = <0x72004 0x84>;
142 interrupts = <22>;
143 status = "disabled";
144
145 /* add phy nodes in board file */
146 };
147
148 eth: ethernet-controller@72000 {
149 compatible = "marvell,orion-eth";
150 #address-cells = <1>;
151 #size-cells = <0>;
152 reg = <0x72000 0x4000>;
153 marvell,tx-checksum-limit = <1600>;
154 status = "disabled";
155
156 ethernet-port@0 {
157 device_type = "network";
158 compatible = "marvell,orion-eth-port";
159 reg = <0>;
160 /* overwrite MAC address in bootloader */
161 local-mac-address = [00 00 00 00 00 00];
162 /* set phy-handle property in board file */
163 };
164 };
135 }; 165 };
136}; 166};
diff --git a/arch/arm/configs/ape6evm_defconfig b/arch/arm/configs/ape6evm_defconfig
index dab5a7dfadc6..1ce39940795d 100644
--- a/arch/arm/configs/ape6evm_defconfig
+++ b/arch/arm/configs/ape6evm_defconfig
@@ -54,7 +54,8 @@ CONFIG_NETDEVICES=y
54CONFIG_SMC91X=y 54CONFIG_SMC91X=y
55CONFIG_SMSC911X=y 55CONFIG_SMSC911X=y
56# CONFIG_INPUT_MOUSEDEV is not set 56# CONFIG_INPUT_MOUSEDEV is not set
57# CONFIG_INPUT_KEYBOARD is not set 57CONFIG_INPUT_EVDEV=y
58CONFIG_KEYBOARD_GPIO=y
58# CONFIG_INPUT_MOUSE is not set 59# CONFIG_INPUT_MOUSE is not set
59# CONFIG_SERIO is not set 60# CONFIG_SERIO is not set
60CONFIG_SERIAL_NONSTANDARD=y 61CONFIG_SERIAL_NONSTANDARD=y
@@ -71,6 +72,9 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y
71CONFIG_REGULATOR_GPIO=y 72CONFIG_REGULATOR_GPIO=y
72# CONFIG_HID is not set 73# CONFIG_HID is not set
73# CONFIG_USB_SUPPORT is not set 74# CONFIG_USB_SUPPORT is not set
75CONFIG_NEW_LEDS=y
76CONFIG_LEDS_CLASS=y
77CONFIG_LEDS_GPIO=y
74# CONFIG_IOMMU_SUPPORT is not set 78# CONFIG_IOMMU_SUPPORT is not set
75# CONFIG_DNOTIFY is not set 79# CONFIG_DNOTIFY is not set
76CONFIG_TMPFS=y 80CONFIG_TMPFS=y
diff --git a/arch/arm/configs/bcm_defconfig b/arch/arm/configs/bcm_defconfig
index 65edf6d47215..6e4931097dd4 100644
--- a/arch/arm/configs/bcm_defconfig
+++ b/arch/arm/configs/bcm_defconfig
@@ -42,6 +42,18 @@ CONFIG_VFP=y
42CONFIG_NEON=y 42CONFIG_NEON=y
43# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 43# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
44CONFIG_PM_RUNTIME=y 44CONFIG_PM_RUNTIME=y
45CONFIG_NET=y
46CONFIG_PACKET=y
47CONFIG_PACKET_DIAG=y
48CONFIG_UNIX=y
49CONFIG_UNIX_DIAG=y
50CONFIG_NET_KEY=y
51CONFIG_INET=y
52CONFIG_IP_MULTICAST=y
53CONFIG_ARPD=y
54CONFIG_SYN_COOKIES=y
55CONFIG_TCP_MD5SIG=y
56CONFIG_IPV6=y
45CONFIG_DEVTMPFS=y 57CONFIG_DEVTMPFS=y
46CONFIG_DEVTMPFS_MOUNT=y 58CONFIG_DEVTMPFS_MOUNT=y
47CONFIG_PROC_DEVICETREE=y 59CONFIG_PROC_DEVICETREE=y
@@ -112,7 +124,6 @@ CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=110
112CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y 124CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
113CONFIG_DEBUG_INFO=y 125CONFIG_DEBUG_INFO=y
114# CONFIG_FTRACE is not set 126# CONFIG_FTRACE is not set
115CONFIG_DEBUG_LL=y
116CONFIG_CRC_CCITT=y 127CONFIG_CRC_CCITT=y
117CONFIG_CRC_T10DIF=y 128CONFIG_CRC_T10DIF=y
118CONFIG_CRC_ITU_T=y 129CONFIG_CRC_ITU_T=y
diff --git a/arch/arm/configs/dove_defconfig b/arch/arm/configs/dove_defconfig
index 4364eff5b01e..110105476848 100644
--- a/arch/arm/configs/dove_defconfig
+++ b/arch/arm/configs/dove_defconfig
@@ -13,6 +13,9 @@ CONFIG_ARCH_DOVE=y
13CONFIG_MACH_DOVE_DB=y 13CONFIG_MACH_DOVE_DB=y
14CONFIG_MACH_CM_A510=y 14CONFIG_MACH_CM_A510=y
15CONFIG_MACH_DOVE_DT=y 15CONFIG_MACH_DOVE_DT=y
16CONFIG_PCI=y
17CONFIG_PCI_MSI=y
18CONFIG_PCI_MVEBU=y
16CONFIG_AEABI=y 19CONFIG_AEABI=y
17CONFIG_HIGHMEM=y 20CONFIG_HIGHMEM=y
18CONFIG_ZBOOT_ROM_TEXT=0x0 21CONFIG_ZBOOT_ROM_TEXT=0x0
@@ -78,6 +81,7 @@ CONFIG_SPI_ORION=y
78CONFIG_THERMAL=y 81CONFIG_THERMAL=y
79CONFIG_DOVE_THERMAL=y 82CONFIG_DOVE_THERMAL=y
80CONFIG_USB=y 83CONFIG_USB=y
84CONFIG_USB_XHCI_HCD=y
81CONFIG_USB_EHCI_HCD=y 85CONFIG_USB_EHCI_HCD=y
82CONFIG_USB_EHCI_ROOT_HUB_TT=y 86CONFIG_USB_EHCI_ROOT_HUB_TT=y
83CONFIG_USB_STORAGE=y 87CONFIG_USB_STORAGE=y
diff --git a/arch/arm/configs/kirkwood_defconfig b/arch/arm/configs/kirkwood_defconfig
index 0f2aa61911a3..0ae0eaebf6b2 100644
--- a/arch/arm/configs/kirkwood_defconfig
+++ b/arch/arm/configs/kirkwood_defconfig
@@ -10,49 +10,18 @@ CONFIG_MODULE_UNLOAD=y
10# CONFIG_BLK_DEV_BSG is not set 10# CONFIG_BLK_DEV_BSG is not set
11CONFIG_ARCH_KIRKWOOD=y 11CONFIG_ARCH_KIRKWOOD=y
12CONFIG_MACH_D2NET_V2=y 12CONFIG_MACH_D2NET_V2=y
13CONFIG_MACH_DB88F6281_BP=y
14CONFIG_MACH_DOCKSTAR=y
15CONFIG_MACH_ESATA_SHEEVAPLUG=y
16CONFIG_MACH_GURUPLUG=y
17CONFIG_MACH_INETSPACE_V2=y
18CONFIG_MACH_MV88F6281GTW_GE=y
19CONFIG_MACH_NET2BIG_V2=y 13CONFIG_MACH_NET2BIG_V2=y
20CONFIG_MACH_NET5BIG_V2=y 14CONFIG_MACH_NET5BIG_V2=y
21CONFIG_MACH_NETSPACE_MAX_V2=y
22CONFIG_MACH_NETSPACE_V2=y
23CONFIG_MACH_OPENRD_BASE=y 15CONFIG_MACH_OPENRD_BASE=y
24CONFIG_MACH_OPENRD_CLIENT=y 16CONFIG_MACH_OPENRD_CLIENT=y
25CONFIG_MACH_OPENRD_ULTIMATE=y 17CONFIG_MACH_OPENRD_ULTIMATE=y
26CONFIG_MACH_RD88F6192_NAS=y 18CONFIG_MACH_RD88F6192_NAS=y
27CONFIG_MACH_RD88F6281=y 19CONFIG_MACH_RD88F6281=y
28CONFIG_MACH_SHEEVAPLUG=y
29CONFIG_MACH_T5325=y 20CONFIG_MACH_T5325=y
30CONFIG_MACH_TS219=y 21CONFIG_MACH_TS219=y
31CONFIG_MACH_TS41X=y 22CONFIG_MACH_TS41X=y
32CONFIG_MACH_CLOUDBOX_DT=y 23CONFIG_ARCH_KIRKWOOD_DT=y
33CONFIG_MACH_DB88F628X_BP_DT=y 24CONFIG_MACH_MV88F6281GTW_GE_DT=y
34CONFIG_MACH_DLINK_KIRKWOOD_DT=y
35CONFIG_MACH_DOCKSTAR_DT=y
36CONFIG_MACH_DREAMPLUG_DT=y
37CONFIG_MACH_GOFLEXNET_DT=y
38CONFIG_MACH_GURUPLUG_DT=y
39CONFIG_MACH_IB62X0_DT=y
40CONFIG_MACH_ICONNECT_DT=y
41CONFIG_MACH_INETSPACE_V2_DT=y
42CONFIG_MACH_IOMEGA_IX2_200_DT=y
43CONFIG_MACH_KM_KIRKWOOD_DT=y
44CONFIG_MACH_LSXL_DT=y
45CONFIG_MACH_MPLCEC4_DT=y
46CONFIG_MACH_NETSPACE_LITE_V2_DT=y
47CONFIG_MACH_NETSPACE_MAX_V2_DT=y
48CONFIG_MACH_NETSPACE_MINI_V2_DT=y
49CONFIG_MACH_NETSPACE_V2_DT=y
50CONFIG_MACH_NSA310_DT=y
51CONFIG_MACH_OPENBLOCKS_A6_DT=y
52CONFIG_MACH_READYNAS_DT=y
53CONFIG_MACH_SHEEVAPLUG_DT=y
54CONFIG_MACH_TOPKICK_DT=y
55CONFIG_MACH_TS219_DT=y
56# CONFIG_CPU_FEROCEON_OLD_ID is not set 25# CONFIG_CPU_FEROCEON_OLD_ID is not set
57CONFIG_PCI_MVEBU=y 26CONFIG_PCI_MVEBU=y
58CONFIG_PREEMPT=y 27CONFIG_PREEMPT=y
@@ -92,6 +61,7 @@ CONFIG_MTD_M25P80=y
92CONFIG_MTD_NAND=y 61CONFIG_MTD_NAND=y
93CONFIG_MTD_NAND_ORION=y 62CONFIG_MTD_NAND_ORION=y
94CONFIG_BLK_DEV_LOOP=y 63CONFIG_BLK_DEV_LOOP=y
64CONFIG_EEPROM_AT24=y
95# CONFIG_SCSI_PROC_FS is not set 65# CONFIG_SCSI_PROC_FS is not set
96CONFIG_BLK_DEV_SD=y 66CONFIG_BLK_DEV_SD=y
97CONFIG_BLK_DEV_SR=m 67CONFIG_BLK_DEV_SR=m
@@ -100,9 +70,9 @@ CONFIG_ATA=y
100CONFIG_SATA_AHCI=y 70CONFIG_SATA_AHCI=y
101CONFIG_SATA_MV=y 71CONFIG_SATA_MV=y
102CONFIG_NETDEVICES=y 72CONFIG_NETDEVICES=y
103CONFIG_MII=y
104CONFIG_NET_DSA_MV88E6123_61_65=y 73CONFIG_NET_DSA_MV88E6123_61_65=y
105CONFIG_MV643XX_ETH=y 74CONFIG_MV643XX_ETH=y
75CONFIG_R8169=y
106CONFIG_MARVELL_PHY=y 76CONFIG_MARVELL_PHY=y
107CONFIG_LIBERTAS=y 77CONFIG_LIBERTAS=y
108CONFIG_LIBERTAS_SDIO=y 78CONFIG_LIBERTAS_SDIO=y
@@ -123,9 +93,11 @@ CONFIG_I2C_MV64XXX=y
123CONFIG_SPI=y 93CONFIG_SPI=y
124CONFIG_SPI_ORION=y 94CONFIG_SPI_ORION=y
125CONFIG_GPIO_SYSFS=y 95CONFIG_GPIO_SYSFS=y
126# CONFIG_HWMON is not set 96CONFIG_SENSORS_ADT7475=y
97CONFIG_SENSORS_LM63=y
98CONFIG_SENSORS_LM75=y
99CONFIG_SENSORS_LM85=y
127CONFIG_THERMAL=y 100CONFIG_THERMAL=y
128CONFIG_KIRKWOOD_THERMAL=y
129CONFIG_WATCHDOG=y 101CONFIG_WATCHDOG=y
130CONFIG_ORION_WATCHDOG=y 102CONFIG_ORION_WATCHDOG=y
131CONFIG_HID_DRAGONRISE=y 103CONFIG_HID_DRAGONRISE=y
@@ -164,6 +136,8 @@ CONFIG_LEDS_TRIGGER_TIMER=y
164CONFIG_LEDS_TRIGGER_HEARTBEAT=y 136CONFIG_LEDS_TRIGGER_HEARTBEAT=y
165CONFIG_LEDS_TRIGGER_DEFAULT_ON=y 137CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
166CONFIG_RTC_CLASS=y 138CONFIG_RTC_CLASS=y
139CONFIG_RTC_DRV_RS5C372=y
140CONFIG_RTC_DRV_PCF8563=y
167CONFIG_RTC_DRV_S35390A=y 141CONFIG_RTC_DRV_S35390A=y
168CONFIG_RTC_DRV_MV=y 142CONFIG_RTC_DRV_MV=y
169CONFIG_DMADEVICES=y 143CONFIG_DMADEVICES=y
@@ -171,6 +145,7 @@ CONFIG_MV_XOR=y
171CONFIG_EXT2_FS=y 145CONFIG_EXT2_FS=y
172CONFIG_EXT3_FS=y 146CONFIG_EXT3_FS=y
173# CONFIG_EXT3_FS_XATTR is not set 147# CONFIG_EXT3_FS_XATTR is not set
148CONFIG_EXT4_FS=y
174CONFIG_ISO9660_FS=m 149CONFIG_ISO9660_FS=m
175CONFIG_JOLIET=y 150CONFIG_JOLIET=y
176CONFIG_UDF_FS=m 151CONFIG_UDF_FS=m
@@ -186,12 +161,12 @@ CONFIG_NLS_CODEPAGE_850=y
186CONFIG_NLS_ISO8859_1=y 161CONFIG_NLS_ISO8859_1=y
187CONFIG_NLS_ISO8859_2=y 162CONFIG_NLS_ISO8859_2=y
188CONFIG_NLS_UTF8=y 163CONFIG_NLS_UTF8=y
189CONFIG_MAGIC_SYSRQ=y 164CONFIG_DEBUG_INFO=y
190CONFIG_DEBUG_FS=y 165CONFIG_DEBUG_FS=y
166CONFIG_MAGIC_SYSRQ=y
191CONFIG_DEBUG_KERNEL=y 167CONFIG_DEBUG_KERNEL=y
192# CONFIG_SCHED_DEBUG is not set 168# CONFIG_SCHED_DEBUG is not set
193# CONFIG_DEBUG_PREEMPT is not set 169# CONFIG_DEBUG_PREEMPT is not set
194CONFIG_DEBUG_INFO=y
195# CONFIG_FTRACE is not set 170# CONFIG_FTRACE is not set
196CONFIG_DEBUG_USER=y 171CONFIG_DEBUG_USER=y
197CONFIG_DEBUG_LL=y 172CONFIG_DEBUG_LL=y
diff --git a/arch/arm/configs/lager_defconfig b/arch/arm/configs/lager_defconfig
new file mode 100644
index 000000000000..e777ef22b801
--- /dev/null
+++ b/arch/arm/configs/lager_defconfig
@@ -0,0 +1,120 @@
1CONFIG_SYSVIPC=y
2CONFIG_NO_HZ=y
3CONFIG_IKCONFIG=y
4CONFIG_IKCONFIG_PROC=y
5CONFIG_LOG_BUF_SHIFT=16
6CONFIG_CC_OPTIMIZE_FOR_SIZE=y
7CONFIG_SYSCTL_SYSCALL=y
8CONFIG_EMBEDDED=y
9CONFIG_PERF_EVENTS=y
10CONFIG_SLAB=y
11# CONFIG_LBDAF is not set
12# CONFIG_BLK_DEV_BSG is not set
13# CONFIG_IOSCHED_DEADLINE is not set
14# CONFIG_IOSCHED_CFQ is not set
15CONFIG_ARCH_SHMOBILE=y
16CONFIG_ARCH_R8A7790=y
17CONFIG_MACH_LAGER=y
18# CONFIG_SH_TIMER_TMU is not set
19# CONFIG_EM_TIMER_STI is not set
20CONFIG_ARM_ERRATA_430973=y
21CONFIG_ARM_ERRATA_458693=y
22CONFIG_ARM_ERRATA_460075=y
23CONFIG_ARM_ERRATA_743622=y
24CONFIG_ARM_ERRATA_754322=y
25CONFIG_HAVE_ARM_ARCH_TIMER=y
26CONFIG_AEABI=y
27# CONFIG_OABI_COMPAT is not set
28CONFIG_FORCE_MAX_ZONEORDER=13
29CONFIG_ZBOOT_ROM_TEXT=0x0
30CONFIG_ZBOOT_ROM_BSS=0x0
31CONFIG_ARM_APPENDED_DTB=y
32CONFIG_KEXEC=y
33CONFIG_AUTO_ZRELADDR=y
34CONFIG_VFP=y
35CONFIG_NEON=y
36# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
37CONFIG_PM_RUNTIME=y
38CONFIG_NET=y
39CONFIG_PACKET=y
40CONFIG_UNIX=y
41CONFIG_INET=y
42CONFIG_IP_PNP=y
43CONFIG_IP_PNP_DHCP=y
44# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
45# CONFIG_INET_XFRM_MODE_TUNNEL is not set
46# CONFIG_INET_XFRM_MODE_BEET is not set
47# CONFIG_INET_LRO is not set
48# CONFIG_INET_DIAG is not set
49# CONFIG_IPV6 is not set
50# CONFIG_WIRELESS is not set
51CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
52CONFIG_NETDEVICES=y
53# CONFIG_NET_CORE is not set
54# CONFIG_NET_VENDOR_ARC is not set
55# CONFIG_NET_CADENCE is not set
56# CONFIG_NET_VENDOR_BROADCOM is not set
57# CONFIG_NET_VENDOR_CIRRUS is not set
58# CONFIG_NET_VENDOR_FARADAY is not set
59# CONFIG_NET_VENDOR_INTEL is not set
60# CONFIG_NET_VENDOR_MARVELL is not set
61# CONFIG_NET_VENDOR_MICREL is not set
62# CONFIG_NET_VENDOR_NATSEMI is not set
63CONFIG_SH_ETH=y
64# CONFIG_NET_VENDOR_SEEQ is not set
65# CONFIG_NET_VENDOR_SMSC is not set
66# CONFIG_NET_VENDOR_STMICRO is not set
67# CONFIG_NET_VENDOR_VIA is not set
68# CONFIG_NET_VENDOR_WIZNET is not set
69# CONFIG_WLAN is not set
70# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
71CONFIG_INPUT_EVDEV=y
72# CONFIG_KEYBOARD_ATKBD is not set
73CONFIG_KEYBOARD_GPIO=y
74# CONFIG_INPUT_MOUSE is not set
75# CONFIG_SERIO is not set
76# CONFIG_LEGACY_PTYS is not set
77CONFIG_SERIAL_SH_SCI=y
78CONFIG_SERIAL_SH_SCI_NR_UARTS=10
79CONFIG_SERIAL_SH_SCI_CONSOLE=y
80# CONFIG_HW_RANDOM is not set
81CONFIG_I2C=y
82CONFIG_I2C_GPIO=y
83CONFIG_I2C_SH_MOBILE=y
84CONFIG_GPIO_SH_PFC=y
85CONFIG_GPIOLIB=y
86CONFIG_GPIO_RCAR=y
87# CONFIG_HWMON is not set
88CONFIG_THERMAL=y
89CONFIG_RCAR_THERMAL=y
90CONFIG_REGULATOR=y
91CONFIG_REGULATOR_FIXED_VOLTAGE=y
92# CONFIG_USB_SUPPORT is not set
93CONFIG_MMC=y
94CONFIG_MMC_SDHI=y
95CONFIG_MMC_SH_MMCIF=y
96CONFIG_NEW_LEDS=y
97CONFIG_LEDS_CLASS=y
98CONFIG_LEDS_GPIO=y
99CONFIG_RTC_CLASS=y
100CONFIG_DMADEVICES=y
101CONFIG_SH_DMAE=y
102# CONFIG_IOMMU_SUPPORT is not set
103# CONFIG_DNOTIFY is not set
104CONFIG_MSDOS_FS=y
105CONFIG_VFAT_FS=y
106CONFIG_TMPFS=y
107CONFIG_CONFIGFS_FS=y
108# CONFIG_MISC_FILESYSTEMS is not set
109CONFIG_NFS_FS=y
110CONFIG_NFS_V3_ACL=y
111CONFIG_NFS_V4=y
112CONFIG_NFS_V4_1=y
113CONFIG_ROOT_NFS=y
114CONFIG_NLS_CODEPAGE_437=y
115CONFIG_NLS_ISO8859_1=y
116# CONFIG_ENABLE_WARN_DEPRECATED is not set
117# CONFIG_ENABLE_MUST_CHECK is not set
118# CONFIG_ARM_UNWIND is not set
119# CONFIG_CRYPTO_ANSI_CPRNG is not set
120# CONFIG_CRYPTO_HW is not set
diff --git a/arch/arm/configs/marzen_defconfig b/arch/arm/configs/marzen_defconfig
index c50e52be4463..000e9205b2b9 100644
--- a/arch/arm/configs/marzen_defconfig
+++ b/arch/arm/configs/marzen_defconfig
@@ -29,6 +29,7 @@ CONFIG_AEABI=y
29CONFIG_HIGHMEM=y 29CONFIG_HIGHMEM=y
30CONFIG_ZBOOT_ROM_TEXT=0x0 30CONFIG_ZBOOT_ROM_TEXT=0x0
31CONFIG_ZBOOT_ROM_BSS=0x0 31CONFIG_ZBOOT_ROM_BSS=0x0
32CONFIG_ARM_APPENDED_DTB=y
32CONFIG_CMDLINE="console=ttySC2,115200 earlyprintk=sh-sci.2,115200 ignore_loglevel root=/dev/nfs ip=on" 33CONFIG_CMDLINE="console=ttySC2,115200 earlyprintk=sh-sci.2,115200 ignore_loglevel root=/dev/nfs ip=on"
33CONFIG_CMDLINE_FORCE=y 34CONFIG_CMDLINE_FORCE=y
34CONFIG_KEXEC=y 35CONFIG_KEXEC=y
diff --git a/arch/arm/configs/mvebu_defconfig b/arch/arm/configs/mvebu_defconfig
index 731814e2c189..594d706b641f 100644
--- a/arch/arm/configs/mvebu_defconfig
+++ b/arch/arm/configs/mvebu_defconfig
@@ -39,6 +39,8 @@ CONFIG_MVNETA=y
39CONFIG_MARVELL_PHY=y 39CONFIG_MARVELL_PHY=y
40CONFIG_MWIFIEX=y 40CONFIG_MWIFIEX=y
41CONFIG_MWIFIEX_SDIO=y 41CONFIG_MWIFIEX_SDIO=y
42CONFIG_INPUT_EVDEV=y
43CONFIG_KEYBOARD_GPIO=y
42CONFIG_SERIAL_8250=y 44CONFIG_SERIAL_8250=y
43CONFIG_SERIAL_8250_CONSOLE=y 45CONFIG_SERIAL_8250_CONSOLE=y
44CONFIG_I2C=y 46CONFIG_I2C=y
diff --git a/arch/arm/configs/tegra_defconfig b/arch/arm/configs/tegra_defconfig
index 92d0a149aeb5..ea042e80e54d 100644
--- a/arch/arm/configs/tegra_defconfig
+++ b/arch/arm/configs/tegra_defconfig
@@ -1,3 +1,4 @@
1CONFIG_SYSVIPC=y
1CONFIG_NO_HZ=y 2CONFIG_NO_HZ=y
2CONFIG_HIGH_RES_TIMERS=y 3CONFIG_HIGH_RES_TIMERS=y
3CONFIG_IKCONFIG=y 4CONFIG_IKCONFIG=y
@@ -26,8 +27,11 @@ CONFIG_ARCH_TEGRA=y
26CONFIG_ARCH_TEGRA_2x_SOC=y 27CONFIG_ARCH_TEGRA_2x_SOC=y
27CONFIG_ARCH_TEGRA_3x_SOC=y 28CONFIG_ARCH_TEGRA_3x_SOC=y
28CONFIG_ARCH_TEGRA_114_SOC=y 29CONFIG_ARCH_TEGRA_114_SOC=y
29CONFIG_TEGRA_PCI=y
30CONFIG_TEGRA_EMC_SCALING_ENABLE=y 30CONFIG_TEGRA_EMC_SCALING_ENABLE=y
31CONFIG_PCI=y
32CONFIG_PCI_MSI=y
33CONFIG_PCI_TEGRA=y
34CONFIG_PCIEPORTBUS=y
31CONFIG_SMP=y 35CONFIG_SMP=y
32CONFIG_PREEMPT=y 36CONFIG_PREEMPT=y
33CONFIG_AEABI=y 37CONFIG_AEABI=y
@@ -92,6 +96,7 @@ CONFIG_ISL29003=y
92CONFIG_SCSI=y 96CONFIG_SCSI=y
93CONFIG_BLK_DEV_SD=y 97CONFIG_BLK_DEV_SD=y
94CONFIG_BLK_DEV_SR=y 98CONFIG_BLK_DEV_SR=y
99CONFIG_SCSI_MULTI_LUN=y
95# CONFIG_SCSI_LOWLEVEL is not set 100# CONFIG_SCSI_LOWLEVEL is not set
96CONFIG_NETDEVICES=y 101CONFIG_NETDEVICES=y
97CONFIG_DUMMY=y 102CONFIG_DUMMY=y
@@ -106,6 +111,7 @@ CONFIG_RT2800USB=m
106CONFIG_INPUT_EVDEV=y 111CONFIG_INPUT_EVDEV=y
107CONFIG_KEYBOARD_GPIO=y 112CONFIG_KEYBOARD_GPIO=y
108CONFIG_KEYBOARD_TEGRA=y 113CONFIG_KEYBOARD_TEGRA=y
114CONFIG_MOUSE_PS2_ELANTECH=y
109CONFIG_INPUT_MISC=y 115CONFIG_INPUT_MISC=y
110CONFIG_INPUT_MPU3050=y 116CONFIG_INPUT_MPU3050=y
111# CONFIG_LEGACY_PTYS is not set 117# CONFIG_LEGACY_PTYS is not set
@@ -178,6 +184,7 @@ CONFIG_SND_SOC_TEGRA_WM8903=y
178CONFIG_SND_SOC_TEGRA_TRIMSLICE=y 184CONFIG_SND_SOC_TEGRA_TRIMSLICE=y
179CONFIG_SND_SOC_TEGRA_ALC5632=y 185CONFIG_SND_SOC_TEGRA_ALC5632=y
180CONFIG_USB=y 186CONFIG_USB=y
187CONFIG_USB_XHCI_HCD=y
181CONFIG_USB_EHCI_HCD=y 188CONFIG_USB_EHCI_HCD=y
182CONFIG_USB_EHCI_TEGRA=y 189CONFIG_USB_EHCI_TEGRA=y
183CONFIG_USB_ACM=y 190CONFIG_USB_ACM=y
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
index f11289519c39..69d67f714a2f 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -12,6 +12,7 @@ config ARCH_BCM
12 select GPIO_BCM 12 select GPIO_BCM
13 select SPARSE_IRQ 13 select SPARSE_IRQ
14 select TICK_ONESHOT 14 select TICK_ONESHOT
15 select CACHE_L2X0
15 help 16 help
16 This enables support for system based on Broadcom SoCs. 17 This enables support for system based on Broadcom SoCs.
17 It currently supports the 'BCM281XX' family, which includes 18 It currently supports the 'BCM281XX' family, which includes
diff --git a/arch/arm/mach-bcm/Makefile b/arch/arm/mach-bcm/Makefile
index 6adb6aecf48f..e3d03033a7e2 100644
--- a/arch/arm/mach-bcm/Makefile
+++ b/arch/arm/mach-bcm/Makefile
@@ -1,5 +1,5 @@
1# 1#
2# Copyright (C) 2012 Broadcom Corporation 2# Copyright (C) 2012-2013 Broadcom Corporation
3# 3#
4# This program is free software; you can redistribute it and/or 4# This program is free software; you can redistribute it and/or
5# modify it under the terms of the GNU General Public License as 5# modify it under the terms of the GNU General Public License as
@@ -10,6 +10,6 @@
10# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11# GNU General Public License for more details. 11# GNU General Public License for more details.
12 12
13obj-$(CONFIG_ARCH_BCM) := board_bcm.o bcm_kona_smc.o bcm_kona_smc_asm.o 13obj-$(CONFIG_ARCH_BCM) := board_bcm281xx.o bcm_kona_smc.o bcm_kona_smc_asm.o kona.o
14plus_sec := $(call as-instr,.arch_extension sec,+sec) 14plus_sec := $(call as-instr,.arch_extension sec,+sec)
15AFLAGS_bcm_kona_smc_asm.o :=-Wa,-march=armv7-a$(plus_sec) 15AFLAGS_bcm_kona_smc_asm.o :=-Wa,-march=armv7-a$(plus_sec)
diff --git a/arch/arm/mach-bcm/bcm_kona_smc.c b/arch/arm/mach-bcm/bcm_kona_smc.c
index 56d9d19b2470..5e31e918f325 100644
--- a/arch/arm/mach-bcm/bcm_kona_smc.c
+++ b/arch/arm/mach-bcm/bcm_kona_smc.c
@@ -36,18 +36,20 @@ struct bcm_kona_smc_data {
36}; 36};
37 37
38static const struct of_device_id bcm_kona_smc_ids[] __initconst = { 38static const struct of_device_id bcm_kona_smc_ids[] __initconst = {
39 {.compatible = "bcm,kona-smc"}, 39 {.compatible = "brcm,kona-smc"},
40 {.compatible = "bcm,kona-smc"}, /* deprecated name */
40 {}, 41 {},
41}; 42};
42 43
43/* Map in the bounce area */ 44/* Map in the bounce area */
44void __init bcm_kona_smc_init(void) 45int __init bcm_kona_smc_init(void)
45{ 46{
46 struct device_node *node; 47 struct device_node *node;
47 48
48 /* Read buffer addr and size from the device tree node */ 49 /* Read buffer addr and size from the device tree node */
49 node = of_find_matching_node(NULL, bcm_kona_smc_ids); 50 node = of_find_matching_node(NULL, bcm_kona_smc_ids);
50 BUG_ON(!node); 51 if (!node)
52 return -ENODEV;
51 53
52 /* Don't care about size or flags of the DT node */ 54 /* Don't care about size or flags of the DT node */
53 bridge_data.buffer_addr = 55 bridge_data.buffer_addr =
@@ -59,7 +61,9 @@ void __init bcm_kona_smc_init(void)
59 61
60 bridge_data.initialized = 1; 62 bridge_data.initialized = 1;
61 63
62 pr_info("Secure API initialized!\n"); 64 pr_info("Kona Secure API initialized\n");
65
66 return 0;
63} 67}
64 68
65/* __bcm_kona_smc() should only run on CPU 0, with pre-emption disabled */ 69/* __bcm_kona_smc() should only run on CPU 0, with pre-emption disabled */
diff --git a/arch/arm/mach-bcm/bcm_kona_smc.h b/arch/arm/mach-bcm/bcm_kona_smc.h
index 3bedbed1c21b..d098a7e76744 100644
--- a/arch/arm/mach-bcm/bcm_kona_smc.h
+++ b/arch/arm/mach-bcm/bcm_kona_smc.h
@@ -64,7 +64,7 @@
64#define SSAPI_BRCM_START_VC_CORE 0x0E000008 64#define SSAPI_BRCM_START_VC_CORE 0x0E000008
65 65
66#ifndef __ASSEMBLY__ 66#ifndef __ASSEMBLY__
67extern void bcm_kona_smc_init(void); 67extern int __init bcm_kona_smc_init(void);
68 68
69extern unsigned bcm_kona_smc(unsigned service_id, 69extern unsigned bcm_kona_smc(unsigned service_id,
70 unsigned arg0, 70 unsigned arg0,
diff --git a/arch/arm/mach-bcm/board_bcm.c b/arch/arm/mach-bcm/board_bcm281xx.c
index 28599326d4ad..8d9f931164bb 100644
--- a/arch/arm/mach-bcm/board_bcm.c
+++ b/arch/arm/mach-bcm/board_bcm281xx.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (C) 2012 Broadcom Corporation 2 * Copyright (C) 2012-2013 Broadcom Corporation
3 * 3 *
4 * This program is free software; you can redistribute it and/or 4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as 5 * modify it under the terms of the GNU General Public License as
@@ -21,23 +21,39 @@
21#include <asm/mach/time.h> 21#include <asm/mach/time.h>
22#include <asm/hardware/cache-l2x0.h> 22#include <asm/hardware/cache-l2x0.h>
23 23
24
25#include "bcm_kona_smc.h" 24#include "bcm_kona_smc.h"
25#include "kona.h"
26 26
27static int __init kona_l2_cache_init(void) 27static int __init kona_l2_cache_init(void)
28{ 28{
29 if (!IS_ENABLED(CONFIG_CACHE_L2X0)) 29 if (!IS_ENABLED(CONFIG_CACHE_L2X0))
30 return 0; 30 return 0;
31 31
32 if (bcm_kona_smc_init() < 0) {
33 pr_info("Kona secure API not available. Skipping L2 init\n");
34 return 0;
35 }
36
32 bcm_kona_smc(SSAPI_ENABLE_L2_CACHE, 0, 0, 0, 0); 37 bcm_kona_smc(SSAPI_ENABLE_L2_CACHE, 0, 0, 0, 0);
33 38
34 /* 39 /*
35 * The aux_val and aux_mask have no effect since L2 cache is already 40 * The aux_val and aux_mask have no effect since L2 cache is already
36 * enabled. Pass 0s for aux_val and 1s for aux_mask for default value. 41 * enabled. Pass 0s for aux_val and 1s for aux_mask for default value.
37 */ 42 */
38 l2x0_of_init(0, ~0); 43 return l2x0_of_init(0, ~0);
44}
39 45
40 return 0; 46static void bcm_board_setup_restart(void)
47{
48 struct device_node *np;
49
50 np = of_find_compatible_node(NULL, NULL, "brcm,bcm11351");
51 if (np) {
52 if (of_device_is_available(np))
53 bcm_kona_setup_restart();
54 of_node_put(np);
55 }
56 /* Restart setup for other boards goes here */
41} 57}
42 58
43static void __init board_init(void) 59static void __init board_init(void)
@@ -45,15 +61,15 @@ static void __init board_init(void)
45 of_platform_populate(NULL, of_default_bus_match_table, NULL, 61 of_platform_populate(NULL, of_default_bus_match_table, NULL,
46 &platform_bus); 62 &platform_bus);
47 63
48 bcm_kona_smc_init(); 64 bcm_board_setup_restart();
49
50 kona_l2_cache_init(); 65 kona_l2_cache_init();
51} 66}
52 67
53static const char * const bcm11351_dt_compat[] = { "bcm,bcm11351", NULL, }; 68static const char * const bcm11351_dt_compat[] = { "brcm,bcm11351", NULL, };
54 69
55DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor") 70DT_MACHINE_START(BCM11351_DT, "Broadcom Application Processor")
56 .init_time = clocksource_of_init, 71 .init_time = clocksource_of_init,
57 .init_machine = board_init, 72 .init_machine = board_init,
73 .restart = bcm_kona_restart,
58 .dt_compat = bcm11351_dt_compat, 74 .dt_compat = bcm11351_dt_compat,
59MACHINE_END 75MACHINE_END
diff --git a/arch/arm/mach-bcm/kona.c b/arch/arm/mach-bcm/kona.c
new file mode 100644
index 000000000000..6939d9017f63
--- /dev/null
+++ b/arch/arm/mach-bcm/kona.c
@@ -0,0 +1,65 @@
1/*
2 * Copyright (C) 2013 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation version 2.
7 *
8 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
9 * kind, whether express or implied; without even the implied warranty
10 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#include <linux/of_address.h>
15#include <asm/io.h>
16
17#include "kona.h"
18
19static void __iomem *watchdog_base;
20
21void bcm_kona_setup_restart(void)
22{
23 struct device_node *np_wdog;
24
25 /*
26 * The assumption is that whoever calls bcm_kona_setup_restart()
27 * also needs a Kona Watchdog Timer entry in Device Tree, i.e. we
28 * report an error if the DT entry is missing.
29 */
30 np_wdog = of_find_compatible_node(NULL, NULL, "brcm,kona-wdt");
31 if (!np_wdog) {
32 pr_err("brcm,kona-wdt not found in DT, reboot disabled\n");
33 return;
34 }
35 watchdog_base = of_iomap(np_wdog, 0);
36 WARN(!watchdog_base, "failed to map watchdog base");
37 of_node_put(np_wdog);
38}
39
40#define SECWDOG_OFFSET 0x00000000
41#define SECWDOG_RESERVED_MASK 0xE2000000
42#define SECWDOG_WD_LOAD_FLAG_MASK 0x10000000
43#define SECWDOG_EN_MASK 0x08000000
44#define SECWDOG_SRSTEN_MASK 0x04000000
45#define SECWDOG_CLKS_SHIFT 20
46#define SECWDOG_LOCK_SHIFT 0
47
48void bcm_kona_restart(enum reboot_mode mode, const char *cmd)
49{
50 uint32_t val;
51
52 if (!watchdog_base)
53 panic("Watchdog not mapped. Reboot failed.\n");
54
55 /* Enable watchdog2 with very short timeout. */
56 val = readl(watchdog_base + SECWDOG_OFFSET);
57 val &= SECWDOG_RESERVED_MASK | SECWDOG_WD_LOAD_FLAG_MASK;
58 val |= SECWDOG_EN_MASK | SECWDOG_SRSTEN_MASK |
59 (0x8 << SECWDOG_CLKS_SHIFT) |
60 (0x8 << SECWDOG_LOCK_SHIFT);
61 writel(val, watchdog_base + SECWDOG_OFFSET);
62
63 while (1)
64 ;
65}
diff --git a/arch/arm/mach-bcm/kona.h b/arch/arm/mach-bcm/kona.h
new file mode 100644
index 000000000000..291eca3e06ff
--- /dev/null
+++ b/arch/arm/mach-bcm/kona.h
@@ -0,0 +1,17 @@
1/*
2 * Copyright (C) 2013 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation version 2.
7 *
8 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
9 * kind, whether express or implied; without even the implied warranty
10 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#include <linux/reboot.h>
15
16void bcm_kona_setup_restart(void);
17void bcm_kona_restart(enum reboot_mode mode, const char *cmd);
diff --git a/arch/arm/mach-dove/Kconfig b/arch/arm/mach-dove/Kconfig
index dff7b2fd4e20..0bc7cdf8cf46 100644
--- a/arch/arm/mach-dove/Kconfig
+++ b/arch/arm/mach-dove/Kconfig
@@ -23,6 +23,8 @@ config MACH_CM_A510
23config MACH_DOVE_DT 23config MACH_DOVE_DT
24 bool "Marvell Dove Flattened Device Tree" 24 bool "Marvell Dove Flattened Device Tree"
25 select DOVE_CLK 25 select DOVE_CLK
26 select ORION_IRQCHIP
27 select ORION_TIMER
26 select REGULATOR 28 select REGULATOR
27 select REGULATOR_FIXED_VOLTAGE 29 select REGULATOR_FIXED_VOLTAGE
28 select USE_OF 30 select USE_OF
diff --git a/arch/arm/mach-dove/Makefile b/arch/arm/mach-dove/Makefile
index 4d9d2ffc4535..cbc5c0618788 100644
--- a/arch/arm/mach-dove/Makefile
+++ b/arch/arm/mach-dove/Makefile
@@ -1,5 +1,5 @@
1obj-y += common.o irq.o 1obj-y += common.o
2obj-$(CONFIG_DOVE_LEGACY) += mpp.o 2obj-$(CONFIG_DOVE_LEGACY) += irq.o mpp.o
3obj-$(CONFIG_PCI) += pcie.o 3obj-$(CONFIG_PCI) += pcie.o
4obj-$(CONFIG_MACH_DOVE_DB) += dove-db-setup.o 4obj-$(CONFIG_MACH_DOVE_DB) += dove-db-setup.o
5obj-$(CONFIG_MACH_DOVE_DT) += board-dt.o 5obj-$(CONFIG_MACH_DOVE_DT) += board-dt.o
diff --git a/arch/arm/mach-dove/board-dt.c b/arch/arm/mach-dove/board-dt.c
index f3755ac81148..49f72a848423 100644
--- a/arch/arm/mach-dove/board-dt.c
+++ b/arch/arm/mach-dove/board-dt.c
@@ -10,11 +10,14 @@
10 10
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/clk-provider.h> 12#include <linux/clk-provider.h>
13#include <linux/clocksource.h>
14#include <linux/irqchip.h>
13#include <linux/of.h> 15#include <linux/of.h>
14#include <linux/of_platform.h> 16#include <linux/of_platform.h>
15#include <linux/platform_data/usb-ehci-orion.h> 17#include <linux/platform_data/usb-ehci-orion.h>
16#include <asm/hardware/cache-tauros2.h> 18#include <asm/hardware/cache-tauros2.h>
17#include <asm/mach/arch.h> 19#include <asm/mach/arch.h>
20#include <mach/dove.h>
18#include <mach/pm.h> 21#include <mach/pm.h>
19#include <plat/common.h> 22#include <plat/common.h>
20#include <plat/irq.h> 23#include <plat/irq.h>
@@ -33,10 +36,6 @@ static void __init dove_legacy_clk_init(void)
33 clkspec.np = np; 36 clkspec.np = np;
34 clkspec.args_count = 1; 37 clkspec.args_count = 1;
35 38
36 clkspec.args[0] = CLOCK_GATING_BIT_GBE;
37 orion_clkdev_add(NULL, "mv643xx_eth_port.0",
38 of_clk_get_from_provider(&clkspec));
39
40 clkspec.args[0] = CLOCK_GATING_BIT_PCIE0; 39 clkspec.args[0] = CLOCK_GATING_BIT_PCIE0;
41 orion_clkdev_add("0", "pcie", 40 orion_clkdev_add("0", "pcie",
42 of_clk_get_from_provider(&clkspec)); 41 of_clk_get_from_provider(&clkspec));
@@ -46,15 +45,18 @@ static void __init dove_legacy_clk_init(void)
46 of_clk_get_from_provider(&clkspec)); 45 of_clk_get_from_provider(&clkspec));
47} 46}
48 47
49static void __init dove_of_clk_init(void) 48static void __init dove_dt_time_init(void)
50{ 49{
51 of_clk_init(NULL); 50 of_clk_init(NULL);
52 dove_legacy_clk_init(); 51 clocksource_of_init();
53} 52}
54 53
55static struct mv643xx_eth_platform_data dove_dt_ge00_data = { 54static void __init dove_dt_init_early(void)
56 .phy_addr = MV643XX_ETH_PHY_ADDR_DEFAULT, 55{
57}; 56 mvebu_mbus_init("marvell,dove-mbus",
57 BRIDGE_WINS_BASE, BRIDGE_WINS_SZ,
58 DOVE_MC_WINS_BASE, DOVE_MC_WINS_SZ);
59}
58 60
59static void __init dove_dt_init(void) 61static void __init dove_dt_init(void)
60{ 62{
@@ -65,11 +67,10 @@ static void __init dove_dt_init(void)
65#endif 67#endif
66 dove_setup_cpu_wins(); 68 dove_setup_cpu_wins();
67 69
68 /* Setup root of clk tree */ 70 /* Setup clocks for legacy devices */
69 dove_of_clk_init(); 71 dove_legacy_clk_init();
70 72
71 /* Internal devices not ported to DT yet */ 73 /* Internal devices not ported to DT yet */
72 dove_ge00_init(&dove_dt_ge00_data);
73 dove_pcie_init(1, 1); 74 dove_pcie_init(1, 1);
74 75
75 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 76 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
@@ -82,9 +83,8 @@ static const char * const dove_dt_board_compat[] = {
82 83
83DT_MACHINE_START(DOVE_DT, "Marvell Dove (Flattened Device Tree)") 84DT_MACHINE_START(DOVE_DT, "Marvell Dove (Flattened Device Tree)")
84 .map_io = dove_map_io, 85 .map_io = dove_map_io,
85 .init_early = dove_init_early, 86 .init_early = dove_dt_init_early,
86 .init_irq = orion_dt_init_irq, 87 .init_time = dove_dt_time_init,
87 .init_time = dove_timer_init,
88 .init_machine = dove_dt_init, 88 .init_machine = dove_dt_init,
89 .restart = dove_restart, 89 .restart = dove_restart,
90 .dt_compat = dove_dt_board_compat, 90 .dt_compat = dove_dt_board_compat,
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
index b634f9650a7b..fe8319ad3158 100644
--- a/arch/arm/mach-kirkwood/Kconfig
+++ b/arch/arm/mach-kirkwood/Kconfig
@@ -2,67 +2,32 @@ if ARCH_KIRKWOOD
2 2
3menu "Marvell Kirkwood Implementations" 3menu "Marvell Kirkwood Implementations"
4 4
5config KIRKWOOD_LEGACY
6 bool
7
5config MACH_D2NET_V2 8config MACH_D2NET_V2
6 bool "LaCie d2 Network v2 NAS Board" 9 bool "LaCie d2 Network v2 NAS Board"
10 select KIRKWOOD_LEGACY
7 help 11 help
8 Say 'Y' here if you want your kernel to support the 12 Say 'Y' here if you want your kernel to support the
9 LaCie d2 Network v2 NAS. 13 LaCie d2 Network v2 NAS.
10 14
11config MACH_DOCKSTAR
12 bool "Seagate FreeAgent DockStar"
13 help
14 Say 'Y' here if you want your kernel to support the
15 Seagate FreeAgent DockStar.
16
17config MACH_ESATA_SHEEVAPLUG
18 bool "Marvell eSATA SheevaPlug Reference Board"
19 help
20 Say 'Y' here if you want your kernel to support the
21 Marvell eSATA SheevaPlug Reference Board.
22
23config MACH_GURUPLUG
24 bool "Marvell GuruPlug Reference Board"
25 help
26 Say 'Y' here if you want your kernel to support the
27 Marvell GuruPlug Reference Board.
28
29config MACH_INETSPACE_V2
30 bool "LaCie Internet Space v2 NAS Board"
31 help
32 Say 'Y' here if you want your kernel to support the
33 LaCie Internet Space v2 NAS.
34
35config MACH_MV88F6281GTW_GE
36 bool "Marvell 88F6281 GTW GE Board"
37 help
38 Say 'Y' here if you want your kernel to support the
39 Marvell 88F6281 GTW GE Board.
40
41config MACH_NET2BIG_V2 15config MACH_NET2BIG_V2
42 bool "LaCie 2Big Network v2 NAS Board" 16 bool "LaCie 2Big Network v2 NAS Board"
17 select KIRKWOOD_LEGACY
43 help 18 help
44 Say 'Y' here if you want your kernel to support the 19 Say 'Y' here if you want your kernel to support the
45 LaCie 2Big Network v2 NAS. 20 LaCie 2Big Network v2 NAS.
46 21
47config MACH_NET5BIG_V2 22config MACH_NET5BIG_V2
48 bool "LaCie 5Big Network v2 NAS Board" 23 bool "LaCie 5Big Network v2 NAS Board"
24 select KIRKWOOD_LEGACY
49 help 25 help
50 Say 'Y' here if you want your kernel to support the 26 Say 'Y' here if you want your kernel to support the
51 LaCie 5Big Network v2 NAS. 27 LaCie 5Big Network v2 NAS.
52 28
53config MACH_NETSPACE_MAX_V2
54 bool "LaCie Network Space Max v2 NAS Board"
55 help
56 Say 'Y' here if you want your kernel to support the
57 LaCie Network Space Max v2 NAS.
58
59config MACH_NETSPACE_V2
60 bool "LaCie Network Space v2 NAS Board"
61 help
62 Say 'Y' here if you want your kernel to support the
63 LaCie Network Space v2 NAS.
64
65config MACH_OPENRD 29config MACH_OPENRD
30 select KIRKWOOD_LEGACY
66 bool 31 bool
67 32
68config MACH_OPENRD_BASE 33config MACH_OPENRD_BASE
@@ -88,30 +53,28 @@ config MACH_OPENRD_ULTIMATE
88 53
89config MACH_RD88F6192_NAS 54config MACH_RD88F6192_NAS
90 bool "Marvell RD-88F6192-NAS Reference Board" 55 bool "Marvell RD-88F6192-NAS Reference Board"
56 select KIRKWOOD_LEGACY
91 help 57 help
92 Say 'Y' here if you want your kernel to support the 58 Say 'Y' here if you want your kernel to support the
93 Marvell RD-88F6192-NAS Reference Board. 59 Marvell RD-88F6192-NAS Reference Board.
94 60
95config MACH_RD88F6281 61config MACH_RD88F6281
96 bool "Marvell RD-88F6281 Reference Board" 62 bool "Marvell RD-88F6281 Reference Board"
63 select KIRKWOOD_LEGACY
97 help 64 help
98 Say 'Y' here if you want your kernel to support the 65 Say 'Y' here if you want your kernel to support the
99 Marvell RD-88F6281 Reference Board. 66 Marvell RD-88F6281 Reference Board.
100 67
101config MACH_SHEEVAPLUG
102 bool "Marvell SheevaPlug Reference Board"
103 help
104 Say 'Y' here if you want your kernel to support the
105 Marvell SheevaPlug Reference Board.
106
107config MACH_T5325 68config MACH_T5325
108 bool "HP t5325 Thin Client" 69 bool "HP t5325 Thin Client"
70 select KIRKWOOD_LEGACY
109 help 71 help
110 Say 'Y' here if you want your kernel to support the 72 Say 'Y' here if you want your kernel to support the
111 HP t5325 Thin Client. 73 HP t5325 Thin Client.
112 74
113config MACH_TS219 75config MACH_TS219
114 bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS" 76 bool "QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and TS-219P+ Turbo NAS"
77 select KIRKWOOD_LEGACY
115 help 78 help
116 Say 'Y' here if you want your kernel to support the 79 Say 'Y' here if you want your kernel to support the
117 QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and 80 QNAP TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and
@@ -119,6 +82,7 @@ config MACH_TS219
119 82
120config MACH_TS41X 83config MACH_TS41X
121 bool "QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo NAS" 84 bool "QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo NAS"
85 select KIRKWOOD_LEGACY
122 help 86 help
123 Say 'Y' here if you want your kernel to support the 87 Say 'Y' here if you want your kernel to support the
124 QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo 88 QNAP TS-410, TS-410U, TS-419P, TS-419P+ and TS-419U Turbo
@@ -129,6 +93,9 @@ comment "Device tree entries"
129config ARCH_KIRKWOOD_DT 93config ARCH_KIRKWOOD_DT
130 bool "Marvell Kirkwood Flattened Device Tree" 94 bool "Marvell Kirkwood Flattened Device Tree"
131 select KIRKWOOD_CLK 95 select KIRKWOOD_CLK
96 select OF_IRQ
97 select ORION_IRQCHIP
98 select ORION_TIMER
132 select POWER_SUPPLY 99 select POWER_SUPPLY
133 select POWER_RESET 100 select POWER_RESET
134 select POWER_RESET_GPIO 101 select POWER_RESET_GPIO
@@ -139,184 +106,12 @@ config ARCH_KIRKWOOD_DT
139 Say 'Y' here if you want your kernel to support the 106 Say 'Y' here if you want your kernel to support the
140 Marvell Kirkwood using flattened device tree. 107 Marvell Kirkwood using flattened device tree.
141 108
142config MACH_CLOUDBOX_DT 109config MACH_MV88F6281GTW_GE_DT
143 bool "LaCie CloudBox NAS (Flattened Device Tree)" 110 bool "Marvell 88F6281 GTW GE Board (Flattened Device Tree)"
144 select ARCH_KIRKWOOD_DT 111 depends on ARCH_KIRKWOOD_DT
145 help
146 Say 'Y' here if you want your kernel to support the LaCie
147 CloudBox NAS, using Flattened Device Tree.
148
149config MACH_DB88F628X_BP_DT
150 bool "Marvell DB-88F628x-BP Development Board (Flattened Device Tree)"
151 help
152 Say 'Y' here if you want your kernel to support the Marvell
153 DB-88F6281-BP and DB-88F6282-BP Development Board (Flattened
154 Device Tree).
155
156config MACH_DLINK_KIRKWOOD_DT
157 bool "D-Link Kirkwood-based NAS (Flattened Device Tree)"
158 select ARCH_KIRKWOOD_DT
159 help
160 Say 'Y' here if you want your kernel to support the
161 Kirkwood-based D-Link NASes such as DNS-320 & DNS-325,
162 using Flattened Device Tree.
163
164config MACH_DOCKSTAR_DT
165 bool "Seagate FreeAgent Dockstar (Flattened Device Tree)"
166 select ARCH_KIRKWOOD_DT
167 help 112 help
168 Say 'Y' here if you want your kernel to support the 113 Say 'Y' here if you want your kernel to support the
169 Seagate FreeAgent Dockstar (Flattened Device Tree). 114 Marvell 88F6281 GTW GE Board (Flattened Device Tree).
170
171config MACH_DREAMPLUG_DT
172 bool "Marvell DreamPlug (Flattened Device Tree)"
173 select ARCH_KIRKWOOD_DT
174 help
175 Say 'Y' here if you want your kernel to support the
176 Marvell DreamPlug (Flattened Device Tree).
177
178config MACH_GOFLEXNET_DT
179 bool "Seagate GoFlex Net (Flattened Device Tree)"
180 select ARCH_KIRKWOOD_DT
181 help
182 Say 'Y' here if you want your kernel to support the
183 Seagate GoFlex Net (Flattened Device Tree).
184
185config MACH_GURUPLUG_DT
186 bool "Marvell GuruPlug Reference Board (Flattened Device Tree)"
187 select ARCH_KIRKWOOD_DT
188 help
189 Say 'Y' here if you want your kernel to support the
190 Marvell GuruPlug Reference Board (Flattened Device Tree).
191
192config MACH_IB62X0_DT
193 bool "RaidSonic IB-NAS6210, IB-NAS6220 (Flattened Device Tree)"
194 select ARCH_KIRKWOOD_DT
195 help
196 Say 'Y' here if you want your kernel to support the
197 RaidSonic IB-NAS6210 & IB-NAS6220 devices, using
198 Flattened Device Tree.
199
200config MACH_ICONNECT_DT
201 bool "Iomega Iconnect (Flattened Device Tree)"
202 select ARCH_KIRKWOOD_DT
203 help
204 Say 'Y' here to enable Iomega Iconnect support.
205
206config MACH_INETSPACE_V2_DT
207 bool "LaCie Internet Space v2 NAS (Flattened Device Tree)"
208 select ARCH_KIRKWOOD_DT
209 help
210 Say 'Y' here if you want your kernel to support the LaCie
211 Internet Space v2 NAS, using Flattened Device Tree.
212
213config MACH_IOMEGA_IX2_200_DT
214 bool "Iomega StorCenter ix2-200 (Flattened Device Tree)"
215 select ARCH_KIRKWOOD_DT
216 help
217 Say 'Y' here if you want your kernel to support the
218 Iomega StorCenter ix2-200 (Flattened Device Tree).
219
220config MACH_KM_KIRKWOOD_DT
221 bool "Keymile Kirkwood Reference Design (Flattened Device Tree)"
222 select ARCH_KIRKWOOD_DT
223 help
224 Say 'Y' here if you want your kernel to support the
225 Keymile Kirkwood Reference Desgin, using Flattened Device Tree.
226
227config MACH_LSXL_DT
228 bool "Buffalo Linkstation LS-XHL, LS-CHLv2 (Flattened Device Tree)"
229 select ARCH_KIRKWOOD_DT
230 select POWER_RESET_RESTART
231 help
232 Say 'Y' here if you want your kernel to support the
233 Buffalo Linkstation LS-XHL & LS-CHLv2 devices, using
234 Flattened Device Tree.
235
236config MACH_MPLCEC4_DT
237 bool "MPL CEC4 (Flattened Device Tree)"
238 select ARCH_KIRKWOOD_DT
239 help
240 Say 'Y' here if you want your kernel to support the
241 MPL CEC4 (Flattened Device Tree).
242
243config MACH_NETSPACE_LITE_V2_DT
244 bool "LaCie Network Space Lite v2 NAS (Flattened Device Tree)"
245 select ARCH_KIRKWOOD_DT
246 help
247 Say 'Y' here if you want your kernel to support the LaCie
248 Network Space Lite v2 NAS, using Flattened Device Tree.
249
250config MACH_NETSPACE_MAX_V2_DT
251 bool "LaCie Network Space Max v2 NAS (Flattened Device Tree)"
252 select ARCH_KIRKWOOD_DT
253 help
254 Say 'Y' here if you want your kernel to support the LaCie
255 Network Space Max v2 NAS, using Flattened Device Tree.
256
257config MACH_NETSPACE_MINI_V2_DT
258 bool "LaCie Network Space Mini v2 NAS (Flattened Device Tree)"
259 select ARCH_KIRKWOOD_DT
260 help
261 Say 'Y' here if you want your kernel to support the LaCie
262 Network Space Mini v2 NAS using Flattened Device Tree.
263
264 This board is embedded in a product named CloudBox, which
265 provides automatic backup on a 100GB cloud storage. This
266 should not confused with a more recent LaCie NAS also named
267 CloudBox. For this last, the disk capacity is 1TB or above.
268
269config MACH_NETSPACE_V2_DT
270 bool "LaCie Network Space v2 NAS (Flattened Device Tree)"
271 select ARCH_KIRKWOOD_DT
272 help
273 Say 'Y' here if you want your kernel to support the LaCie
274 Network Space v2 NAS, using Flattened Device Tree.
275
276config MACH_OPENBLOCKS_A6_DT
277 bool "Plat'Home OpenBlocks A6 (Flattened Device Tree)"
278 select ARCH_KIRKWOOD_DT
279 help
280 Say 'Y' here if you want your kernel to support the
281 Plat'Home OpenBlocks A6 (Flattened Device Tree).
282
283config MACH_READYNAS_DT
284 bool "NETGEAR ReadyNAS Duo v2 (Flattened Device Tree)"
285 select ARCH_KIRKWOOD_DT
286 select ARM_APPENDED_DTB
287 select ARM_ATAG_DTB_COMPAT
288 help
289 Say 'Y' here if you want your kernel to support the
290 NETGEAR ReadyNAS Duo v2 using Fattened Device Tree.
291
292config MACH_SHEEVAPLUG_DT
293 bool "Marvell (eSATA) SheevaPlug (Flattened Device Tree)"
294 select ARCH_KIRKWOOD_DT
295 help
296 Say 'Y' here if you want your kernel to support the
297 Marvell (eSATA) SheevaPlug (Flattened Device Tree).
298
299config MACH_TOPKICK_DT
300 bool "USI Topkick (Flattened Device Tree)"
301 select ARCH_KIRKWOOD_DT
302 help
303 Say 'Y' here if you want your kernel to support the
304 USI Topkick, using Flattened Device Tree
305
306config MACH_TS219_DT
307 bool "Device Tree for QNAP TS-11X, TS-21X NAS"
308 select ARCH_KIRKWOOD_DT
309 select ARM_APPENDED_DTB
310 select ARM_ATAG_DTB_COMPAT
311 select POWER_RESET_QNAP
312 help
313 Say 'Y' here if you want your kernel to support the QNAP
314 TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and
315 TS-219P+ Turbo NAS devices using Fattened Device Tree.
316 There are two different Device Tree descriptions, depending
317 on if the device is based on an if the board uses the MV6281
318 or MV6282. If you have the wrong one, the buttons will not
319 work.
320 115
321endmenu 116endmenu
322 117
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
index ac4cd75dd499..d1f8e3d0793b 100644
--- a/arch/arm/mach-kirkwood/Makefile
+++ b/arch/arm/mach-kirkwood/Makefile
@@ -1,44 +1,14 @@
1obj-y += common.o irq.o pcie.o mpp.o 1obj-y += common.o pcie.o
2 2obj-$(CONFIG_KIRKWOOD_LEGACY) += irq.o mpp.o
3obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o 3obj-$(CONFIG_MACH_D2NET_V2) += d2net_v2-setup.o lacie_v2-common.o
4obj-$(CONFIG_MACH_DOCKSTAR) += dockstar-setup.o
5obj-$(CONFIG_MACH_ESATA_SHEEVAPLUG) += sheevaplug-setup.o
6obj-$(CONFIG_MACH_GURUPLUG) += guruplug-setup.o
7obj-$(CONFIG_MACH_INETSPACE_V2) += netspace_v2-setup.o lacie_v2-common.o
8obj-$(CONFIG_MACH_MV88F6281GTW_GE) += mv88f6281gtw_ge-setup.o
9obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o 4obj-$(CONFIG_MACH_NET2BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o
10obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o 5obj-$(CONFIG_MACH_NET5BIG_V2) += netxbig_v2-setup.o lacie_v2-common.o
11obj-$(CONFIG_MACH_NETSPACE_MAX_V2) += netspace_v2-setup.o lacie_v2-common.o
12obj-$(CONFIG_MACH_NETSPACE_V2) += netspace_v2-setup.o lacie_v2-common.o
13obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o 6obj-$(CONFIG_MACH_OPENRD) += openrd-setup.o
14obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o 7obj-$(CONFIG_MACH_RD88F6192_NAS) += rd88f6192-nas-setup.o
15obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o 8obj-$(CONFIG_MACH_RD88F6281) += rd88f6281-setup.o
16obj-$(CONFIG_MACH_SHEEVAPLUG) += sheevaplug-setup.o
17obj-$(CONFIG_MACH_T5325) += t5325-setup.o 9obj-$(CONFIG_MACH_T5325) += t5325-setup.o
18obj-$(CONFIG_MACH_TS219) += ts219-setup.o tsx1x-common.o 10obj-$(CONFIG_MACH_TS219) += ts219-setup.o tsx1x-common.o
19obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o 11obj-$(CONFIG_MACH_TS41X) += ts41x-setup.o tsx1x-common.o
20 12
21obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o 13obj-$(CONFIG_ARCH_KIRKWOOD_DT) += board-dt.o
22obj-$(CONFIG_MACH_CLOUDBOX_DT) += board-ns2.o 14obj-$(CONFIG_MACH_MV88F6281GTW_GE_DT) += board-mv88f6281gtw_ge.o
23obj-$(CONFIG_MACH_DB88F628X_BP_DT) += board-db88f628x-bp.o
24obj-$(CONFIG_MACH_DLINK_KIRKWOOD_DT) += board-dnskw.o
25obj-$(CONFIG_MACH_DOCKSTAR_DT) += board-dockstar.o
26obj-$(CONFIG_MACH_DREAMPLUG_DT) += board-dreamplug.o
27obj-$(CONFIG_MACH_GOFLEXNET_DT) += board-goflexnet.o
28obj-$(CONFIG_MACH_GURUPLUG_DT) += board-guruplug.o
29obj-$(CONFIG_MACH_IB62X0_DT) += board-ib62x0.o
30obj-$(CONFIG_MACH_ICONNECT_DT) += board-iconnect.o
31obj-$(CONFIG_MACH_INETSPACE_V2_DT) += board-ns2.o
32obj-$(CONFIG_MACH_IOMEGA_IX2_200_DT) += board-iomega_ix2_200.o
33obj-$(CONFIG_MACH_KM_KIRKWOOD_DT) += board-km_kirkwood.o
34obj-$(CONFIG_MACH_LSXL_DT) += board-lsxl.o
35obj-$(CONFIG_MACH_MPLCEC4_DT) += board-mplcec4.o
36obj-$(CONFIG_MACH_NETSPACE_LITE_V2_DT) += board-ns2.o
37obj-$(CONFIG_MACH_NETSPACE_MAX_V2_DT) += board-ns2.o
38obj-$(CONFIG_MACH_NETSPACE_MINI_V2_DT) += board-ns2.o
39obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o
40obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o
41obj-$(CONFIG_MACH_READYNAS_DT) += board-readynas.o
42obj-$(CONFIG_MACH_SHEEVAPLUG_DT) += board-sheevaplug.o
43obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o
44obj-$(CONFIG_MACH_TS219_DT) += board-ts219.o tsx1x-common.o
diff --git a/arch/arm/mach-kirkwood/board-db88f628x-bp.c b/arch/arm/mach-kirkwood/board-db88f628x-bp.c
deleted file mode 100644
index 2f574bc8ed40..000000000000
--- a/arch/arm/mach-kirkwood/board-db88f628x-bp.c
+++ /dev/null
@@ -1,24 +0,0 @@
1/*
2 * Saeed Bishara <saeed@marvell.com>
3 *
4 * Marvell DB-88F628{1,2}-BP Development Board Setup
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/of.h>
14#include <linux/mv643xx_eth.h>
15#include "common.h"
16
17static struct mv643xx_eth_platform_data db88f628x_ge00_data = {
18 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
19};
20
21void __init db88f628x_init(void)
22{
23 kirkwood_ge00_init(&db88f628x_ge00_data);
24}
diff --git a/arch/arm/mach-kirkwood/board-dnskw.c b/arch/arm/mach-kirkwood/board-dnskw.c
deleted file mode 100644
index a1aa87f09180..000000000000
--- a/arch/arm/mach-kirkwood/board-dnskw.c
+++ /dev/null
@@ -1,43 +0,0 @@
1/*
2 * Copyright 2012 (C), Jamie Lentin <jm@lentin.co.uk>
3 *
4 * arch/arm/mach-kirkwood/board-dnskw.c
5 *
6 * D-link DNS-320 & DNS-325 NAS Init for drivers not converted to
7 * flattened device tree yet.
8 *
9 * This file is licensed under the terms of the GNU General Public
10 * License version 2. This program is licensed "as is" without any
11 * warranty of any kind, whether express or implied.
12 */
13
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/platform_device.h>
17#include <linux/mv643xx_eth.h>
18#include <linux/gpio.h>
19#include "common.h"
20
21static struct mv643xx_eth_platform_data dnskw_ge00_data = {
22 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
23};
24
25/* Register any GPIO for output and set the value */
26static void __init dnskw_gpio_register(unsigned gpio, char *name, int def)
27{
28 if (gpio_request(gpio, name) == 0 &&
29 gpio_direction_output(gpio, 0) == 0) {
30 gpio_set_value(gpio, def);
31 if (gpio_export(gpio, 0) != 0)
32 pr_err("dnskw: Failed to export GPIO %s\n", name);
33 } else
34 pr_err("dnskw: Failed to register %s\n", name);
35}
36
37void __init dnskw_init(void)
38{
39 kirkwood_ge00_init(&dnskw_ge00_data);
40
41 /* Set NAS to turn back on after a power failure */
42 dnskw_gpio_register(37, "dnskw:power:recover", 1);
43}
diff --git a/arch/arm/mach-kirkwood/board-dockstar.c b/arch/arm/mach-kirkwood/board-dockstar.c
deleted file mode 100644
index d7196db33984..000000000000
--- a/arch/arm/mach-kirkwood/board-dockstar.c
+++ /dev/null
@@ -1,32 +0,0 @@
1/*
2 * arch/arm/mach-kirkwood/board-dockstar.c
3 *
4 * Seagate FreeAgent Dockstar Board Init for drivers not converted to
5 * flattened device tree yet.
6 *
7 * This file is licensed under the terms of the GNU General Public
8 * License version 2. This program is licensed "as is" without any
9 * warranty of any kind, whether express or implied.
10 *
11 * Copied and modified for Seagate GoFlex Net support by
12 * Joshua Coombs <josh.coombs@gmail.com> based on ArchLinux ARM's
13 * GoFlex kernel patches.
14 *
15 */
16
17#include <linux/kernel.h>
18#include <linux/init.h>
19#include <linux/mv643xx_eth.h>
20#include "common.h"
21
22static struct mv643xx_eth_platform_data dockstar_ge00_data = {
23 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
24};
25
26void __init dockstar_dt_init(void)
27{
28 /*
29 * Basic setup. Needs to be called early.
30 */
31 kirkwood_ge00_init(&dockstar_ge00_data);
32}
diff --git a/arch/arm/mach-kirkwood/board-dreamplug.c b/arch/arm/mach-kirkwood/board-dreamplug.c
deleted file mode 100644
index 0903242c00dc..000000000000
--- a/arch/arm/mach-kirkwood/board-dreamplug.c
+++ /dev/null
@@ -1,35 +0,0 @@
1/*
2 * Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net>
3 *
4 * arch/arm/mach-kirkwood/board-dreamplug.c
5 *
6 * Marvell DreamPlug Reference Board Init for drivers not converted to
7 * flattened device tree yet.
8 *
9 * This file is licensed under the terms of the GNU General Public
10 * License version 2. This program is licensed "as is" without any
11 * warranty of any kind, whether express or implied.
12 */
13
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/mv643xx_eth.h>
17#include <linux/gpio.h>
18#include "common.h"
19
20static struct mv643xx_eth_platform_data dreamplug_ge00_data = {
21 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
22};
23
24static struct mv643xx_eth_platform_data dreamplug_ge01_data = {
25 .phy_addr = MV643XX_ETH_PHY_ADDR(1),
26};
27
28void __init dreamplug_init(void)
29{
30 /*
31 * Basic setup. Needs to be called early.
32 */
33 kirkwood_ge00_init(&dreamplug_ge00_data);
34 kirkwood_ge01_init(&dreamplug_ge01_data);
35}
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
index 682b7ac8deb8..82d3ad8e87cf 100644
--- a/arch/arm/mach-kirkwood/board-dt.c
+++ b/arch/arm/mach-kirkwood/board-dt.c
@@ -15,6 +15,9 @@
15#include <linux/of.h> 15#include <linux/of.h>
16#include <linux/of_platform.h> 16#include <linux/of_platform.h>
17#include <linux/clk-provider.h> 17#include <linux/clk-provider.h>
18#include <linux/clocksource.h>
19#include <linux/dma-mapping.h>
20#include <linux/irqchip.h>
18#include <linux/kexec.h> 21#include <linux/kexec.h>
19#include <asm/mach/arch.h> 22#include <asm/mach/arch.h>
20#include <asm/mach/map.h> 23#include <asm/mach/map.h>
@@ -49,10 +52,6 @@ static void __init kirkwood_legacy_clk_init(void)
49 orion_clkdev_add("1", "pcie", 52 orion_clkdev_add("1", "pcie",
50 of_clk_get_from_provider(&clkspec)); 53 of_clk_get_from_provider(&clkspec));
51 54
52 clkspec.args[0] = CGC_BIT_SDIO;
53 orion_clkdev_add(NULL, "mvsdio",
54 of_clk_get_from_provider(&clkspec));
55
56 /* 55 /*
57 * The ethernet interfaces forget the MAC address assigned by 56 * The ethernet interfaces forget the MAC address assigned by
58 * u-boot if the clocks are turned off. Until proper DT support 57 * u-boot if the clocks are turned off. Until proper DT support
@@ -60,19 +59,24 @@ static void __init kirkwood_legacy_clk_init(void)
60 */ 59 */
61 clkspec.args[0] = CGC_BIT_GE0; 60 clkspec.args[0] = CGC_BIT_GE0;
62 clk = of_clk_get_from_provider(&clkspec); 61 clk = of_clk_get_from_provider(&clkspec);
63 orion_clkdev_add(NULL, "mv643xx_eth_port.0", clk);
64 clk_prepare_enable(clk); 62 clk_prepare_enable(clk);
65 63
66 clkspec.args[0] = CGC_BIT_GE1; 64 clkspec.args[0] = CGC_BIT_GE1;
67 clk = of_clk_get_from_provider(&clkspec); 65 clk = of_clk_get_from_provider(&clkspec);
68 orion_clkdev_add(NULL, "mv643xx_eth_port.1", clk);
69 clk_prepare_enable(clk); 66 clk_prepare_enable(clk);
70} 67}
71 68
72static void __init kirkwood_of_clk_init(void) 69static void __init kirkwood_dt_time_init(void)
73{ 70{
74 of_clk_init(NULL); 71 of_clk_init(NULL);
75 kirkwood_legacy_clk_init(); 72 clocksource_of_init();
73}
74
75static void __init kirkwood_dt_init_early(void)
76{
77 mvebu_mbus_init("marvell,kirkwood-mbus",
78 BRIDGE_WINS_BASE, BRIDGE_WINS_SZ,
79 DDR_WINDOW_CPU_BASE, DDR_WINDOW_CPU_SZ);
76} 80}
77 81
78static void __init kirkwood_dt_init(void) 82static void __init kirkwood_dt_init(void)
@@ -94,8 +98,8 @@ static void __init kirkwood_dt_init(void)
94 98
95 kirkwood_cpufreq_init(); 99 kirkwood_cpufreq_init();
96 100
97 /* Setup root of clk tree */ 101 /* Setup clocks for legacy devices */
98 kirkwood_of_clk_init(); 102 kirkwood_legacy_clk_init();
99 103
100 kirkwood_cpuidle_init(); 104 kirkwood_cpuidle_init();
101 105
@@ -103,105 +107,22 @@ static void __init kirkwood_dt_init(void)
103 kexec_reinit = kirkwood_enable_pcie; 107 kexec_reinit = kirkwood_enable_pcie;
104#endif 108#endif
105 109
106 if (of_machine_is_compatible("globalscale,dreamplug")) 110 if (of_machine_is_compatible("marvell,mv88f6281gtw-ge"))
107 dreamplug_init(); 111 mv88f6281gtw_ge_init();
108
109 if (of_machine_is_compatible("globalscale,guruplug"))
110 guruplug_dt_init();
111
112 if (of_machine_is_compatible("globalscale,sheevaplug"))
113 sheevaplug_dt_init();
114
115 if (of_machine_is_compatible("dlink,dns-kirkwood"))
116 dnskw_init();
117
118 if (of_machine_is_compatible("iom,iconnect"))
119 iconnect_init();
120
121 if (of_machine_is_compatible("raidsonic,ib-nas62x0"))
122 ib62x0_init();
123
124 if (of_machine_is_compatible("qnap,ts219"))
125 qnap_dt_ts219_init();
126
127 if (of_machine_is_compatible("seagate,dockstar"))
128 dockstar_dt_init();
129
130 if (of_machine_is_compatible("seagate,goflexnet"))
131 goflexnet_init();
132
133 if (of_machine_is_compatible("buffalo,lsxl"))
134 lsxl_init();
135
136 if (of_machine_is_compatible("iom,ix2-200"))
137 iomega_ix2_200_init();
138
139 if (of_machine_is_compatible("keymile,km_kirkwood"))
140 km_kirkwood_init();
141
142 if (of_machine_is_compatible("lacie,cloudbox") ||
143 of_machine_is_compatible("lacie,inetspace_v2") ||
144 of_machine_is_compatible("lacie,netspace_lite_v2") ||
145 of_machine_is_compatible("lacie,netspace_max_v2") ||
146 of_machine_is_compatible("lacie,netspace_mini_v2") ||
147 of_machine_is_compatible("lacie,netspace_v2"))
148 ns2_init();
149
150 if (of_machine_is_compatible("marvell,db-88f6281-bp") ||
151 of_machine_is_compatible("marvell,db-88f6282-bp"))
152 db88f628x_init();
153
154 if (of_machine_is_compatible("mpl,cec4"))
155 mplcec4_init();
156
157 if (of_machine_is_compatible("netgear,readynas-duo-v2"))
158 netgear_readynas_init();
159
160 if (of_machine_is_compatible("plathome,openblocks-a6"))
161 openblocks_a6_init();
162
163 if (of_machine_is_compatible("usi,topkick"))
164 usi_topkick_init();
165 112
166 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 113 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
167} 114}
168 115
169static const char * const kirkwood_dt_board_compat[] = { 116static const char * const kirkwood_dt_board_compat[] = {
170 "globalscale,dreamplug", 117 "marvell,kirkwood",
171 "globalscale,guruplug",
172 "globalscale,sheevaplug",
173 "dlink,dns-320",
174 "dlink,dns-325",
175 "iom,iconnect",
176 "raidsonic,ib-nas62x0",
177 "qnap,ts219",
178 "seagate,dockstar",
179 "seagate,goflexnet",
180 "buffalo,lsxl",
181 "iom,ix2-200",
182 "keymile,km_kirkwood",
183 "lacie,cloudbox",
184 "lacie,inetspace_v2",
185 "lacie,netspace_lite_v2",
186 "lacie,netspace_max_v2",
187 "lacie,netspace_mini_v2",
188 "lacie,netspace_v2",
189 "marvell,db-88f6281-bp",
190 "marvell,db-88f6282-bp",
191 "mpl,cec4",
192 "netgear,readynas-duo-v2",
193 "plathome,openblocks-a6",
194 "usi,topkick",
195 "zyxel,nsa310",
196 NULL 118 NULL
197}; 119};
198 120
199DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)") 121DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)")
200 /* Maintainer: Jason Cooper <jason@lakedaemon.net> */ 122 /* Maintainer: Jason Cooper <jason@lakedaemon.net> */
201 .map_io = kirkwood_map_io, 123 .map_io = kirkwood_map_io,
202 .init_early = kirkwood_init_early, 124 .init_early = kirkwood_dt_init_early,
203 .init_irq = orion_dt_init_irq, 125 .init_time = kirkwood_dt_time_init,
204 .init_time = kirkwood_timer_init,
205 .init_machine = kirkwood_dt_init, 126 .init_machine = kirkwood_dt_init,
206 .restart = kirkwood_restart, 127 .restart = kirkwood_restart,
207 .dt_compat = kirkwood_dt_board_compat, 128 .dt_compat = kirkwood_dt_board_compat,
diff --git a/arch/arm/mach-kirkwood/board-goflexnet.c b/arch/arm/mach-kirkwood/board-goflexnet.c
deleted file mode 100644
index 9db979aec82e..000000000000
--- a/arch/arm/mach-kirkwood/board-goflexnet.c
+++ /dev/null
@@ -1,34 +0,0 @@
1/*
2 * Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net>
3 *
4 * arch/arm/mach-kirkwood/board-goflexnet.c
5 *
6 * Seagate GoFlext Net Board Init for drivers not converted to
7 * flattened device tree yet.
8 *
9 * This file is licensed under the terms of the GNU General Public
10 * License version 2. This program is licensed "as is" without any
11 * warranty of any kind, whether express or implied.
12 *
13 * Copied and modified for Seagate GoFlex Net support by
14 * Joshua Coombs <josh.coombs@gmail.com> based on ArchLinux ARM's
15 * GoFlex kernel patches.
16 *
17 */
18
19#include <linux/kernel.h>
20#include <linux/init.h>
21#include <linux/mv643xx_eth.h>
22#include "common.h"
23
24static struct mv643xx_eth_platform_data goflexnet_ge00_data = {
25 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
26};
27
28void __init goflexnet_init(void)
29{
30 /*
31 * Basic setup. Needs to be called early.
32 */
33 kirkwood_ge00_init(&goflexnet_ge00_data);
34}
diff --git a/arch/arm/mach-kirkwood/board-guruplug.c b/arch/arm/mach-kirkwood/board-guruplug.c
deleted file mode 100644
index a857163954a5..000000000000
--- a/arch/arm/mach-kirkwood/board-guruplug.c
+++ /dev/null
@@ -1,33 +0,0 @@
1/*
2 * arch/arm/mach-kirkwood/board-guruplug.c
3 *
4 * Marvell Guruplug Reference Board Init for drivers not converted to
5 * flattened device tree yet.
6 *
7 * This file is licensed under the terms of the GNU General Public
8 * License version 2. This program is licensed "as is" without any
9 * warranty of any kind, whether express or implied.
10 */
11
12#include <linux/kernel.h>
13#include <linux/init.h>
14#include <linux/mv643xx_eth.h>
15#include <linux/gpio.h>
16#include "common.h"
17
18static struct mv643xx_eth_platform_data guruplug_ge00_data = {
19 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
20};
21
22static struct mv643xx_eth_platform_data guruplug_ge01_data = {
23 .phy_addr = MV643XX_ETH_PHY_ADDR(1),
24};
25
26void __init guruplug_dt_init(void)
27{
28 /*
29 * Basic setup. Needs to be called early.
30 */
31 kirkwood_ge00_init(&guruplug_ge00_data);
32 kirkwood_ge01_init(&guruplug_ge01_data);
33}
diff --git a/arch/arm/mach-kirkwood/board-ib62x0.c b/arch/arm/mach-kirkwood/board-ib62x0.c
deleted file mode 100644
index 9a857ae83984..000000000000
--- a/arch/arm/mach-kirkwood/board-ib62x0.c
+++ /dev/null
@@ -1,29 +0,0 @@
1/*
2 * Copyright 2012 (C), Simon Baatz <gmbnomis@gmail.com>
3 *
4 * arch/arm/mach-kirkwood/board-ib62x0.c
5 *
6 * RaidSonic ICY BOX IB-NAS6210 & IB-NAS6220 init for drivers not
7 * converted to flattened device tree yet.
8 *
9 * This file is licensed under the terms of the GNU General Public
10 * License version 2. This program is licensed "as is" without any
11 * warranty of any kind, whether express or implied.
12 */
13
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/mv643xx_eth.h>
17#include "common.h"
18
19static struct mv643xx_eth_platform_data ib62x0_ge00_data = {
20 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
21};
22
23void __init ib62x0_init(void)
24{
25 /*
26 * Basic setup. Needs to be called early.
27 */
28 kirkwood_ge00_init(&ib62x0_ge00_data);
29}
diff --git a/arch/arm/mach-kirkwood/board-iconnect.c b/arch/arm/mach-kirkwood/board-iconnect.c
deleted file mode 100644
index 98b5ad1bba90..000000000000
--- a/arch/arm/mach-kirkwood/board-iconnect.c
+++ /dev/null
@@ -1,24 +0,0 @@
1/*
2 * arch/arm/mach-kirkwood/board-iconnect.c
3 *
4 * Iomega i-connect Board Setup
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/of.h>
14#include <linux/mv643xx_eth.h>
15#include "common.h"
16
17static struct mv643xx_eth_platform_data iconnect_ge00_data = {
18 .phy_addr = MV643XX_ETH_PHY_ADDR(11),
19};
20
21void __init iconnect_init(void)
22{
23 kirkwood_ge00_init(&iconnect_ge00_data);
24}
diff --git a/arch/arm/mach-kirkwood/board-iomega_ix2_200.c b/arch/arm/mach-kirkwood/board-iomega_ix2_200.c
deleted file mode 100644
index e5f70415905a..000000000000
--- a/arch/arm/mach-kirkwood/board-iomega_ix2_200.c
+++ /dev/null
@@ -1,34 +0,0 @@
1/*
2 * arch/arm/mach-kirkwood/board-iomega_ix2_200.c
3 *
4 * Iomega StorCenter ix2-200
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/mv643xx_eth.h>
14#include <linux/ethtool.h>
15#include "common.h"
16
17static struct mv643xx_eth_platform_data iomega_ix2_200_ge00_data = {
18 .phy_addr = MV643XX_ETH_PHY_NONE,
19 .speed = SPEED_1000,
20 .duplex = DUPLEX_FULL,
21};
22
23static struct mv643xx_eth_platform_data iomega_ix2_200_ge01_data = {
24 .phy_addr = MV643XX_ETH_PHY_ADDR(11),
25};
26
27void __init iomega_ix2_200_init(void)
28{
29 /*
30 * Basic setup. Needs to be called early.
31 */
32 kirkwood_ge00_init(&iomega_ix2_200_ge00_data);
33 kirkwood_ge01_init(&iomega_ix2_200_ge01_data);
34}
diff --git a/arch/arm/mach-kirkwood/board-km_kirkwood.c b/arch/arm/mach-kirkwood/board-km_kirkwood.c
deleted file mode 100644
index 44e4605ba0bf..000000000000
--- a/arch/arm/mach-kirkwood/board-km_kirkwood.c
+++ /dev/null
@@ -1,44 +0,0 @@
1/*
2 * Copyright 2012 2012 KEYMILE AG, CH-3097 Bern
3 * Valentin Longchamp <valentin.longchamp@keymile.com>
4 *
5 * arch/arm/mach-kirkwood/board-km_kirkwood.c
6 *
7 * Keymile km_kirkwood Reference Desing Init for drivers not converted to
8 * flattened device tree yet.
9 *
10 * This file is licensed under the terms of the GNU General Public
11 * License version 2. This program is licensed "as is" without any
12 * warranty of any kind, whether express or implied.
13 */
14
15#include <linux/kernel.h>
16#include <linux/init.h>
17#include <linux/mv643xx_eth.h>
18#include <linux/clk.h>
19#include <linux/clk-private.h>
20#include "common.h"
21
22static struct mv643xx_eth_platform_data km_kirkwood_ge00_data = {
23 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
24};
25
26void __init km_kirkwood_init(void)
27{
28 struct clk *sata_clk;
29 /*
30 * Our variant of kirkwood (integrated in the Bobcat) hangs on accessing
31 * SATA bits (14-15) of the Clock Gating Control Register. Since these
32 * devices are also not present in this variant, their clocks get
33 * disabled because unused when clk_disable_unused() gets called.
34 * That's why we change the flags to these clocks to CLK_IGNORE_UNUSED
35 */
36 sata_clk = clk_get_sys("sata_mv.0", "0");
37 if (!IS_ERR(sata_clk))
38 sata_clk->flags |= CLK_IGNORE_UNUSED;
39 sata_clk = clk_get_sys("sata_mv.0", "1");
40 if (!IS_ERR(sata_clk))
41 sata_clk->flags |= CLK_IGNORE_UNUSED;
42
43 kirkwood_ge00_init(&km_kirkwood_ge00_data);
44}
diff --git a/arch/arm/mach-kirkwood/board-lsxl.c b/arch/arm/mach-kirkwood/board-lsxl.c
deleted file mode 100644
index 348395238df6..000000000000
--- a/arch/arm/mach-kirkwood/board-lsxl.c
+++ /dev/null
@@ -1,36 +0,0 @@
1/*
2 * Copyright 2012 (C), Michael Walle <michael@walle.cc>
3 *
4 * arch/arm/mach-kirkwood/board-lsxl.c
5 *
6 * Buffalo Linkstation LS-XHL and LS-CHLv2 init for drivers not
7 * converted to flattened device tree yet.
8 *
9 * This file is licensed under the terms of the GNU General Public
10 * License version 2. This program is licensed "as is" without any
11 * warranty of any kind, whether express or implied.
12 */
13
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/platform_device.h>
17#include <linux/mv643xx_eth.h>
18#include "common.h"
19
20static struct mv643xx_eth_platform_data lsxl_ge00_data = {
21 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
22};
23
24static struct mv643xx_eth_platform_data lsxl_ge01_data = {
25 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
26};
27
28void __init lsxl_init(void)
29{
30 /*
31 * Basic setup. Needs to be called early.
32 */
33
34 kirkwood_ge00_init(&lsxl_ge00_data);
35 kirkwood_ge01_init(&lsxl_ge01_data);
36}
diff --git a/arch/arm/mach-kirkwood/board-mplcec4.c b/arch/arm/mach-kirkwood/board-mplcec4.c
deleted file mode 100644
index 938712e248f1..000000000000
--- a/arch/arm/mach-kirkwood/board-mplcec4.c
+++ /dev/null
@@ -1,35 +0,0 @@
1/*
2 * Copyright (C) 2012 MPL AG, Switzerland
3 * Stefan Peter <s.peter@mpl.ch>
4 *
5 * arch/arm/mach-kirkwood/board-mplcec4.c
6 *
7 * This file is licensed under the terms of the GNU General Public
8 * License version 2. This program is licensed "as is" without any
9 * warranty of any kind, whether express or implied.
10 */
11
12#include <linux/kernel.h>
13#include <linux/init.h>
14#include <linux/mv643xx_eth.h>
15#include "common.h"
16
17static struct mv643xx_eth_platform_data mplcec4_ge00_data = {
18 .phy_addr = MV643XX_ETH_PHY_ADDR(1),
19};
20
21static struct mv643xx_eth_platform_data mplcec4_ge01_data = {
22 .phy_addr = MV643XX_ETH_PHY_ADDR(2),
23};
24
25void __init mplcec4_init(void)
26{
27 /*
28 * Basic setup. Needs to be called early.
29 */
30 kirkwood_ge00_init(&mplcec4_ge00_data);
31 kirkwood_ge01_init(&mplcec4_ge01_data);
32}
33
34
35
diff --git a/arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c b/arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c
new file mode 100644
index 000000000000..ee5eea678c11
--- /dev/null
+++ b/arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c
@@ -0,0 +1,50 @@
1/*
2 * arch/arm/mach-kirkwood/board-mv88f6281gtw_ge.c
3 *
4 * Marvell 88F6281 GTW GE Board Setup
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/platform_device.h>
14#include <linux/irq.h>
15#include <linux/timer.h>
16#include <linux/mv643xx_eth.h>
17#include <linux/ethtool.h>
18#include <linux/gpio.h>
19#include <net/dsa.h>
20#include <asm/mach-types.h>
21#include <asm/mach/arch.h>
22#include <asm/mach/pci.h>
23#include <mach/kirkwood.h>
24#include "common.h"
25
26static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data = {
27 .phy_addr = MV643XX_ETH_PHY_NONE,
28 .speed = SPEED_1000,
29 .duplex = DUPLEX_FULL,
30};
31
32static struct dsa_chip_data mv88f6281gtw_ge_switch_chip_data = {
33 .port_names[0] = "lan1",
34 .port_names[1] = "lan2",
35 .port_names[2] = "lan3",
36 .port_names[3] = "lan4",
37 .port_names[4] = "wan",
38 .port_names[5] = "cpu",
39};
40
41static struct dsa_platform_data mv88f6281gtw_ge_switch_plat_data = {
42 .nr_chips = 1,
43 .chip = &mv88f6281gtw_ge_switch_chip_data,
44};
45
46void __init mv88f6281gtw_ge_init(void)
47{
48 kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data);
49 kirkwood_ge00_switch_init(&mv88f6281gtw_ge_switch_plat_data, NO_IRQ);
50}
diff --git a/arch/arm/mach-kirkwood/board-ns2.c b/arch/arm/mach-kirkwood/board-ns2.c
deleted file mode 100644
index f8f660525ace..000000000000
--- a/arch/arm/mach-kirkwood/board-ns2.c
+++ /dev/null
@@ -1,35 +0,0 @@
1/*
2 * Copyright 2012 (C), Simon Guinot <simon.guinot@sequanux.org>
3 *
4 * arch/arm/mach-kirkwood/board-ns2.c
5 *
6 * LaCie Network Space v2 board (and parents) initialization for drivers
7 * not converted to flattened device tree yet.
8 *
9 * This file is licensed under the terms of the GNU General Public
10 * License version 2. This program is licensed "as is" without any
11 * warranty of any kind, whether express or implied.
12 */
13
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/platform_device.h>
17#include <linux/mv643xx_eth.h>
18#include <linux/of.h>
19#include "common.h"
20
21static struct mv643xx_eth_platform_data ns2_ge00_data = {
22 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
23};
24
25void __init ns2_init(void)
26{
27 /*
28 * Basic setup. Needs to be called early.
29 */
30 if (of_machine_is_compatible("lacie,cloudbox") ||
31 of_machine_is_compatible("lacie,netspace_lite_v2") ||
32 of_machine_is_compatible("lacie,netspace_mini_v2"))
33 ns2_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
34 kirkwood_ge00_init(&ns2_ge00_data);
35}
diff --git a/arch/arm/mach-kirkwood/board-openblocks_a6.c b/arch/arm/mach-kirkwood/board-openblocks_a6.c
deleted file mode 100644
index b11d8fdeca93..000000000000
--- a/arch/arm/mach-kirkwood/board-openblocks_a6.c
+++ /dev/null
@@ -1,26 +0,0 @@
1/*
2 * Copyright 2012 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
3 *
4 * arch/arm/mach-kirkwood/board-openblocks_a6.c
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/mv643xx_eth.h>
14#include "common.h"
15
16static struct mv643xx_eth_platform_data openblocks_ge00_data = {
17 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
18};
19
20void __init openblocks_a6_init(void)
21{
22 /*
23 * Basic setup. Needs to be called early.
24 */
25 kirkwood_ge00_init(&openblocks_ge00_data);
26}
diff --git a/arch/arm/mach-kirkwood/board-readynas.c b/arch/arm/mach-kirkwood/board-readynas.c
deleted file mode 100644
index 341b82d9cadb..000000000000
--- a/arch/arm/mach-kirkwood/board-readynas.c
+++ /dev/null
@@ -1,27 +0,0 @@
1/*
2 * NETGEAR ReadyNAS Duo v2 Board setup for drivers not already
3 * converted to DT.
4 *
5 * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org>
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version
10 * 2 of the License, or (at your option) any later version.
11 */
12
13#include <linux/kernel.h>
14#include <linux/init.h>
15#include <linux/platform_device.h>
16#include <linux/mv643xx_eth.h>
17#include <mach/kirkwood.h>
18#include "common.h"
19
20static struct mv643xx_eth_platform_data netgear_readynas_ge00_data = {
21 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
22};
23
24void __init netgear_readynas_init(void)
25{
26 kirkwood_ge00_init(&netgear_readynas_ge00_data);
27}
diff --git a/arch/arm/mach-kirkwood/board-sheevaplug.c b/arch/arm/mach-kirkwood/board-sheevaplug.c
deleted file mode 100644
index fa389373ca74..000000000000
--- a/arch/arm/mach-kirkwood/board-sheevaplug.c
+++ /dev/null
@@ -1,27 +0,0 @@
1/*
2 * arch/arm/mach-kirkwood/board-sheevaplug.c
3 *
4 * Marvell Sheevaplug Reference Board Init for drivers not converted to
5 * flattened device tree yet.
6 *
7 * This file is licensed under the terms of the GNU General Public
8 * License version 2. This program is licensed "as is" without any
9 * warranty of any kind, whether express or implied.
10 */
11
12#include <linux/kernel.h>
13#include <linux/init.h>
14#include <linux/mv643xx_eth.h>
15#include "common.h"
16
17static struct mv643xx_eth_platform_data sheevaplug_ge00_data = {
18 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
19};
20
21void __init sheevaplug_dt_init(void)
22{
23 /*
24 * Basic setup. Needs to be called early.
25 */
26 kirkwood_ge00_init(&sheevaplug_ge00_data);
27}
diff --git a/arch/arm/mach-kirkwood/board-ts219.c b/arch/arm/mach-kirkwood/board-ts219.c
deleted file mode 100644
index 860f44ab457d..000000000000
--- a/arch/arm/mach-kirkwood/board-ts219.c
+++ /dev/null
@@ -1,40 +0,0 @@
1/*
2 *
3 * QNAP TS-11x/TS-21x Turbo NAS Board Setup via DT
4 *
5 * Copyright (C) 2012 Andrew Lunn <andrew@lunn.ch>
6 *
7 * Based on the board file ts219-setup.c:
8 *
9 * Copyright (C) 2009 Martin Michlmayr <tbm@cyrius.com>
10 * Copyright (C) 2008 Byron Bradley <byron.bbradley@gmail.com>
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version
15 * 2 of the License, or (at your option) any later version.
16 */
17
18#include <linux/kernel.h>
19#include <linux/init.h>
20#include <linux/platform_device.h>
21#include <linux/mv643xx_eth.h>
22#include <asm/mach-types.h>
23#include <asm/mach/arch.h>
24#include <mach/kirkwood.h>
25#include "common.h"
26
27static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = {
28 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
29};
30
31void __init qnap_dt_ts219_init(void)
32{
33 u32 dev, rev;
34
35 kirkwood_pcie_id(&dev, &rev);
36 if (dev == MV88F6282_DEV_ID)
37 qnap_ts219_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
38
39 kirkwood_ge00_init(&qnap_ts219_ge00_data);
40}
diff --git a/arch/arm/mach-kirkwood/board-usi_topkick.c b/arch/arm/mach-kirkwood/board-usi_topkick.c
deleted file mode 100644
index 1cc04ec33f0b..000000000000
--- a/arch/arm/mach-kirkwood/board-usi_topkick.c
+++ /dev/null
@@ -1,29 +0,0 @@
1/*
2 * Copyright 2012 (C), Jason Cooper <jason@lakedaemon.net>
3 *
4 * arch/arm/mach-kirkwood/board-usi_topkick.c
5 *
6 * USI Topkick Init for drivers not converted to flattened device tree yet.
7 *
8 * This file is licensed under the terms of the GNU General Public
9 * License version 2. This program is licensed "as is" without any
10 * warranty of any kind, whether express or implied.
11 */
12
13#include <linux/kernel.h>
14#include <linux/init.h>
15#include <linux/mv643xx_eth.h>
16#include <linux/gpio.h>
17#include "common.h"
18
19static struct mv643xx_eth_platform_data topkick_ge00_data = {
20 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
21};
22
23void __init usi_topkick_init(void)
24{
25 /*
26 * Basic setup. Needs to be called early.
27 */
28 kirkwood_ge00_init(&topkick_ge00_data);
29}
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
index fcf3ba682e24..1296de94febf 100644
--- a/arch/arm/mach-kirkwood/common.h
+++ b/arch/arm/mach-kirkwood/common.h
@@ -59,119 +59,10 @@ void kirkwood_restart(enum reboot_mode, const char *);
59void kirkwood_clk_init(void); 59void kirkwood_clk_init(void);
60 60
61/* board init functions for boards not fully converted to fdt */ 61/* board init functions for boards not fully converted to fdt */
62#ifdef CONFIG_MACH_DREAMPLUG_DT 62#ifdef CONFIG_MACH_MV88F6281GTW_GE_DT
63void dreamplug_init(void); 63void mv88f6281gtw_ge_init(void);
64#else 64#else
65static inline void dreamplug_init(void) {}; 65static inline void mv88f6281gtw_ge_init(void) {};
66#endif
67#ifdef CONFIG_MACH_GURUPLUG_DT
68void guruplug_dt_init(void);
69#else
70static inline void guruplug_dt_init(void) {};
71#endif
72#ifdef CONFIG_MACH_SHEEVAPLUG_DT
73void sheevaplug_dt_init(void);
74#else
75static inline void sheevaplug_dt_init(void) {};
76#endif
77#ifdef CONFIG_MACH_TS219_DT
78void qnap_dt_ts219_init(void);
79#else
80static inline void qnap_dt_ts219_init(void) {};
81#endif
82
83#ifdef CONFIG_MACH_DLINK_KIRKWOOD_DT
84void dnskw_init(void);
85#else
86static inline void dnskw_init(void) {};
87#endif
88
89#ifdef CONFIG_MACH_ICONNECT_DT
90void iconnect_init(void);
91#else
92static inline void iconnect_init(void) {};
93#endif
94
95#ifdef CONFIG_MACH_IB62X0_DT
96void ib62x0_init(void);
97#else
98static inline void ib62x0_init(void) {};
99#endif
100
101#ifdef CONFIG_MACH_DOCKSTAR_DT
102void dockstar_dt_init(void);
103#else
104static inline void dockstar_dt_init(void) {};
105#endif
106
107#ifdef CONFIG_MACH_GOFLEXNET_DT
108void goflexnet_init(void);
109#else
110static inline void goflexnet_init(void) {};
111#endif
112
113#ifdef CONFIG_MACH_LSXL_DT
114void lsxl_init(void);
115#else
116static inline void lsxl_init(void) {};
117#endif
118
119#ifdef CONFIG_MACH_IOMEGA_IX2_200_DT
120void iomega_ix2_200_init(void);
121#else
122static inline void iomega_ix2_200_init(void) {};
123#endif
124
125#ifdef CONFIG_MACH_KM_KIRKWOOD_DT
126void km_kirkwood_init(void);
127#else
128static inline void km_kirkwood_init(void) {};
129#endif
130
131#ifdef CONFIG_MACH_DB88F628X_BP_DT
132void db88f628x_init(void);
133#else
134static inline void db88f628x_init(void) {};
135#endif
136
137#ifdef CONFIG_MACH_MPLCEC4_DT
138void mplcec4_init(void);
139#else
140static inline void mplcec4_init(void) {};
141#endif
142
143#if defined(CONFIG_MACH_INETSPACE_V2_DT) || \
144 defined(CONFIG_MACH_NETSPACE_V2_DT) || \
145 defined(CONFIG_MACH_NETSPACE_MAX_V2_DT) || \
146 defined(CONFIG_MACH_NETSPACE_LITE_V2_DT) || \
147 defined(CONFIG_MACH_NETSPACE_MINI_V2_DT)
148void ns2_init(void);
149#else
150static inline void ns2_init(void) {};
151#endif
152
153#ifdef CONFIG_MACH_OPENBLOCKS_A6_DT
154void openblocks_a6_init(void);
155#else
156static inline void openblocks_a6_init(void) {};
157#endif
158
159#ifdef CONFIG_MACH_READYNAS_DT
160void netgear_readynas_init(void);
161#else
162static inline void netgear_readynas_init(void) {};
163#endif
164
165#ifdef CONFIG_MACH_TOPKICK_DT
166void usi_topkick_init(void);
167#else
168static inline void usi_topkick_init(void) {};
169#endif
170
171#ifdef CONFIG_MACH_CLOUDBOX_DT
172void cloudbox_init(void);
173#else
174static inline void cloudbox_init(void) {};
175#endif 66#endif
176 67
177/* early init functions not converted to fdt yet */ 68/* early init functions not converted to fdt yet */
diff --git a/arch/arm/mach-kirkwood/dockstar-setup.c b/arch/arm/mach-kirkwood/dockstar-setup.c
deleted file mode 100644
index 060ccf9cb63f..000000000000
--- a/arch/arm/mach-kirkwood/dockstar-setup.c
+++ /dev/null
@@ -1,111 +0,0 @@
1/*
2 * arch/arm/mach-kirkwood/dockstar-setup.c
3 *
4 * Seagate FreeAgent DockStar Setup
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/platform_device.h>
14#include <linux/ata_platform.h>
15#include <linux/mtd/partitions.h>
16#include <linux/mv643xx_eth.h>
17#include <linux/gpio.h>
18#include <linux/leds.h>
19#include <asm/mach-types.h>
20#include <asm/mach/arch.h>
21#include <mach/kirkwood.h>
22#include "common.h"
23#include "mpp.h"
24
25static struct mtd_partition dockstar_nand_parts[] = {
26 {
27 .name = "u-boot",
28 .offset = 0,
29 .size = SZ_1M
30 }, {
31 .name = "uImage",
32 .offset = MTDPART_OFS_NXTBLK,
33 .size = SZ_4M
34 }, {
35 .name = "root",
36 .offset = MTDPART_OFS_NXTBLK,
37 .size = MTDPART_SIZ_FULL
38 },
39};
40
41static struct mv643xx_eth_platform_data dockstar_ge00_data = {
42 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
43};
44
45static struct gpio_led dockstar_led_pins[] = {
46 {
47 .name = "dockstar:green:health",
48 .default_trigger = "default-on",
49 .gpio = 46,
50 .active_low = 1,
51 },
52 {
53 .name = "dockstar:orange:misc",
54 .default_trigger = "none",
55 .gpio = 47,
56 .active_low = 1,
57 },
58};
59
60static struct gpio_led_platform_data dockstar_led_data = {
61 .leds = dockstar_led_pins,
62 .num_leds = ARRAY_SIZE(dockstar_led_pins),
63};
64
65static struct platform_device dockstar_leds = {
66 .name = "leds-gpio",
67 .id = -1,
68 .dev = {
69 .platform_data = &dockstar_led_data,
70 }
71};
72
73static unsigned int dockstar_mpp_config[] __initdata = {
74 MPP29_GPIO, /* USB Power Enable */
75 MPP46_GPIO, /* LED green */
76 MPP47_GPIO, /* LED orange */
77 0
78};
79
80static void __init dockstar_init(void)
81{
82 /*
83 * Basic setup. Needs to be called early.
84 */
85 kirkwood_init();
86
87 /* setup gpio pin select */
88 kirkwood_mpp_conf(dockstar_mpp_config);
89
90 kirkwood_uart0_init();
91 kirkwood_nand_init(ARRAY_AND_SIZE(dockstar_nand_parts), 25);
92
93 if (gpio_request(29, "USB Power Enable") != 0 ||
94 gpio_direction_output(29, 1) != 0)
95 pr_err("can't set up GPIO 29 (USB Power Enable)\n");
96 kirkwood_ehci_init();
97
98 kirkwood_ge00_init(&dockstar_ge00_data);
99
100 platform_device_register(&dockstar_leds);
101}
102
103MACHINE_START(DOCKSTAR, "Seagate FreeAgent DockStar")
104 .atag_offset = 0x100,
105 .init_machine = dockstar_init,
106 .map_io = kirkwood_map_io,
107 .init_early = kirkwood_init_early,
108 .init_irq = kirkwood_init_irq,
109 .init_time = kirkwood_timer_init,
110 .restart = kirkwood_restart,
111MACHINE_END
diff --git a/arch/arm/mach-kirkwood/guruplug-setup.c b/arch/arm/mach-kirkwood/guruplug-setup.c
deleted file mode 100644
index 08dd739aa709..000000000000
--- a/arch/arm/mach-kirkwood/guruplug-setup.c
+++ /dev/null
@@ -1,133 +0,0 @@
1/*
2 * arch/arm/mach-kirkwood/guruplug-setup.c
3 *
4 * Marvell GuruPlug Reference Board Setup
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/platform_device.h>
14#include <linux/mtd/partitions.h>
15#include <linux/ata_platform.h>
16#include <linux/mv643xx_eth.h>
17#include <linux/gpio.h>
18#include <linux/leds.h>
19#include <asm/mach-types.h>
20#include <asm/mach/arch.h>
21#include <mach/kirkwood.h>
22#include <linux/platform_data/mmc-mvsdio.h>
23#include "common.h"
24#include "mpp.h"
25
26static struct mtd_partition guruplug_nand_parts[] = {
27 {
28 .name = "u-boot",
29 .offset = 0,
30 .size = SZ_1M
31 }, {
32 .name = "uImage",
33 .offset = MTDPART_OFS_NXTBLK,
34 .size = SZ_4M
35 }, {
36 .name = "root",
37 .offset = MTDPART_OFS_NXTBLK,
38 .size = MTDPART_SIZ_FULL
39 },
40};
41
42static struct mv643xx_eth_platform_data guruplug_ge00_data = {
43 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
44};
45
46static struct mv643xx_eth_platform_data guruplug_ge01_data = {
47 .phy_addr = MV643XX_ETH_PHY_ADDR(1),
48};
49
50static struct mv_sata_platform_data guruplug_sata_data = {
51 .n_ports = 1,
52};
53
54static struct mvsdio_platform_data guruplug_mvsdio_data = {
55 /* unfortunately the CD signal has not been connected */
56 .gpio_card_detect = -1,
57 .gpio_write_protect = -1,
58};
59
60static struct gpio_led guruplug_led_pins[] = {
61 {
62 .name = "guruplug:red:health",
63 .gpio = 46,
64 .active_low = 1,
65 },
66 {
67 .name = "guruplug:green:health",
68 .gpio = 47,
69 .active_low = 1,
70 },
71 {
72 .name = "guruplug:red:wmode",
73 .gpio = 48,
74 .active_low = 1,
75 },
76 {
77 .name = "guruplug:green:wmode",
78 .gpio = 49,
79 .active_low = 1,
80 },
81};
82
83static struct gpio_led_platform_data guruplug_led_data = {
84 .leds = guruplug_led_pins,
85 .num_leds = ARRAY_SIZE(guruplug_led_pins),
86};
87
88static struct platform_device guruplug_leds = {
89 .name = "leds-gpio",
90 .id = -1,
91 .dev = {
92 .platform_data = &guruplug_led_data,
93 }
94};
95
96static unsigned int guruplug_mpp_config[] __initdata = {
97 MPP46_GPIO, /* M_RLED */
98 MPP47_GPIO, /* M_GLED */
99 MPP48_GPIO, /* B_RLED */
100 MPP49_GPIO, /* B_GLED */
101 0
102};
103
104static void __init guruplug_init(void)
105{
106 /*
107 * Basic setup. Needs to be called early.
108 */
109 kirkwood_init();
110 kirkwood_mpp_conf(guruplug_mpp_config);
111
112 kirkwood_uart0_init();
113 kirkwood_nand_init(ARRAY_AND_SIZE(guruplug_nand_parts), 25);
114
115 kirkwood_ehci_init();
116 kirkwood_ge00_init(&guruplug_ge00_data);
117 kirkwood_ge01_init(&guruplug_ge01_data);
118 kirkwood_sata_init(&guruplug_sata_data);
119 kirkwood_sdio_init(&guruplug_mvsdio_data);
120
121 platform_device_register(&guruplug_leds);
122}
123
124MACHINE_START(GURUPLUG, "Marvell GuruPlug Reference Board")
125 /* Maintainer: Siddarth Gore <gores@marvell.com> */
126 .atag_offset = 0x100,
127 .init_machine = guruplug_init,
128 .map_io = kirkwood_map_io,
129 .init_early = kirkwood_init_early,
130 .init_irq = kirkwood_init_irq,
131 .init_time = kirkwood_timer_init,
132 .restart = kirkwood_restart,
133MACHINE_END
diff --git a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
deleted file mode 100644
index ba384b992bef..000000000000
--- a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
+++ /dev/null
@@ -1,172 +0,0 @@
1/*
2 * arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
3 *
4 * Marvell 88F6281 GTW GE Board Setup
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/platform_device.h>
14#include <linux/pci.h>
15#include <linux/irq.h>
16#include <linux/mtd/physmap.h>
17#include <linux/timer.h>
18#include <linux/mv643xx_eth.h>
19#include <linux/ethtool.h>
20#include <linux/gpio.h>
21#include <linux/leds.h>
22#include <linux/input.h>
23#include <linux/gpio_keys.h>
24#include <linux/spi/flash.h>
25#include <linux/spi/spi.h>
26#include <net/dsa.h>
27#include <asm/mach-types.h>
28#include <asm/mach/arch.h>
29#include <asm/mach/pci.h>
30#include <mach/kirkwood.h>
31#include "common.h"
32#include "mpp.h"
33
34static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data = {
35 .phy_addr = MV643XX_ETH_PHY_NONE,
36 .speed = SPEED_1000,
37 .duplex = DUPLEX_FULL,
38};
39
40static struct dsa_chip_data mv88f6281gtw_ge_switch_chip_data = {
41 .port_names[0] = "lan1",
42 .port_names[1] = "lan2",
43 .port_names[2] = "lan3",
44 .port_names[3] = "lan4",
45 .port_names[4] = "wan",
46 .port_names[5] = "cpu",
47};
48
49static struct dsa_platform_data mv88f6281gtw_ge_switch_plat_data = {
50 .nr_chips = 1,
51 .chip = &mv88f6281gtw_ge_switch_chip_data,
52};
53
54static const struct flash_platform_data mv88f6281gtw_ge_spi_slave_data = {
55 .type = "mx25l12805d",
56};
57
58static struct spi_board_info __initdata mv88f6281gtw_ge_spi_slave_info[] = {
59 {
60 .modalias = "m25p80",
61 .platform_data = &mv88f6281gtw_ge_spi_slave_data,
62 .irq = -1,
63 .max_speed_hz = 50000000,
64 .bus_num = 0,
65 .chip_select = 0,
66 },
67};
68
69static struct gpio_keys_button mv88f6281gtw_ge_button_pins[] = {
70 {
71 .code = KEY_RESTART,
72 .gpio = 47,
73 .desc = "SWR Button",
74 .active_low = 1,
75 }, {
76 .code = KEY_WPS_BUTTON,
77 .gpio = 46,
78 .desc = "WPS Button",
79 .active_low = 1,
80 },
81};
82
83static struct gpio_keys_platform_data mv88f6281gtw_ge_button_data = {
84 .buttons = mv88f6281gtw_ge_button_pins,
85 .nbuttons = ARRAY_SIZE(mv88f6281gtw_ge_button_pins),
86};
87
88static struct platform_device mv88f6281gtw_ge_buttons = {
89 .name = "gpio-keys",
90 .id = -1,
91 .num_resources = 0,
92 .dev = {
93 .platform_data = &mv88f6281gtw_ge_button_data,
94 },
95};
96
97static struct gpio_led mv88f6281gtw_ge_led_pins[] = {
98 {
99 .name = "gtw:green:Status",
100 .gpio = 20,
101 .active_low = 0,
102 }, {
103 .name = "gtw:red:Status",
104 .gpio = 21,
105 .active_low = 0,
106 }, {
107 .name = "gtw:green:USB",
108 .gpio = 12,
109 .active_low = 0,
110 },
111};
112
113static struct gpio_led_platform_data mv88f6281gtw_ge_led_data = {
114 .leds = mv88f6281gtw_ge_led_pins,
115 .num_leds = ARRAY_SIZE(mv88f6281gtw_ge_led_pins),
116};
117
118static struct platform_device mv88f6281gtw_ge_leds = {
119 .name = "leds-gpio",
120 .id = -1,
121 .dev = {
122 .platform_data = &mv88f6281gtw_ge_led_data,
123 },
124};
125
126static unsigned int mv88f6281gtw_ge_mpp_config[] __initdata = {
127 MPP12_GPO, /* Status#_USB pin */
128 MPP20_GPIO, /* Status#_GLED pin */
129 MPP21_GPIO, /* Status#_RLED pin */
130 MPP46_GPIO, /* WPS_Switch pin */
131 MPP47_GPIO, /* SW_Init pin */
132 0
133};
134
135static void __init mv88f6281gtw_ge_init(void)
136{
137 /*
138 * Basic setup. Needs to be called early.
139 */
140 kirkwood_init();
141 kirkwood_mpp_conf(mv88f6281gtw_ge_mpp_config);
142
143 kirkwood_ehci_init();
144 kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data);
145 kirkwood_ge00_switch_init(&mv88f6281gtw_ge_switch_plat_data, NO_IRQ);
146 spi_register_board_info(mv88f6281gtw_ge_spi_slave_info,
147 ARRAY_SIZE(mv88f6281gtw_ge_spi_slave_info));
148 kirkwood_spi_init();
149 kirkwood_uart0_init();
150 platform_device_register(&mv88f6281gtw_ge_leds);
151 platform_device_register(&mv88f6281gtw_ge_buttons);
152}
153
154static int __init mv88f6281gtw_ge_pci_init(void)
155{
156 if (machine_is_mv88f6281gtw_ge())
157 kirkwood_pcie_init(KW_PCIE0);
158
159 return 0;
160}
161subsys_initcall(mv88f6281gtw_ge_pci_init);
162
163MACHINE_START(MV88F6281GTW_GE, "Marvell 88F6281 GTW GE Board")
164 /* Maintainer: Lennert Buytenhek <buytenh@marvell.com> */
165 .atag_offset = 0x100,
166 .init_machine = mv88f6281gtw_ge_init,
167 .map_io = kirkwood_map_io,
168 .init_early = kirkwood_init_early,
169 .init_irq = kirkwood_init_irq,
170 .init_time = kirkwood_timer_init,
171 .restart = kirkwood_restart,
172MACHINE_END
diff --git a/arch/arm/mach-kirkwood/netspace_v2-setup.c b/arch/arm/mach-kirkwood/netspace_v2-setup.c
deleted file mode 100644
index 3b706611da8e..000000000000
--- a/arch/arm/mach-kirkwood/netspace_v2-setup.c
+++ /dev/null
@@ -1,293 +0,0 @@
1/*
2 * arch/arm/mach-kirkwood/netspace_v2-setup.c
3 *
4 * LaCie Network Space v2 board setup
5 *
6 * Copyright (C) 2009 Simon Guinot <sguinot@lacie.com>
7 * Copyright (C) 2009 Benoît Canet <benoit.canet@gmail.com>
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 as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23
24#include <linux/kernel.h>
25#include <linux/init.h>
26#include <linux/platform_device.h>
27#include <linux/ata_platform.h>
28#include <linux/mv643xx_eth.h>
29#include <linux/input.h>
30#include <linux/gpio.h>
31#include <linux/gpio_keys.h>
32#include <linux/leds.h>
33#include <linux/gpio-fan.h>
34#include <asm/mach-types.h>
35#include <asm/mach/arch.h>
36#include <mach/kirkwood.h>
37#include <linux/platform_data/leds-kirkwood-ns2.h>
38#include "common.h"
39#include "mpp.h"
40#include "lacie_v2-common.h"
41
42/*****************************************************************************
43 * Ethernet
44 ****************************************************************************/
45
46static struct mv643xx_eth_platform_data netspace_v2_ge00_data = {
47 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
48};
49
50/*****************************************************************************
51 * SATA
52 ****************************************************************************/
53
54static struct mv_sata_platform_data netspace_v2_sata_data = {
55 .n_ports = 2,
56};
57
58/*****************************************************************************
59 * GPIO keys
60 ****************************************************************************/
61
62#define NETSPACE_V2_PUSH_BUTTON 32
63
64static struct gpio_keys_button netspace_v2_buttons[] = {
65 [0] = {
66 .code = KEY_POWER,
67 .gpio = NETSPACE_V2_PUSH_BUTTON,
68 .desc = "Power push button",
69 .active_low = 0,
70 },
71};
72
73static struct gpio_keys_platform_data netspace_v2_button_data = {
74 .buttons = netspace_v2_buttons,
75 .nbuttons = ARRAY_SIZE(netspace_v2_buttons),
76};
77
78static struct platform_device netspace_v2_gpio_buttons = {
79 .name = "gpio-keys",
80 .id = -1,
81 .dev = {
82 .platform_data = &netspace_v2_button_data,
83 },
84};
85
86/*****************************************************************************
87 * GPIO LEDs
88 ****************************************************************************/
89
90#define NETSPACE_V2_GPIO_RED_LED 12
91
92static struct gpio_led netspace_v2_gpio_led_pins[] = {
93 {
94 .name = "ns_v2:red:fail",
95 .gpio = NETSPACE_V2_GPIO_RED_LED,
96 },
97};
98
99static struct gpio_led_platform_data netspace_v2_gpio_leds_data = {
100 .num_leds = ARRAY_SIZE(netspace_v2_gpio_led_pins),
101 .leds = netspace_v2_gpio_led_pins,
102};
103
104static struct platform_device netspace_v2_gpio_leds = {
105 .name = "leds-gpio",
106 .id = -1,
107 .dev = {
108 .platform_data = &netspace_v2_gpio_leds_data,
109 },
110};
111
112/*****************************************************************************
113 * Dual-GPIO CPLD LEDs
114 ****************************************************************************/
115
116#define NETSPACE_V2_GPIO_BLUE_LED_SLOW 29
117#define NETSPACE_V2_GPIO_BLUE_LED_CMD 30
118
119static struct ns2_led netspace_v2_led_pins[] = {
120 {
121 .name = "ns_v2:blue:sata",
122 .cmd = NETSPACE_V2_GPIO_BLUE_LED_CMD,
123 .slow = NETSPACE_V2_GPIO_BLUE_LED_SLOW,
124 },
125};
126
127static struct ns2_led_platform_data netspace_v2_leds_data = {
128 .num_leds = ARRAY_SIZE(netspace_v2_led_pins),
129 .leds = netspace_v2_led_pins,
130};
131
132static struct platform_device netspace_v2_leds = {
133 .name = "leds-ns2",
134 .id = -1,
135 .dev = {
136 .platform_data = &netspace_v2_leds_data,
137 },
138};
139
140/*****************************************************************************
141 * GPIO fan
142 ****************************************************************************/
143
144/* Designed for fan 40x40x16: ADDA AD0412LB-D50 6000rpm@12v */
145static struct gpio_fan_speed netspace_max_v2_fan_speed[] = {
146 { 0, 0 },
147 { 1500, 15 },
148 { 1700, 14 },
149 { 1800, 13 },
150 { 2100, 12 },
151 { 3100, 11 },
152 { 3300, 10 },
153 { 4300, 9 },
154 { 5500, 8 },
155};
156
157static unsigned netspace_max_v2_fan_ctrl[] = { 22, 7, 33, 23 };
158
159static struct gpio_fan_alarm netspace_max_v2_fan_alarm = {
160 .gpio = 25,
161 .active_low = 1,
162};
163
164static struct gpio_fan_platform_data netspace_max_v2_fan_data = {
165 .num_ctrl = ARRAY_SIZE(netspace_max_v2_fan_ctrl),
166 .ctrl = netspace_max_v2_fan_ctrl,
167 .alarm = &netspace_max_v2_fan_alarm,
168 .num_speed = ARRAY_SIZE(netspace_max_v2_fan_speed),
169 .speed = netspace_max_v2_fan_speed,
170};
171
172static struct platform_device netspace_max_v2_gpio_fan = {
173 .name = "gpio-fan",
174 .id = -1,
175 .dev = {
176 .platform_data = &netspace_max_v2_fan_data,
177 },
178};
179
180/*****************************************************************************
181 * General Setup
182 ****************************************************************************/
183
184static unsigned int netspace_v2_mpp_config[] __initdata = {
185 MPP0_SPI_SCn,
186 MPP1_SPI_MOSI,
187 MPP2_SPI_SCK,
188 MPP3_SPI_MISO,
189 MPP4_NF_IO6,
190 MPP5_NF_IO7,
191 MPP6_SYSRST_OUTn,
192 MPP7_GPO, /* Fan speed (bit 1) */
193 MPP8_TW0_SDA,
194 MPP9_TW0_SCK,
195 MPP10_UART0_TXD,
196 MPP11_UART0_RXD,
197 MPP12_GPO, /* Red led */
198 MPP14_GPIO, /* USB fuse */
199 MPP16_GPIO, /* SATA 0 power */
200 MPP17_GPIO, /* SATA 1 power */
201 MPP18_NF_IO0,
202 MPP19_NF_IO1,
203 MPP20_SATA1_ACTn,
204 MPP21_SATA0_ACTn,
205 MPP22_GPIO, /* Fan speed (bit 0) */
206 MPP23_GPIO, /* Fan power */
207 MPP24_GPIO, /* USB mode select */
208 MPP25_GPIO, /* Fan rotation fail */
209 MPP26_GPIO, /* USB device vbus */
210 MPP28_GPIO, /* USB enable host vbus */
211 MPP29_GPIO, /* Blue led (slow register) */
212 MPP30_GPIO, /* Blue led (command register) */
213 MPP31_GPIO, /* Board power off */
214 MPP32_GPIO, /* Power button (0 = Released, 1 = Pushed) */
215 MPP33_GPO, /* Fan speed (bit 2) */
216 0
217};
218
219#define NETSPACE_V2_GPIO_POWER_OFF 31
220
221static void netspace_v2_power_off(void)
222{
223 gpio_set_value(NETSPACE_V2_GPIO_POWER_OFF, 1);
224}
225
226static void __init netspace_v2_init(void)
227{
228 /*
229 * Basic setup. Needs to be called early.
230 */
231 kirkwood_init();
232 kirkwood_mpp_conf(netspace_v2_mpp_config);
233
234 if (machine_is_netspace_max_v2())
235 lacie_v2_hdd_power_init(2);
236 else
237 lacie_v2_hdd_power_init(1);
238
239 kirkwood_ehci_init();
240 kirkwood_ge00_init(&netspace_v2_ge00_data);
241 kirkwood_sata_init(&netspace_v2_sata_data);
242 kirkwood_uart0_init();
243 lacie_v2_register_flash();
244 lacie_v2_register_i2c_devices();
245
246 platform_device_register(&netspace_v2_leds);
247 platform_device_register(&netspace_v2_gpio_leds);
248 platform_device_register(&netspace_v2_gpio_buttons);
249 if (machine_is_netspace_max_v2())
250 platform_device_register(&netspace_max_v2_gpio_fan);
251
252 if (gpio_request(NETSPACE_V2_GPIO_POWER_OFF, "power-off") == 0 &&
253 gpio_direction_output(NETSPACE_V2_GPIO_POWER_OFF, 0) == 0)
254 pm_power_off = netspace_v2_power_off;
255 else
256 pr_err("netspace_v2: failed to configure power-off GPIO\n");
257}
258
259#ifdef CONFIG_MACH_NETSPACE_V2
260MACHINE_START(NETSPACE_V2, "LaCie Network Space v2")
261 .atag_offset = 0x100,
262 .init_machine = netspace_v2_init,
263 .map_io = kirkwood_map_io,
264 .init_early = kirkwood_init_early,
265 .init_irq = kirkwood_init_irq,
266 .init_time = kirkwood_timer_init,
267 .restart = kirkwood_restart,
268MACHINE_END
269#endif
270
271#ifdef CONFIG_MACH_INETSPACE_V2
272MACHINE_START(INETSPACE_V2, "LaCie Internet Space v2")
273 .atag_offset = 0x100,
274 .init_machine = netspace_v2_init,
275 .map_io = kirkwood_map_io,
276 .init_early = kirkwood_init_early,
277 .init_irq = kirkwood_init_irq,
278 .init_time = kirkwood_timer_init,
279 .restart = kirkwood_restart,
280MACHINE_END
281#endif
282
283#ifdef CONFIG_MACH_NETSPACE_MAX_V2
284MACHINE_START(NETSPACE_MAX_V2, "LaCie Network Space Max v2")
285 .atag_offset = 0x100,
286 .init_machine = netspace_v2_init,
287 .map_io = kirkwood_map_io,
288 .init_early = kirkwood_init_early,
289 .init_irq = kirkwood_init_irq,
290 .init_time = kirkwood_timer_init,
291 .restart = kirkwood_restart,
292MACHINE_END
293#endif
diff --git a/arch/arm/mach-kirkwood/openrd-setup.c b/arch/arm/mach-kirkwood/openrd-setup.c
index 6a6eb548307d..e5cf84103583 100644
--- a/arch/arm/mach-kirkwood/openrd-setup.c
+++ b/arch/arm/mach-kirkwood/openrd-setup.c
@@ -158,7 +158,8 @@ static void __init openrd_init(void)
158 kirkwood_mpp_conf(openrd_mpp_config); 158 kirkwood_mpp_conf(openrd_mpp_config);
159 159
160 kirkwood_uart0_init(); 160 kirkwood_uart0_init();
161 kirkwood_nand_init(ARRAY_AND_SIZE(openrd_nand_parts), 25); 161 kirkwood_nand_init(openrd_nand_parts, ARRAY_SIZE(openrd_nand_parts),
162 25);
162 163
163 kirkwood_ehci_init(); 164 kirkwood_ehci_init();
164 165
diff --git a/arch/arm/mach-kirkwood/rd88f6281-setup.c b/arch/arm/mach-kirkwood/rd88f6281-setup.c
index d24223166e06..5154bd2a3ad3 100644
--- a/arch/arm/mach-kirkwood/rd88f6281-setup.c
+++ b/arch/arm/mach-kirkwood/rd88f6281-setup.c
@@ -87,7 +87,9 @@ static void __init rd88f6281_init(void)
87 kirkwood_init(); 87 kirkwood_init();
88 kirkwood_mpp_conf(rd88f6281_mpp_config); 88 kirkwood_mpp_conf(rd88f6281_mpp_config);
89 89
90 kirkwood_nand_init(ARRAY_AND_SIZE(rd88f6281_nand_parts), 25); 90 kirkwood_nand_init(rd88f6281_nand_parts,
91 ARRAY_SIZE(rd88f6281_nand_parts),
92 25);
91 kirkwood_ehci_init(); 93 kirkwood_ehci_init();
92 94
93 kirkwood_ge00_init(&rd88f6281_ge00_data); 95 kirkwood_ge00_init(&rd88f6281_ge00_data);
diff --git a/arch/arm/mach-kirkwood/sheevaplug-setup.c b/arch/arm/mach-kirkwood/sheevaplug-setup.c
deleted file mode 100644
index 55b68fa39f45..000000000000
--- a/arch/arm/mach-kirkwood/sheevaplug-setup.c
+++ /dev/null
@@ -1,161 +0,0 @@
1/*
2 * arch/arm/mach-kirkwood/sheevaplug-setup.c
3 *
4 * Marvell SheevaPlug Reference Board Setup
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2. This program is licensed "as is" without any
8 * warranty of any kind, whether express or implied.
9 */
10
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/platform_device.h>
14#include <linux/ata_platform.h>
15#include <linux/mtd/partitions.h>
16#include <linux/mv643xx_eth.h>
17#include <linux/gpio.h>
18#include <linux/leds.h>
19#include <asm/mach-types.h>
20#include <asm/mach/arch.h>
21#include <mach/kirkwood.h>
22#include <linux/platform_data/mmc-mvsdio.h>
23#include "common.h"
24#include "mpp.h"
25
26static struct mtd_partition sheevaplug_nand_parts[] = {
27 {
28 .name = "u-boot",
29 .offset = 0,
30 .size = SZ_1M
31 }, {
32 .name = "uImage",
33 .offset = MTDPART_OFS_NXTBLK,
34 .size = SZ_4M
35 }, {
36 .name = "root",
37 .offset = MTDPART_OFS_NXTBLK,
38 .size = MTDPART_SIZ_FULL
39 },
40};
41
42static struct mv643xx_eth_platform_data sheevaplug_ge00_data = {
43 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
44};
45
46static struct mv_sata_platform_data sheeva_esata_sata_data = {
47 .n_ports = 2,
48};
49
50static struct mvsdio_platform_data sheevaplug_mvsdio_data = {
51 /* unfortunately the CD signal has not been connected */
52};
53
54static struct mvsdio_platform_data sheeva_esata_mvsdio_data = {
55 .gpio_write_protect = 44, /* MPP44 used as SD write protect */
56 .gpio_card_detect = 47, /* MPP47 used as SD card detect */
57};
58
59static struct gpio_led sheevaplug_led_pins[] = {
60 {
61 .name = "plug:red:misc",
62 .default_trigger = "none",
63 .gpio = 46,
64 .active_low = 1,
65 },
66 {
67 .name = "plug:green:health",
68 .default_trigger = "default-on",
69 .gpio = 49,
70 .active_low = 1,
71 },
72};
73
74static struct gpio_led_platform_data sheevaplug_led_data = {
75 .leds = sheevaplug_led_pins,
76 .num_leds = ARRAY_SIZE(sheevaplug_led_pins),
77};
78
79static struct platform_device sheevaplug_leds = {
80 .name = "leds-gpio",
81 .id = -1,
82 .dev = {
83 .platform_data = &sheevaplug_led_data,
84 }
85};
86
87static unsigned int sheevaplug_mpp_config[] __initdata = {
88 MPP29_GPIO, /* USB Power Enable */
89 MPP46_GPIO, /* LED Red */
90 MPP49_GPIO, /* LED */
91 0
92};
93
94static unsigned int sheeva_esata_mpp_config[] __initdata = {
95 MPP29_GPIO, /* USB Power Enable */
96 MPP44_GPIO, /* SD Write Protect */
97 MPP47_GPIO, /* SD Card Detect */
98 MPP49_GPIO, /* LED Green */
99 0
100};
101
102static void __init sheevaplug_init(void)
103{
104 /*
105 * Basic setup. Needs to be called early.
106 */
107 kirkwood_init();
108
109 /* setup gpio pin select */
110 if (machine_is_esata_sheevaplug())
111 kirkwood_mpp_conf(sheeva_esata_mpp_config);
112 else
113 kirkwood_mpp_conf(sheevaplug_mpp_config);
114
115 kirkwood_uart0_init();
116 kirkwood_nand_init(ARRAY_AND_SIZE(sheevaplug_nand_parts), 25);
117
118 if (gpio_request(29, "USB Power Enable") != 0 ||
119 gpio_direction_output(29, 1) != 0)
120 pr_err("can't set up GPIO 29 (USB Power Enable)\n");
121 kirkwood_ehci_init();
122
123 kirkwood_ge00_init(&sheevaplug_ge00_data);
124
125 /* honor lower power consumption for plugs with out eSATA */
126 if (machine_is_esata_sheevaplug())
127 kirkwood_sata_init(&sheeva_esata_sata_data);
128
129 /* enable sd wp and sd cd on plugs with esata */
130 if (machine_is_esata_sheevaplug())
131 kirkwood_sdio_init(&sheeva_esata_mvsdio_data);
132 else
133 kirkwood_sdio_init(&sheevaplug_mvsdio_data);
134
135 platform_device_register(&sheevaplug_leds);
136}
137
138#ifdef CONFIG_MACH_SHEEVAPLUG
139MACHINE_START(SHEEVAPLUG, "Marvell SheevaPlug Reference Board")
140 /* Maintainer: shadi Ammouri <shadi@marvell.com> */
141 .atag_offset = 0x100,
142 .init_machine = sheevaplug_init,
143 .map_io = kirkwood_map_io,
144 .init_early = kirkwood_init_early,
145 .init_irq = kirkwood_init_irq,
146 .init_time = kirkwood_timer_init,
147 .restart = kirkwood_restart,
148MACHINE_END
149#endif
150
151#ifdef CONFIG_MACH_ESATA_SHEEVAPLUG
152MACHINE_START(ESATA_SHEEVAPLUG, "Marvell eSATA SheevaPlug Reference Board")
153 .atag_offset = 0x100,
154 .init_machine = sheevaplug_init,
155 .map_io = kirkwood_map_io,
156 .init_early = kirkwood_init_early,
157 .init_irq = kirkwood_init_irq,
158 .init_time = kirkwood_timer_init,
159 .restart = kirkwood_restart,
160MACHINE_END
161#endif
diff --git a/arch/arm/mach-orion5x/edmini_v2-setup.c b/arch/arm/mach-orion5x/edmini_v2-setup.c
index 0fc33c56cbb7..f66c1b2ee8c1 100644
--- a/arch/arm/mach-orion5x/edmini_v2-setup.c
+++ b/arch/arm/mach-orion5x/edmini_v2-setup.c
@@ -23,8 +23,8 @@
23#include <linux/platform_device.h> 23#include <linux/platform_device.h>
24#include <linux/pci.h> 24#include <linux/pci.h>
25#include <linux/irq.h> 25#include <linux/irq.h>
26#include <linux/mbus.h>
26#include <linux/mtd/physmap.h> 27#include <linux/mtd/physmap.h>
27#include <linux/mv643xx_eth.h>
28#include <linux/leds.h> 28#include <linux/leds.h>
29#include <linux/gpio_keys.h> 29#include <linux/gpio_keys.h>
30#include <linux/input.h> 30#include <linux/input.h>
@@ -96,14 +96,6 @@ static struct platform_device edmini_v2_nor_flash = {
96}; 96};
97 97
98/***************************************************************************** 98/*****************************************************************************
99 * Ethernet
100 ****************************************************************************/
101
102static struct mv643xx_eth_platform_data edmini_v2_eth_data = {
103 .phy_addr = 8,
104};
105
106/*****************************************************************************
107 * RTC 5C372a on I2C bus 99 * RTC 5C372a on I2C bus
108 ****************************************************************************/ 100 ****************************************************************************/
109 101
@@ -152,7 +144,6 @@ void __init edmini_v2_init(void)
152 * Configure peripherals. 144 * Configure peripherals.
153 */ 145 */
154 orion5x_ehci0_init(); 146 orion5x_ehci0_init();
155 orion5x_eth_init(&edmini_v2_eth_data);
156 147
157 mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET, 148 mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
158 ORION_MBUS_DEVBUS_BOOT_ATTR, 149 ORION_MBUS_DEVBUS_BOOT_ATTR,
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index 403c939ddf99..e817fde6729a 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -162,6 +162,7 @@ config MACH_BOCKW
162 depends on ARCH_R8A7778 162 depends on ARCH_R8A7778
163 select ARCH_REQUIRE_GPIOLIB 163 select ARCH_REQUIRE_GPIOLIB
164 select RENESAS_INTC_IRQPIN 164 select RENESAS_INTC_IRQPIN
165 select REGULATOR_FIXED_VOLTAGE if REGULATOR
165 select USE_OF 166 select USE_OF
166 167
167config MACH_MARZEN 168config MACH_MARZEN
diff --git a/arch/arm/mach-shmobile/board-ag5evm.c b/arch/arm/mach-shmobile/board-ag5evm.c
index c7540710906f..f6d64495c405 100644
--- a/arch/arm/mach-shmobile/board-ag5evm.c
+++ b/arch/arm/mach-shmobile/board-ag5evm.c
@@ -41,6 +41,7 @@
41#include <linux/mmc/sh_mmcif.h> 41#include <linux/mmc/sh_mmcif.h>
42#include <linux/mmc/sh_mobile_sdhi.h> 42#include <linux/mmc/sh_mobile_sdhi.h>
43#include <linux/mfd/tmio.h> 43#include <linux/mfd/tmio.h>
44#include <linux/platform_data/bd6107.h>
44#include <linux/sh_clk.h> 45#include <linux/sh_clk.h>
45#include <linux/irqchip/arm-gic.h> 46#include <linux/irqchip/arm-gic.h>
46#include <video/sh_mobile_lcdc.h> 47#include <video/sh_mobile_lcdc.h>
@@ -291,47 +292,7 @@ static struct platform_device mipidsi0_device = {
291 }, 292 },
292}; 293};
293 294
294static unsigned char lcd_backlight_seq[3][2] = { 295/* LCDC0 and backlight */
295 { 0x04, 0x07 },
296 { 0x23, 0x80 },
297 { 0x03, 0x01 },
298};
299
300static int lcd_backlight_set_brightness(int brightness)
301{
302 struct i2c_adapter *adap;
303 struct i2c_msg msg;
304 unsigned int i;
305 int ret;
306
307 if (brightness == 0) {
308 /* Reset the chip */
309 gpio_set_value(235, 0);
310 mdelay(24);
311 gpio_set_value(235, 1);
312 return 0;
313 }
314
315 adap = i2c_get_adapter(1);
316 if (adap == NULL)
317 return -ENODEV;
318
319 for (i = 0; i < ARRAY_SIZE(lcd_backlight_seq); i++) {
320 msg.addr = 0x6d;
321 msg.buf = &lcd_backlight_seq[i][0];
322 msg.len = 2;
323 msg.flags = 0;
324
325 ret = i2c_transfer(adap, &msg, 1);
326 if (ret < 0)
327 break;
328 }
329
330 i2c_put_adapter(adap);
331 return ret < 0 ? ret : 0;
332}
333
334/* LCDC0 */
335static const struct fb_videomode lcdc0_modes[] = { 296static const struct fb_videomode lcdc0_modes[] = {
336 { 297 {
337 .name = "R63302(QHD)", 298 .name = "R63302(QHD)",
@@ -361,11 +322,6 @@ static struct sh_mobile_lcdc_info lcdc0_info = {
361 .width = 44, 322 .width = 44,
362 .height = 79, 323 .height = 79,
363 }, 324 },
364 .bl_info = {
365 .name = "sh_mobile_lcdc_bl",
366 .max_brightness = 1,
367 .set_brightness = lcd_backlight_set_brightness,
368 },
369 .tx_dev = &mipidsi0_device, 325 .tx_dev = &mipidsi0_device,
370 } 326 }
371}; 327};
@@ -394,6 +350,17 @@ static struct platform_device lcdc0_device = {
394 }, 350 },
395}; 351};
396 352
353static struct bd6107_platform_data backlight_data = {
354 .fbdev = &lcdc0_device.dev,
355 .reset = 235,
356 .def_value = 0,
357};
358
359static struct i2c_board_info backlight_board_info = {
360 I2C_BOARD_INFO("bd6107", 0x6d),
361 .platform_data = &backlight_data,
362};
363
397/* Fixed 2.8V regulators to be used by SDHI0 */ 364/* Fixed 2.8V regulators to be used by SDHI0 */
398static struct regulator_consumer_supply fixed2v8_power_consumers[] = 365static struct regulator_consumer_supply fixed2v8_power_consumers[] =
399{ 366{
@@ -648,15 +615,15 @@ static void __init ag5evm_init(void)
648 gpio_set_value(217, 1); 615 gpio_set_value(217, 1);
649 mdelay(100); 616 mdelay(100);
650 617
651 /* LCD backlight controller */
652 gpio_request_one(235, GPIOF_OUT_INIT_LOW, NULL); /* RESET */
653 lcd_backlight_set_brightness(0);
654 618
655#ifdef CONFIG_CACHE_L2X0 619#ifdef CONFIG_CACHE_L2X0
656 /* Shared attribute override enable, 64K*8way */ 620 /* Shared attribute override enable, 64K*8way */
657 l2x0_init(IOMEM(0xf0100000), 0x00460000, 0xc2000fff); 621 l2x0_init(IOMEM(0xf0100000), 0x00460000, 0xc2000fff);
658#endif 622#endif
659 sh73a0_add_standard_devices(); 623 sh73a0_add_standard_devices();
624
625 i2c_register_board_info(1, &backlight_board_info, 1);
626
660 platform_add_devices(ag5evm_devices, ARRAY_SIZE(ag5evm_devices)); 627 platform_add_devices(ag5evm_devices, ARRAY_SIZE(ag5evm_devices));
661} 628}
662 629
diff --git a/arch/arm/mach-shmobile/board-ape6evm.c b/arch/arm/mach-shmobile/board-ape6evm.c
index af6dd39d3758..38c6c733fabf 100644
--- a/arch/arm/mach-shmobile/board-ape6evm.c
+++ b/arch/arm/mach-shmobile/board-ape6evm.c
@@ -19,8 +19,14 @@
19 */ 19 */
20 20
21#include <linux/gpio.h> 21#include <linux/gpio.h>
22#include <linux/gpio_keys.h>
23#include <linux/input.h>
22#include <linux/interrupt.h> 24#include <linux/interrupt.h>
23#include <linux/kernel.h> 25#include <linux/kernel.h>
26#include <linux/mfd/tmio.h>
27#include <linux/mmc/host.h>
28#include <linux/mmc/sh_mmcif.h>
29#include <linux/mmc/sh_mobile_sdhi.h>
24#include <linux/pinctrl/machine.h> 30#include <linux/pinctrl/machine.h>
25#include <linux/platform_device.h> 31#include <linux/platform_device.h>
26#include <linux/regulator/fixed.h> 32#include <linux/regulator/fixed.h>
@@ -33,6 +39,58 @@
33#include <asm/mach-types.h> 39#include <asm/mach-types.h>
34#include <asm/mach/arch.h> 40#include <asm/mach/arch.h>
35 41
42/* LEDS */
43static struct gpio_led ape6evm_leds[] = {
44 {
45 .name = "gnss-en",
46 .gpio = 28,
47 .default_state = LEDS_GPIO_DEFSTATE_OFF,
48 }, {
49 .name = "nfc-nrst",
50 .gpio = 126,
51 .default_state = LEDS_GPIO_DEFSTATE_OFF,
52 }, {
53 .name = "gnss-nrst",
54 .gpio = 132,
55 .default_state = LEDS_GPIO_DEFSTATE_OFF,
56 }, {
57 .name = "bt-wakeup",
58 .gpio = 232,
59 .default_state = LEDS_GPIO_DEFSTATE_OFF,
60 }, {
61 .name = "strobe",
62 .gpio = 250,
63 .default_state = LEDS_GPIO_DEFSTATE_OFF,
64 }, {
65 .name = "bbresetout",
66 .gpio = 288,
67 .default_state = LEDS_GPIO_DEFSTATE_OFF,
68 },
69};
70
71static __initdata struct gpio_led_platform_data ape6evm_leds_pdata = {
72 .leds = ape6evm_leds,
73 .num_leds = ARRAY_SIZE(ape6evm_leds),
74};
75
76/* GPIO KEY */
77#define GPIO_KEY(c, g, d, ...) \
78 { .code = c, .gpio = g, .desc = d, .active_low = 1 }
79
80static struct gpio_keys_button gpio_buttons[] = {
81 GPIO_KEY(KEY_0, 324, "S16"),
82 GPIO_KEY(KEY_MENU, 325, "S17"),
83 GPIO_KEY(KEY_HOME, 326, "S18"),
84 GPIO_KEY(KEY_BACK, 327, "S19"),
85 GPIO_KEY(KEY_VOLUMEUP, 328, "S20"),
86 GPIO_KEY(KEY_VOLUMEDOWN, 329, "S21"),
87};
88
89static struct __initdata gpio_keys_platform_data ape6evm_keys_pdata = {
90 .buttons = gpio_buttons,
91 .nbuttons = ARRAY_SIZE(gpio_buttons),
92};
93
36/* Dummy supplies, where voltage doesn't matter */ 94/* Dummy supplies, where voltage doesn't matter */
37static struct regulator_consumer_supply dummy_supplies[] = { 95static struct regulator_consumer_supply dummy_supplies[] = {
38 REGULATOR_SUPPLY("vddvario", "smsc911x"), 96 REGULATOR_SUPPLY("vddvario", "smsc911x"),
@@ -40,7 +98,7 @@ static struct regulator_consumer_supply dummy_supplies[] = {
40}; 98};
41 99
42/* SMSC LAN9220 */ 100/* SMSC LAN9220 */
43static const struct resource lan9220_res[] = { 101static const struct resource lan9220_res[] __initconst = {
44 DEFINE_RES_MEM(0x08000000, 0x1000), 102 DEFINE_RES_MEM(0x08000000, 0x1000),
45 { 103 {
46 .start = irq_pin(40), /* IRQ40 */ 104 .start = irq_pin(40), /* IRQ40 */
@@ -48,19 +106,83 @@ static const struct resource lan9220_res[] = {
48 }, 106 },
49}; 107};
50 108
51static const struct smsc911x_platform_config lan9220_data = { 109static const struct smsc911x_platform_config lan9220_data __initconst = {
52 .flags = SMSC911X_USE_32BIT, 110 .flags = SMSC911X_USE_32BIT,
53 .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, 111 .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
54 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH, 112 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH,
55}; 113};
56 114
57static const struct pinctrl_map ape6evm_pinctrl_map[] = { 115/*
116 * On APE6EVM power is supplied to MMCIF by a tps80032 regulator. For now we
117 * model a VDD supply to MMCIF, using a fixed 3.3V regulator. Also use the
118 * static power supply for SDHI0 and SDHI1, whereas SDHI0's VccQ is also
119 * supplied by the same tps80032 regulator and thus can also be adjusted
120 * dynamically.
121 */
122static struct regulator_consumer_supply fixed3v3_power_consumers[] =
123{
124 REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"),
125 REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"),
126 REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.1"),
127};
128
129/* MMCIF */
130static const struct sh_mmcif_plat_data mmcif0_pdata __initconst = {
131 .caps = MMC_CAP_8_BIT_DATA | MMC_CAP_NONREMOVABLE,
132};
133
134static const struct resource mmcif0_resources[] __initconst = {
135 DEFINE_RES_MEM_NAMED(0xee200000, 0x100, "MMCIF0"),
136 DEFINE_RES_IRQ(gic_spi(169)),
137};
138
139/* SDHI0 */
140static const struct sh_mobile_sdhi_info sdhi0_pdata __initconst = {
141 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_WRPROTECT_DISABLE,
142 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ,
143};
144
145static const struct resource sdhi0_resources[] __initconst = {
146 DEFINE_RES_MEM_NAMED(0xee100000, 0x100, "SDHI0"),
147 DEFINE_RES_IRQ(gic_spi(165)),
148};
149
150/* SDHI1 */
151static const struct sh_mobile_sdhi_info sdhi1_pdata __initconst = {
152 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | TMIO_MMC_WRPROTECT_DISABLE,
153 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
154 MMC_CAP_NEEDS_POLL,
155};
156
157static const struct resource sdhi1_resources[] __initconst = {
158 DEFINE_RES_MEM_NAMED(0xee120000, 0x100, "SDHI1"),
159 DEFINE_RES_IRQ(gic_spi(166)),
160};
161
162static const struct pinctrl_map ape6evm_pinctrl_map[] __initconst = {
58 /* SCIFA0 console */ 163 /* SCIFA0 console */
59 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a73a4", 164 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a73a4",
60 "scifa0_data", "scifa0"), 165 "scifa0_data", "scifa0"),
61 /* SMSC */ 166 /* SMSC */
62 PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a73a4", 167 PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a73a4",
63 "irqc_irq40", "irqc"), 168 "irqc_irq40", "irqc"),
169 /* MMCIF0 */
170 PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-r8a73a4",
171 "mmc0_data8", "mmc0"),
172 PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.0", "pfc-r8a73a4",
173 "mmc0_ctrl", "mmc0"),
174 /* SDHI0: uSD: no WP */
175 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a73a4",
176 "sdhi0_data4", "sdhi0"),
177 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a73a4",
178 "sdhi0_ctrl", "sdhi0"),
179 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a73a4",
180 "sdhi0_cd", "sdhi0"),
181 /* SDHI1 */
182 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a73a4",
183 "sdhi1_data4", "sdhi1"),
184 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a73a4",
185 "sdhi1_ctrl", "sdhi1"),
64}; 186};
65 187
66static void __init ape6evm_add_standard_devices(void) 188static void __init ape6evm_add_standard_devices(void)
@@ -93,6 +215,23 @@ static void __init ape6evm_add_standard_devices(void)
93 platform_device_register_resndata(&platform_bus, "smsc911x", -1, 215 platform_device_register_resndata(&platform_bus, "smsc911x", -1,
94 lan9220_res, ARRAY_SIZE(lan9220_res), 216 lan9220_res, ARRAY_SIZE(lan9220_res),
95 &lan9220_data, sizeof(lan9220_data)); 217 &lan9220_data, sizeof(lan9220_data));
218 regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers,
219 ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
220 platform_device_register_resndata(&platform_bus, "sh_mmcif", 0,
221 mmcif0_resources, ARRAY_SIZE(mmcif0_resources),
222 &mmcif0_pdata, sizeof(mmcif0_pdata));
223 platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 0,
224 sdhi0_resources, ARRAY_SIZE(sdhi0_resources),
225 &sdhi0_pdata, sizeof(sdhi0_pdata));
226 platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 1,
227 sdhi1_resources, ARRAY_SIZE(sdhi1_resources),
228 &sdhi1_pdata, sizeof(sdhi1_pdata));
229 platform_device_register_data(&platform_bus, "gpio-keys", -1,
230 &ape6evm_keys_pdata,
231 sizeof(ape6evm_keys_pdata));
232 platform_device_register_data(&platform_bus, "leds-gpio", -1,
233 &ape6evm_leds_pdata,
234 sizeof(ape6evm_leds_pdata));
96} 235}
97 236
98static const char *ape6evm_boards_compat_dt[] __initdata = { 237static const char *ape6evm_boards_compat_dt[] __initdata = {
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c
index 4e3670a28a7c..6b4b77dd2c29 100644
--- a/arch/arm/mach-shmobile/board-armadillo800eva.c
+++ b/arch/arm/mach-shmobile/board-armadillo800eva.c
@@ -31,6 +31,8 @@
31#include <linux/gpio_keys.h> 31#include <linux/gpio_keys.h>
32#include <linux/regulator/driver.h> 32#include <linux/regulator/driver.h>
33#include <linux/pinctrl/machine.h> 33#include <linux/pinctrl/machine.h>
34#include <linux/platform_data/pwm-renesas-tpu.h>
35#include <linux/pwm_backlight.h>
34#include <linux/regulator/fixed.h> 36#include <linux/regulator/fixed.h>
35#include <linux/regulator/gpio-regulator.h> 37#include <linux/regulator/gpio-regulator.h>
36#include <linux/regulator/machine.h> 38#include <linux/regulator/machine.h>
@@ -386,7 +388,50 @@ static struct platform_device sh_eth_device = {
386 .num_resources = ARRAY_SIZE(sh_eth_resources), 388 .num_resources = ARRAY_SIZE(sh_eth_resources),
387}; 389};
388 390
389/* LCDC */ 391/* PWM */
392static struct resource pwm_resources[] = {
393 [0] = {
394 .start = 0xe6600000,
395 .end = 0xe66000ff,
396 .flags = IORESOURCE_MEM,
397 },
398};
399
400static struct tpu_pwm_platform_data pwm_device_data = {
401 .channels[2] = {
402 .polarity = PWM_POLARITY_INVERSED,
403 }
404};
405
406static struct platform_device pwm_device = {
407 .name = "renesas-tpu-pwm",
408 .id = -1,
409 .dev = {
410 .platform_data = &pwm_device_data,
411 },
412 .num_resources = ARRAY_SIZE(pwm_resources),
413 .resource = pwm_resources,
414};
415
416static struct pwm_lookup pwm_lookup[] = {
417 PWM_LOOKUP("renesas-tpu-pwm", 2, "pwm-backlight.0", NULL),
418};
419
420/* LCDC and backlight */
421static struct platform_pwm_backlight_data pwm_backlight_data = {
422 .lth_brightness = 50,
423 .max_brightness = 255,
424 .dft_brightness = 255,
425 .pwm_period_ns = 33333, /* 30kHz */
426};
427
428static struct platform_device pwm_backlight_device = {
429 .name = "pwm-backlight",
430 .dev = {
431 .platform_data = &pwm_backlight_data,
432 },
433};
434
390static struct fb_videomode lcdc0_mode = { 435static struct fb_videomode lcdc0_mode = {
391 .name = "AMPIER/AM-800480", 436 .name = "AMPIER/AM-800480",
392 .xres = 800, 437 .xres = 800,
@@ -778,6 +823,8 @@ static struct sh_mmcif_plat_data sh_mmcif_plat = {
778 .caps = MMC_CAP_4_BIT_DATA | 823 .caps = MMC_CAP_4_BIT_DATA |
779 MMC_CAP_8_BIT_DATA | 824 MMC_CAP_8_BIT_DATA |
780 MMC_CAP_NONREMOVABLE, 825 MMC_CAP_NONREMOVABLE,
826 .slave_id_tx = SHDMA_SLAVE_MMCIF_TX,
827 .slave_id_rx = SHDMA_SLAVE_MMCIF_RX,
781}; 828};
782 829
783static struct resource sh_mmcif_resources[] = { 830static struct resource sh_mmcif_resources[] = {
@@ -1020,6 +1067,8 @@ static struct i2c_board_info i2c2_devices[] = {
1020 */ 1067 */
1021static struct platform_device *eva_devices[] __initdata = { 1068static struct platform_device *eva_devices[] __initdata = {
1022 &lcdc0_device, 1069 &lcdc0_device,
1070 &pwm_device,
1071 &pwm_backlight_device,
1023 &gpio_keys_device, 1072 &gpio_keys_device,
1024 &sh_eth_device, 1073 &sh_eth_device,
1025 &vcc_sdhi0, 1074 &vcc_sdhi0,
@@ -1091,6 +1140,9 @@ static const struct pinctrl_map eva_pinctrl_map[] = {
1091 /* ST1232 */ 1140 /* ST1232 */
1092 PIN_MAP_MUX_GROUP_DEFAULT("0-0055", "pfc-r8a7740", 1141 PIN_MAP_MUX_GROUP_DEFAULT("0-0055", "pfc-r8a7740",
1093 "intc_irq10", "intc"), 1142 "intc_irq10", "intc"),
1143 /* TPU0 */
1144 PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm", "pfc-r8a7740",
1145 "tpu0_to2_1", "tpu0"),
1094 /* USBHS */ 1146 /* USBHS */
1095 PIN_MAP_MUX_GROUP_DEFAULT("renesas_usbhs", "pfc-r8a7740", 1147 PIN_MAP_MUX_GROUP_DEFAULT("renesas_usbhs", "pfc-r8a7740",
1096 "intc_irq7_1", "intc"), 1148 "intc_irq7_1", "intc"),
@@ -1144,13 +1196,13 @@ static void __init eva_init(void)
1144 ARRAY_SIZE(fixed3v3_power_consumers), 3300000); 1196 ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
1145 1197
1146 pinctrl_register_mappings(eva_pinctrl_map, ARRAY_SIZE(eva_pinctrl_map)); 1198 pinctrl_register_mappings(eva_pinctrl_map, ARRAY_SIZE(eva_pinctrl_map));
1199 pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
1147 1200
1148 r8a7740_pinmux_init(); 1201 r8a7740_pinmux_init();
1149 r8a7740_meram_workaround(); 1202 r8a7740_meram_workaround();
1150 1203
1151 /* LCDC0 */ 1204 /* LCDC0 */
1152 gpio_request_one(61, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */ 1205 gpio_request_one(61, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */
1153 gpio_request_one(202, GPIOF_OUT_INIT_LOW, NULL); /* LCD0_LED_CONT */
1154 1206
1155 /* GETHER */ 1207 /* GETHER */
1156 gpio_request_one(18, GPIOF_OUT_INIT_HIGH, NULL); /* PHY_RST */ 1208 gpio_request_one(18, GPIOF_OUT_INIT_HIGH, NULL); /* PHY_RST */
diff --git a/arch/arm/mach-shmobile/board-kota2.c b/arch/arm/mach-shmobile/board-kota2.c
index ef5ca0ef0cb5..6af20d909bdb 100644
--- a/arch/arm/mach-shmobile/board-kota2.c
+++ b/arch/arm/mach-shmobile/board-kota2.c
@@ -26,6 +26,7 @@
26#include <linux/irq.h> 26#include <linux/irq.h>
27#include <linux/pinctrl/machine.h> 27#include <linux/pinctrl/machine.h>
28#include <linux/pinctrl/pinconf-generic.h> 28#include <linux/pinctrl/pinconf-generic.h>
29#include <linux/platform_data/pwm-renesas-tpu.h>
29#include <linux/platform_device.h> 30#include <linux/platform_device.h>
30#include <linux/delay.h> 31#include <linux/delay.h>
31#include <linux/io.h> 32#include <linux/io.h>
@@ -37,8 +38,8 @@
37#include <linux/input/sh_keysc.h> 38#include <linux/input/sh_keysc.h>
38#include <linux/gpio_keys.h> 39#include <linux/gpio_keys.h>
39#include <linux/leds.h> 40#include <linux/leds.h>
41#include <linux/leds_pwm.h>
40#include <linux/irqchip/arm-gic.h> 42#include <linux/irqchip/arm-gic.h>
41#include <linux/platform_data/leds-renesas-tpu.h>
42#include <linux/mmc/host.h> 43#include <linux/mmc/host.h>
43#include <linux/mmc/sh_mmcif.h> 44#include <linux/mmc/sh_mmcif.h>
44#include <linux/mfd/tmio.h> 45#include <linux/mfd/tmio.h>
@@ -186,116 +187,100 @@ static struct platform_device gpio_leds_device = {
186}; 187};
187 188
188/* TPU LED */ 189/* TPU LED */
189static struct led_renesas_tpu_config led_renesas_tpu12_pdata = { 190static struct resource tpu1_pwm_resources[] = {
190 .name = "V2513",
191 .pin_gpio_fn = GPIO_FN_TPU1TO2,
192 .pin_gpio = 153,
193 .channel_offset = 0x90,
194 .timer_bit = 2,
195 .max_brightness = 1000,
196};
197
198static struct resource tpu12_resources[] = {
199 [0] = { 191 [0] = {
200 .name = "TPU12", 192 .start = 0xe6610000,
201 .start = 0xe6610090, 193 .end = 0xe66100ff,
202 .end = 0xe66100b5,
203 .flags = IORESOURCE_MEM, 194 .flags = IORESOURCE_MEM,
204 }, 195 },
205}; 196};
206 197
207static struct platform_device leds_tpu12_device = { 198static struct platform_device tpu1_pwm_device = {
208 .name = "leds-renesas-tpu", 199 .name = "renesas-tpu-pwm",
209 .id = 12, 200 .id = 1,
210 .dev = { 201 .num_resources = ARRAY_SIZE(tpu1_pwm_resources),
211 .platform_data = &led_renesas_tpu12_pdata, 202 .resource = tpu1_pwm_resources,
212 },
213 .num_resources = ARRAY_SIZE(tpu12_resources),
214 .resource = tpu12_resources,
215}; 203};
216 204
217static struct led_renesas_tpu_config led_renesas_tpu41_pdata = { 205static struct resource tpu2_pwm_resources[] = {
218 .name = "V2514",
219 .pin_gpio_fn = GPIO_FN_TPU4TO1,
220 .pin_gpio = 199,
221 .channel_offset = 0x50,
222 .timer_bit = 1,
223 .max_brightness = 1000,
224};
225
226static struct resource tpu41_resources[] = {
227 [0] = { 206 [0] = {
228 .name = "TPU41", 207 .start = 0xe6620000,
229 .start = 0xe6640050, 208 .end = 0xe66200ff,
230 .end = 0xe6640075,
231 .flags = IORESOURCE_MEM, 209 .flags = IORESOURCE_MEM,
232 }, 210 },
233}; 211};
234 212
235static struct platform_device leds_tpu41_device = { 213static struct platform_device tpu2_pwm_device = {
236 .name = "leds-renesas-tpu", 214 .name = "renesas-tpu-pwm",
237 .id = 41, 215 .id = 2,
238 .dev = { 216 .num_resources = ARRAY_SIZE(tpu2_pwm_resources),
239 .platform_data = &led_renesas_tpu41_pdata, 217 .resource = tpu2_pwm_resources,
218};
219
220static struct resource tpu3_pwm_resources[] = {
221 [0] = {
222 .start = 0xe6630000,
223 .end = 0xe66300ff,
224 .flags = IORESOURCE_MEM,
240 }, 225 },
241 .num_resources = ARRAY_SIZE(tpu41_resources),
242 .resource = tpu41_resources,
243}; 226};
244 227
245static struct led_renesas_tpu_config led_renesas_tpu21_pdata = { 228static struct platform_device tpu3_pwm_device = {
246 .name = "V2515", 229 .name = "renesas-tpu-pwm",
247 .pin_gpio_fn = GPIO_FN_TPU2TO1, 230 .id = 3,
248 .pin_gpio = 197, 231 .num_resources = ARRAY_SIZE(tpu3_pwm_resources),
249 .channel_offset = 0x50, 232 .resource = tpu3_pwm_resources,
250 .timer_bit = 1,
251 .max_brightness = 1000,
252}; 233};
253 234
254static struct resource tpu21_resources[] = { 235static struct resource tpu4_pwm_resources[] = {
255 [0] = { 236 [0] = {
256 .name = "TPU21", 237 .start = 0xe6640000,
257 .start = 0xe6620050, 238 .end = 0xe66400ff,
258 .end = 0xe6620075,
259 .flags = IORESOURCE_MEM, 239 .flags = IORESOURCE_MEM,
260 }, 240 },
261}; 241};
262 242
263static struct platform_device leds_tpu21_device = { 243static struct platform_device tpu4_pwm_device = {
264 .name = "leds-renesas-tpu", 244 .name = "renesas-tpu-pwm",
265 .id = 21, 245 .id = 4,
266 .dev = { 246 .num_resources = ARRAY_SIZE(tpu4_pwm_resources),
267 .platform_data = &led_renesas_tpu21_pdata, 247 .resource = tpu4_pwm_resources,
248};
249
250static struct pwm_lookup pwm_lookup[] = {
251 PWM_LOOKUP("renesas-tpu-pwm.1", 2, "leds-pwm.0", "V2513"),
252 PWM_LOOKUP("renesas-tpu-pwm.2", 1, "leds-pwm.0", "V2515"),
253 PWM_LOOKUP("renesas-tpu-pwm.3", 0, "leds-pwm.0", "KEYLED"),
254 PWM_LOOKUP("renesas-tpu-pwm.4", 1, "leds-pwm.0", "V2514"),
255};
256
257static struct led_pwm tpu_pwm_leds[] = {
258 {
259 .name = "V2513",
260 .max_brightness = 1000,
261 }, {
262 .name = "V2515",
263 .max_brightness = 1000,
264 }, {
265 .name = "KEYLED",
266 .max_brightness = 1000,
267 }, {
268 .name = "V2514",
269 .max_brightness = 1000,
268 }, 270 },
269 .num_resources = ARRAY_SIZE(tpu21_resources),
270 .resource = tpu21_resources,
271}; 271};
272 272
273static struct led_renesas_tpu_config led_renesas_tpu30_pdata = { 273static struct led_pwm_platform_data leds_pwm_pdata = {
274 .name = "KEYLED", 274 .num_leds = ARRAY_SIZE(tpu_pwm_leds),
275 .pin_gpio_fn = GPIO_FN_TPU3TO0, 275 .leds = tpu_pwm_leds,
276 .pin_gpio = 163,
277 .channel_offset = 0x10,
278 .timer_bit = 0,
279 .max_brightness = 1000,
280}; 276};
281 277
282static struct resource tpu30_resources[] = { 278static struct platform_device leds_pwm_device = {
283 [0] = { 279 .name = "leds-pwm",
284 .name = "TPU30", 280 .id = 0,
285 .start = 0xe6630010,
286 .end = 0xe6630035,
287 .flags = IORESOURCE_MEM,
288 },
289};
290
291static struct platform_device leds_tpu30_device = {
292 .name = "leds-renesas-tpu",
293 .id = 30,
294 .dev = { 281 .dev = {
295 .platform_data = &led_renesas_tpu30_pdata, 282 .platform_data = &leds_pwm_pdata,
296 }, 283 },
297 .num_resources = ARRAY_SIZE(tpu30_resources),
298 .resource = tpu30_resources,
299}; 284};
300 285
301/* Fixed 1.8V regulator to be used by MMCIF */ 286/* Fixed 1.8V regulator to be used by MMCIF */
@@ -426,10 +411,11 @@ static struct platform_device *kota2_devices[] __initdata = {
426 &keysc_device, 411 &keysc_device,
427 &gpio_keys_device, 412 &gpio_keys_device,
428 &gpio_leds_device, 413 &gpio_leds_device,
429 &leds_tpu12_device, 414 &tpu1_pwm_device,
430 &leds_tpu41_device, 415 &tpu2_pwm_device,
431 &leds_tpu21_device, 416 &tpu3_pwm_device,
432 &leds_tpu30_device, 417 &tpu4_pwm_device,
418 &leds_pwm_device,
433 &mmcif_device, 419 &mmcif_device,
434 &sdhi0_device, 420 &sdhi0_device,
435 &sdhi1_device, 421 &sdhi1_device,
@@ -512,6 +498,15 @@ static const struct pinctrl_map kota2_pinctrl_map[] = {
512 "bsc_cs5_a", "bsc"), 498 "bsc_cs5_a", "bsc"),
513 PIN_MAP_MUX_GROUP_DEFAULT("smsc911x.0", "pfc-sh73a0", 499 PIN_MAP_MUX_GROUP_DEFAULT("smsc911x.0", "pfc-sh73a0",
514 "bsc_we0", "bsc"), 500 "bsc_we0", "bsc"),
501 /* TPU */
502 PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.1", "pfc-sh73a0",
503 "tpu1_to2", "tpu1"),
504 PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.2", "pfc-sh73a0",
505 "tpu2_to1", "tpu2"),
506 PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.3", "pfc-sh73a0",
507 "tpu3_to0", "tpu3"),
508 PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.4", "pfc-sh73a0",
509 "tpu4_to1", "tpu4"),
515}; 510};
516 511
517static void __init kota2_init(void) 512static void __init kota2_init(void)
@@ -524,6 +519,8 @@ static void __init kota2_init(void)
524 519
525 pinctrl_register_mappings(kota2_pinctrl_map, 520 pinctrl_register_mappings(kota2_pinctrl_map,
526 ARRAY_SIZE(kota2_pinctrl_map)); 521 ARRAY_SIZE(kota2_pinctrl_map));
522 pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
523
527 sh73a0_pinmux_init(); 524 sh73a0_pinmux_init();
528 525
529 /* SMSC911X */ 526 /* SMSC911X */
diff --git a/arch/arm/mach-shmobile/board-lager.c b/arch/arm/mach-shmobile/board-lager.c
index f89f16650731..4872939cdba2 100644
--- a/arch/arm/mach-shmobile/board-lager.c
+++ b/arch/arm/mach-shmobile/board-lager.c
@@ -24,10 +24,16 @@
24#include <linux/interrupt.h> 24#include <linux/interrupt.h>
25#include <linux/kernel.h> 25#include <linux/kernel.h>
26#include <linux/leds.h> 26#include <linux/leds.h>
27#include <linux/mmc/host.h>
28#include <linux/mmc/sh_mmcif.h>
27#include <linux/pinctrl/machine.h> 29#include <linux/pinctrl/machine.h>
28#include <linux/platform_data/gpio-rcar.h> 30#include <linux/platform_data/gpio-rcar.h>
29#include <linux/platform_device.h> 31#include <linux/platform_device.h>
32#include <linux/regulator/fixed.h>
33#include <linux/regulator/machine.h>
34#include <linux/sh_eth.h>
30#include <mach/common.h> 35#include <mach/common.h>
36#include <mach/irqs.h>
31#include <mach/r8a7790.h> 37#include <mach/r8a7790.h>
32#include <asm/mach-types.h> 38#include <asm/mach-types.h>
33#include <asm/mach/arch.h> 39#include <asm/mach/arch.h>
@@ -70,6 +76,36 @@ static __initdata struct gpio_keys_platform_data lager_keys_pdata = {
70 .nbuttons = ARRAY_SIZE(gpio_buttons), 76 .nbuttons = ARRAY_SIZE(gpio_buttons),
71}; 77};
72 78
79/* Fixed 3.3V regulator to be used by MMCIF */
80static struct regulator_consumer_supply fixed3v3_power_consumers[] =
81{
82 REGULATOR_SUPPLY("vmmc", "sh_mmcif.1"),
83};
84
85/* MMCIF */
86static struct sh_mmcif_plat_data mmcif1_pdata __initdata = {
87 .caps = MMC_CAP_8_BIT_DATA | MMC_CAP_NONREMOVABLE,
88};
89
90static struct resource mmcif1_resources[] __initdata = {
91 DEFINE_RES_MEM_NAMED(0xee220000, 0x80, "MMCIF1"),
92 DEFINE_RES_IRQ(gic_spi(170)),
93};
94
95/* Ether */
96static struct sh_eth_plat_data ether_pdata __initdata = {
97 .phy = 0x1,
98 .edmac_endian = EDMAC_LITTLE_ENDIAN,
99 .register_type = SH_ETH_REG_FAST_RCAR,
100 .phy_interface = PHY_INTERFACE_MODE_RMII,
101 .ether_link_active_low = 1,
102};
103
104static struct resource ether_resources[] __initdata = {
105 DEFINE_RES_MEM(0xee700000, 0x400),
106 DEFINE_RES_IRQ(gic_spi(162)),
107};
108
73static const struct pinctrl_map lager_pinctrl_map[] = { 109static const struct pinctrl_map lager_pinctrl_map[] = {
74 /* SCIF0 (CN19: DEBUG SERIAL0) */ 110 /* SCIF0 (CN19: DEBUG SERIAL0) */
75 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7790", 111 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7790",
@@ -77,6 +113,20 @@ static const struct pinctrl_map lager_pinctrl_map[] = {
77 /* SCIF1 (CN20: DEBUG SERIAL1) */ 113 /* SCIF1 (CN20: DEBUG SERIAL1) */
78 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7790", 114 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7790",
79 "scif1_data", "scif1"), 115 "scif1_data", "scif1"),
116 /* MMCIF1 */
117 PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.1", "pfc-r8a7790",
118 "mmc1_data8", "mmc1"),
119 PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.1", "pfc-r8a7790",
120 "mmc1_ctrl", "mmc1"),
121 /* Ether */
122 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-ether", "pfc-r8a7790",
123 "eth_link", "eth"),
124 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-ether", "pfc-r8a7790",
125 "eth_mdio", "eth"),
126 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-ether", "pfc-r8a7790",
127 "eth_rmii", "eth"),
128 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-ether", "pfc-r8a7790",
129 "intc_irq0", "intc"),
80}; 130};
81 131
82static void __init lager_add_standard_devices(void) 132static void __init lager_add_standard_devices(void)
@@ -94,6 +144,16 @@ static void __init lager_add_standard_devices(void)
94 platform_device_register_data(&platform_bus, "gpio-keys", -1, 144 platform_device_register_data(&platform_bus, "gpio-keys", -1,
95 &lager_keys_pdata, 145 &lager_keys_pdata,
96 sizeof(lager_keys_pdata)); 146 sizeof(lager_keys_pdata));
147 regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
148 ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
149 platform_device_register_resndata(&platform_bus, "sh_mmcif", 1,
150 mmcif1_resources, ARRAY_SIZE(mmcif1_resources),
151 &mmcif1_pdata, sizeof(mmcif1_pdata));
152
153 platform_device_register_resndata(&platform_bus, "r8a7790-ether", -1,
154 ether_resources,
155 ARRAY_SIZE(ether_resources),
156 &ether_pdata, sizeof(ether_pdata));
97} 157}
98 158
99static const char *lager_boards_compat_dt[] __initdata = { 159static const char *lager_boards_compat_dt[] __initdata = {
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c
index 85f51a849a50..af06753eb809 100644
--- a/arch/arm/mach-shmobile/board-mackerel.c
+++ b/arch/arm/mach-shmobile/board-mackerel.c
@@ -41,6 +41,7 @@
41#include <linux/mtd/physmap.h> 41#include <linux/mtd/physmap.h>
42#include <linux/mtd/sh_flctl.h> 42#include <linux/mtd/sh_flctl.h>
43#include <linux/pinctrl/machine.h> 43#include <linux/pinctrl/machine.h>
44#include <linux/platform_data/gpio_backlight.h>
44#include <linux/pm_clock.h> 45#include <linux/pm_clock.h>
45#include <linux/regulator/fixed.h> 46#include <linux/regulator/fixed.h>
46#include <linux/regulator/machine.h> 47#include <linux/regulator/machine.h>
@@ -49,7 +50,6 @@
49#include <linux/tca6416_keypad.h> 50#include <linux/tca6416_keypad.h>
50#include <linux/usb/renesas_usbhs.h> 51#include <linux/usb/renesas_usbhs.h>
51#include <linux/dma-mapping.h> 52#include <linux/dma-mapping.h>
52
53#include <video/sh_mobile_hdmi.h> 53#include <video/sh_mobile_hdmi.h>
54#include <video/sh_mobile_lcdc.h> 54#include <video/sh_mobile_lcdc.h>
55#include <media/sh_mobile_ceu.h> 55#include <media/sh_mobile_ceu.h>
@@ -346,7 +346,7 @@ static struct platform_device meram_device = {
346 }, 346 },
347}; 347};
348 348
349/* LCDC */ 349/* LCDC and backlight */
350static struct fb_videomode mackerel_lcdc_modes[] = { 350static struct fb_videomode mackerel_lcdc_modes[] = {
351 { 351 {
352 .name = "WVGA Panel", 352 .name = "WVGA Panel",
@@ -362,13 +362,6 @@ static struct fb_videomode mackerel_lcdc_modes[] = {
362 }, 362 },
363}; 363};
364 364
365static int mackerel_set_brightness(int brightness)
366{
367 gpio_set_value(31, brightness);
368
369 return 0;
370}
371
372static const struct sh_mobile_meram_cfg lcd_meram_cfg = { 365static const struct sh_mobile_meram_cfg lcd_meram_cfg = {
373 .icb[0] = { 366 .icb[0] = {
374 .meram_size = 0x40, 367 .meram_size = 0x40,
@@ -393,11 +386,6 @@ static struct sh_mobile_lcdc_info lcdc_info = {
393 .width = 152, 386 .width = 152,
394 .height = 91, 387 .height = 91,
395 }, 388 },
396 .bl_info = {
397 .name = "sh_mobile_lcdc_bl",
398 .max_brightness = 1,
399 .set_brightness = mackerel_set_brightness,
400 },
401 .meram_cfg = &lcd_meram_cfg, 389 .meram_cfg = &lcd_meram_cfg,
402 } 390 }
403}; 391};
@@ -425,6 +413,20 @@ static struct platform_device lcdc_device = {
425 }, 413 },
426}; 414};
427 415
416static struct gpio_backlight_platform_data gpio_backlight_data = {
417 .fbdev = &lcdc_device.dev,
418 .gpio = 31,
419 .def_value = 1,
420 .name = "backlight",
421};
422
423static struct platform_device gpio_backlight_device = {
424 .name = "gpio-backlight",
425 .dev = {
426 .platform_data = &gpio_backlight_data,
427 },
428};
429
428/* HDMI */ 430/* HDMI */
429static struct sh_mobile_hdmi_info hdmi_info = { 431static struct sh_mobile_hdmi_info hdmi_info = {
430 .flags = HDMI_SND_SRC_SPDIF, 432 .flags = HDMI_SND_SRC_SPDIF,
@@ -1231,6 +1233,7 @@ static struct platform_device *mackerel_devices[] __initdata = {
1231 &nor_flash_device, 1233 &nor_flash_device,
1232 &smc911x_device, 1234 &smc911x_device,
1233 &lcdc_device, 1235 &lcdc_device,
1236 &gpio_backlight_device,
1234 &usbhs0_device, 1237 &usbhs0_device,
1235 &usbhs1_device, 1238 &usbhs1_device,
1236 &leds_device, 1239 &leds_device,
@@ -1441,9 +1444,6 @@ static void __init mackerel_init(void)
1441 ARRAY_SIZE(mackerel_pinctrl_map)); 1444 ARRAY_SIZE(mackerel_pinctrl_map));
1442 sh7372_pinmux_init(); 1445 sh7372_pinmux_init();
1443 1446
1444 /* backlight, off by default */
1445 gpio_request_one(31, GPIOF_OUT_INIT_LOW, NULL);
1446
1447 gpio_request_one(151, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */ 1447 gpio_request_one(151, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */
1448 1448
1449 /* USBHS0 */ 1449 /* USBHS0 */
diff --git a/arch/arm/mach-shmobile/clock-sh73a0.c b/arch/arm/mach-shmobile/clock-sh73a0.c
index d9fd0336b910..1942eaef5181 100644
--- a/arch/arm/mach-shmobile/clock-sh73a0.c
+++ b/arch/arm/mach-shmobile/clock-sh73a0.c
@@ -555,7 +555,7 @@ enum { MSTP001,
555 MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, 555 MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
556 MSTP331, MSTP329, MSTP328, MSTP325, MSTP323, MSTP322, 556 MSTP331, MSTP329, MSTP328, MSTP325, MSTP323, MSTP322,
557 MSTP314, MSTP313, MSTP312, MSTP311, 557 MSTP314, MSTP313, MSTP312, MSTP311,
558 MSTP303, MSTP302, MSTP301, MSTP300, 558 MSTP304, MSTP303, MSTP302, MSTP301, MSTP300,
559 MSTP411, MSTP410, MSTP403, 559 MSTP411, MSTP410, MSTP403,
560 MSTP_NR }; 560 MSTP_NR };
561 561
@@ -593,6 +593,7 @@ static struct clk mstp_clks[MSTP_NR] = {
593 [MSTP313] = MSTP(&div6_clks[DIV6_SDHI1], SMSTPCR3, 13, 0), /* SDHI1 */ 593 [MSTP313] = MSTP(&div6_clks[DIV6_SDHI1], SMSTPCR3, 13, 0), /* SDHI1 */
594 [MSTP312] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 12, 0), /* MMCIF0 */ 594 [MSTP312] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 12, 0), /* MMCIF0 */
595 [MSTP311] = MSTP(&div6_clks[DIV6_SDHI2], SMSTPCR3, 11, 0), /* SDHI2 */ 595 [MSTP311] = MSTP(&div6_clks[DIV6_SDHI2], SMSTPCR3, 11, 0), /* SDHI2 */
596 [MSTP304] = MSTP(&main_div2_clk, SMSTPCR3, 4, 0), /* TPU0 */
596 [MSTP303] = MSTP(&main_div2_clk, SMSTPCR3, 3, 0), /* TPU1 */ 597 [MSTP303] = MSTP(&main_div2_clk, SMSTPCR3, 3, 0), /* TPU1 */
597 [MSTP302] = MSTP(&main_div2_clk, SMSTPCR3, 2, 0), /* TPU2 */ 598 [MSTP302] = MSTP(&main_div2_clk, SMSTPCR3, 2, 0), /* TPU2 */
598 [MSTP301] = MSTP(&main_div2_clk, SMSTPCR3, 1, 0), /* TPU3 */ 599 [MSTP301] = MSTP(&main_div2_clk, SMSTPCR3, 1, 0), /* TPU3 */
@@ -669,10 +670,11 @@ static struct clk_lookup lookups[] = {
669 CLKDEV_DEV_ID("e6bd0000.mmcif", &mstp_clks[MSTP312]), /* MMCIF0 */ 670 CLKDEV_DEV_ID("e6bd0000.mmcif", &mstp_clks[MSTP312]), /* MMCIF0 */
670 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP311]), /* SDHI2 */ 671 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP311]), /* SDHI2 */
671 CLKDEV_DEV_ID("ee140000.sdhi", &mstp_clks[MSTP311]), /* SDHI2 */ 672 CLKDEV_DEV_ID("ee140000.sdhi", &mstp_clks[MSTP311]), /* SDHI2 */
672 CLKDEV_DEV_ID("leds-renesas-tpu.12", &mstp_clks[MSTP303]), /* TPU1 */ 673 CLKDEV_DEV_ID("renesas-tpu-pwm.0", &mstp_clks[MSTP304]), /* TPU0 */
673 CLKDEV_DEV_ID("leds-renesas-tpu.21", &mstp_clks[MSTP302]), /* TPU2 */ 674 CLKDEV_DEV_ID("renesas-tpu-pwm.1", &mstp_clks[MSTP303]), /* TPU1 */
674 CLKDEV_DEV_ID("leds-renesas-tpu.30", &mstp_clks[MSTP301]), /* TPU3 */ 675 CLKDEV_DEV_ID("renesas-tpu-pwm.2", &mstp_clks[MSTP302]), /* TPU2 */
675 CLKDEV_DEV_ID("leds-renesas-tpu.41", &mstp_clks[MSTP300]), /* TPU4 */ 676 CLKDEV_DEV_ID("renesas-tpu-pwm.3", &mstp_clks[MSTP301]), /* TPU3 */
677 CLKDEV_DEV_ID("renesas-tpu-pwm.4", &mstp_clks[MSTP300]), /* TPU4 */
676 CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* I2C3 */ 678 CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* I2C3 */
677 CLKDEV_DEV_ID("e6826000.i2c", &mstp_clks[MSTP411]), /* I2C3 */ 679 CLKDEV_DEV_ID("e6826000.i2c", &mstp_clks[MSTP411]), /* I2C3 */
678 CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* I2C4 */ 680 CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* I2C4 */
diff --git a/arch/arm/mach-shmobile/include/mach/sh73a0.h b/arch/arm/mach-shmobile/include/mach/sh73a0.h
index eb7a4320d487..680dc5f1655a 100644
--- a/arch/arm/mach-shmobile/include/mach/sh73a0.h
+++ b/arch/arm/mach-shmobile/include/mach/sh73a0.h
@@ -1,378 +1,7 @@
1#ifndef __ASM_SH73A0_H__ 1#ifndef __ASM_SH73A0_H__
2#define __ASM_SH73A0_H__ 2#define __ASM_SH73A0_H__
3 3
4/* Pin Function Controller: 4#define GPIO_NR 310
5 * GPIO_FN_xx - GPIO used to select pin function and MSEL switch
6 * GPIO_PORTxx - GPIO mapped to real I/O pin on CPU
7 */
8enum {
9 /* Hardware manual Table 25-1 (GPIO) */
10 GPIO_PORT0, GPIO_PORT1, GPIO_PORT2, GPIO_PORT3, GPIO_PORT4,
11 GPIO_PORT5, GPIO_PORT6, GPIO_PORT7, GPIO_PORT8, GPIO_PORT9,
12
13 GPIO_PORT10, GPIO_PORT11, GPIO_PORT12, GPIO_PORT13, GPIO_PORT14,
14 GPIO_PORT15, GPIO_PORT16, GPIO_PORT17, GPIO_PORT18, GPIO_PORT19,
15
16 GPIO_PORT20, GPIO_PORT21, GPIO_PORT22, GPIO_PORT23, GPIO_PORT24,
17 GPIO_PORT25, GPIO_PORT26, GPIO_PORT27, GPIO_PORT28, GPIO_PORT29,
18
19 GPIO_PORT30, GPIO_PORT31, GPIO_PORT32, GPIO_PORT33, GPIO_PORT34,
20 GPIO_PORT35, GPIO_PORT36, GPIO_PORT37, GPIO_PORT38, GPIO_PORT39,
21
22 GPIO_PORT40, GPIO_PORT41, GPIO_PORT42, GPIO_PORT43, GPIO_PORT44,
23 GPIO_PORT45, GPIO_PORT46, GPIO_PORT47, GPIO_PORT48, GPIO_PORT49,
24
25 GPIO_PORT50, GPIO_PORT51, GPIO_PORT52, GPIO_PORT53, GPIO_PORT54,
26 GPIO_PORT55, GPIO_PORT56, GPIO_PORT57, GPIO_PORT58, GPIO_PORT59,
27
28 GPIO_PORT60, GPIO_PORT61, GPIO_PORT62, GPIO_PORT63, GPIO_PORT64,
29 GPIO_PORT65, GPIO_PORT66, GPIO_PORT67, GPIO_PORT68, GPIO_PORT69,
30
31 GPIO_PORT70, GPIO_PORT71, GPIO_PORT72, GPIO_PORT73, GPIO_PORT74,
32 GPIO_PORT75, GPIO_PORT76, GPIO_PORT77, GPIO_PORT78, GPIO_PORT79,
33
34 GPIO_PORT80, GPIO_PORT81, GPIO_PORT82, GPIO_PORT83, GPIO_PORT84,
35 GPIO_PORT85, GPIO_PORT86, GPIO_PORT87, GPIO_PORT88, GPIO_PORT89,
36
37 GPIO_PORT90, GPIO_PORT91, GPIO_PORT92, GPIO_PORT93, GPIO_PORT94,
38 GPIO_PORT95, GPIO_PORT96, GPIO_PORT97, GPIO_PORT98, GPIO_PORT99,
39
40 GPIO_PORT100, GPIO_PORT101, GPIO_PORT102, GPIO_PORT103, GPIO_PORT104,
41 GPIO_PORT105, GPIO_PORT106, GPIO_PORT107, GPIO_PORT108, GPIO_PORT109,
42
43 GPIO_PORT110, GPIO_PORT111, GPIO_PORT112, GPIO_PORT113, GPIO_PORT114,
44 GPIO_PORT115, GPIO_PORT116, GPIO_PORT117, GPIO_PORT118,
45
46 GPIO_PORT128, GPIO_PORT129,
47
48 GPIO_PORT130, GPIO_PORT131, GPIO_PORT132, GPIO_PORT133, GPIO_PORT134,
49 GPIO_PORT135, GPIO_PORT136, GPIO_PORT137, GPIO_PORT138, GPIO_PORT139,
50
51 GPIO_PORT140, GPIO_PORT141, GPIO_PORT142, GPIO_PORT143, GPIO_PORT144,
52 GPIO_PORT145, GPIO_PORT146, GPIO_PORT147, GPIO_PORT148, GPIO_PORT149,
53
54 GPIO_PORT150, GPIO_PORT151, GPIO_PORT152, GPIO_PORT153, GPIO_PORT154,
55 GPIO_PORT155, GPIO_PORT156, GPIO_PORT157, GPIO_PORT158, GPIO_PORT159,
56
57 GPIO_PORT160, GPIO_PORT161, GPIO_PORT162, GPIO_PORT163, GPIO_PORT164,
58
59 GPIO_PORT192, GPIO_PORT193, GPIO_PORT194,
60 GPIO_PORT195, GPIO_PORT196, GPIO_PORT197, GPIO_PORT198, GPIO_PORT199,
61
62 GPIO_PORT200, GPIO_PORT201, GPIO_PORT202, GPIO_PORT203, GPIO_PORT204,
63 GPIO_PORT205, GPIO_PORT206, GPIO_PORT207, GPIO_PORT208, GPIO_PORT209,
64
65 GPIO_PORT210, GPIO_PORT211, GPIO_PORT212, GPIO_PORT213, GPIO_PORT214,
66 GPIO_PORT215, GPIO_PORT216, GPIO_PORT217, GPIO_PORT218, GPIO_PORT219,
67
68 GPIO_PORT220, GPIO_PORT221, GPIO_PORT222, GPIO_PORT223, GPIO_PORT224,
69 GPIO_PORT225, GPIO_PORT226, GPIO_PORT227, GPIO_PORT228, GPIO_PORT229,
70
71 GPIO_PORT230, GPIO_PORT231, GPIO_PORT232, GPIO_PORT233, GPIO_PORT234,
72 GPIO_PORT235, GPIO_PORT236, GPIO_PORT237, GPIO_PORT238, GPIO_PORT239,
73
74 GPIO_PORT240, GPIO_PORT241, GPIO_PORT242, GPIO_PORT243, GPIO_PORT244,
75 GPIO_PORT245, GPIO_PORT246, GPIO_PORT247, GPIO_PORT248, GPIO_PORT249,
76
77 GPIO_PORT250, GPIO_PORT251, GPIO_PORT252, GPIO_PORT253, GPIO_PORT254,
78 GPIO_PORT255, GPIO_PORT256, GPIO_PORT257, GPIO_PORT258, GPIO_PORT259,
79
80 GPIO_PORT260, GPIO_PORT261, GPIO_PORT262, GPIO_PORT263, GPIO_PORT264,
81 GPIO_PORT265, GPIO_PORT266, GPIO_PORT267, GPIO_PORT268, GPIO_PORT269,
82
83 GPIO_PORT270, GPIO_PORT271, GPIO_PORT272, GPIO_PORT273, GPIO_PORT274,
84 GPIO_PORT275, GPIO_PORT276, GPIO_PORT277, GPIO_PORT278, GPIO_PORT279,
85
86 GPIO_PORT280, GPIO_PORT281, GPIO_PORT282,
87
88 GPIO_PORT288, GPIO_PORT289,
89
90 GPIO_PORT290, GPIO_PORT291, GPIO_PORT292, GPIO_PORT293, GPIO_PORT294,
91 GPIO_PORT295, GPIO_PORT296, GPIO_PORT297, GPIO_PORT298, GPIO_PORT299,
92
93 GPIO_PORT300, GPIO_PORT301, GPIO_PORT302, GPIO_PORT303, GPIO_PORT304,
94 GPIO_PORT305, GPIO_PORT306, GPIO_PORT307, GPIO_PORT308, GPIO_PORT309,
95
96 /* Table 25-1 (Function 0-7) */
97 GPIO_FN_GPI0 = 310,
98 GPIO_FN_GPI1,
99 GPIO_FN_GPI2,
100 GPIO_FN_GPI3,
101 GPIO_FN_GPI4,
102 GPIO_FN_GPI5,
103 GPIO_FN_GPI6,
104 GPIO_FN_GPI7,
105 GPIO_FN_GPO7, GPIO_FN_MFG0_OUT2,
106 GPIO_FN_GPO6, GPIO_FN_MFG1_OUT2,
107 GPIO_FN_GPO5,
108 GPIO_FN_PORT16_VIO_CKOR,
109 GPIO_FN_PORT19_VIO_CKO2,
110 GPIO_FN_GPO0,
111 GPIO_FN_GPO1,
112 GPIO_FN_GPO2, GPIO_FN_STATUS0,
113 GPIO_FN_GPO3, GPIO_FN_STATUS1,
114 GPIO_FN_GPO4, GPIO_FN_STATUS2,
115 GPIO_FN_VINT,
116 GPIO_FN_TCKON,
117 GPIO_FN_XDVFS1,
118 GPIO_FN_MFG0_OUT1, GPIO_FN_PORT27_IROUT,
119 GPIO_FN_XDVFS2,
120 GPIO_FN_PORT28_TPU1TO1,
121 GPIO_FN_SIM_RST, GPIO_FN_PORT29_TPU1TO1,
122 GPIO_FN_SIM_CLK, GPIO_FN_PORT30_VIO_CKOR,
123 GPIO_FN_SIM_D, GPIO_FN_PORT31_IROUT,
124 GPIO_FN_XWUP,
125 GPIO_FN_VACK,
126 GPIO_FN_XTAL1L,
127 GPIO_FN_PORT49_IROUT,
128 GPIO_FN_BBIF2_TSYNC2, GPIO_FN_TPU2TO2,
129
130 GPIO_FN_BBIF2_TSCK2, GPIO_FN_TPU2TO3,
131 GPIO_FN_BBIF2_TXD2,
132 GPIO_FN_TPU3TO3,
133 GPIO_FN_TPU3TO2,
134 GPIO_FN_TPU0TO0,
135 GPIO_FN_A0, GPIO_FN_BS_,
136 GPIO_FN_A12, GPIO_FN_TPU4TO2,
137 GPIO_FN_A13, GPIO_FN_TPU0TO1,
138 GPIO_FN_A14,
139 GPIO_FN_A15,
140 GPIO_FN_A16, GPIO_FN_MSIOF0_SS1,
141 GPIO_FN_A17, GPIO_FN_MSIOF0_TSYNC,
142 GPIO_FN_A18, GPIO_FN_MSIOF0_TSCK,
143 GPIO_FN_A19, GPIO_FN_MSIOF0_TXD,
144 GPIO_FN_A20, GPIO_FN_MSIOF0_RSCK,
145 GPIO_FN_A21, GPIO_FN_MSIOF0_RSYNC,
146 GPIO_FN_A22, GPIO_FN_MSIOF0_MCK0,
147 GPIO_FN_A23, GPIO_FN_MSIOF0_MCK1,
148 GPIO_FN_A24, GPIO_FN_MSIOF0_RXD,
149 GPIO_FN_A25, GPIO_FN_MSIOF0_SS2,
150 GPIO_FN_A26,
151 GPIO_FN_FCE1_,
152 GPIO_FN_DACK0,
153 GPIO_FN_FCE0_,
154 GPIO_FN_WAIT_, GPIO_FN_DREQ0,
155 GPIO_FN_FRB,
156 GPIO_FN_CKO,
157 GPIO_FN_NBRSTOUT_,
158 GPIO_FN_NBRST_,
159 GPIO_FN_BBIF2_TXD,
160 GPIO_FN_BBIF2_RXD,
161 GPIO_FN_BBIF2_SYNC,
162 GPIO_FN_BBIF2_SCK,
163 GPIO_FN_MFG3_IN2,
164 GPIO_FN_MFG3_IN1,
165 GPIO_FN_BBIF1_SS2, GPIO_FN_MFG3_OUT1,
166 GPIO_FN_HSI_RX_DATA, GPIO_FN_BBIF1_RXD,
167 GPIO_FN_HSI_TX_WAKE, GPIO_FN_BBIF1_TSCK,
168 GPIO_FN_HSI_TX_DATA, GPIO_FN_BBIF1_TSYNC,
169 GPIO_FN_HSI_TX_READY, GPIO_FN_BBIF1_TXD,
170 GPIO_FN_HSI_RX_READY, GPIO_FN_BBIF1_RSCK,
171 GPIO_FN_HSI_RX_WAKE, GPIO_FN_BBIF1_RSYNC,
172 GPIO_FN_HSI_RX_FLAG, GPIO_FN_BBIF1_SS1, GPIO_FN_BBIF1_FLOW,
173 GPIO_FN_HSI_TX_FLAG,
174 GPIO_FN_VIO_VD, GPIO_FN_VIO2_VD,
175
176 GPIO_FN_VIO_HD,
177 GPIO_FN_VIO2_HD,
178 GPIO_FN_VIO_D0, GPIO_FN_PORT130_MSIOF2_RXD,
179 GPIO_FN_VIO_D1, GPIO_FN_PORT131_MSIOF2_SS1,
180 GPIO_FN_VIO_D2, GPIO_FN_PORT132_MSIOF2_SS2,
181 GPIO_FN_VIO_D3, GPIO_FN_MSIOF2_TSYNC,
182 GPIO_FN_VIO_D4, GPIO_FN_MSIOF2_TXD,
183 GPIO_FN_VIO_D5, GPIO_FN_MSIOF2_TSCK,
184 GPIO_FN_VIO_D6,
185 GPIO_FN_VIO_D7,
186 GPIO_FN_VIO_D8, GPIO_FN_VIO2_D0,
187 GPIO_FN_VIO_D9, GPIO_FN_VIO2_D1,
188 GPIO_FN_VIO_D10, GPIO_FN_TPU0TO2, GPIO_FN_VIO2_D2,
189 GPIO_FN_VIO_D11, GPIO_FN_TPU0TO3, GPIO_FN_VIO2_D3,
190 GPIO_FN_VIO_D12, GPIO_FN_VIO2_D4,
191 GPIO_FN_VIO_D13,
192 GPIO_FN_VIO2_D5,
193 GPIO_FN_VIO_D14, GPIO_FN_VIO2_D6,
194 GPIO_FN_VIO_D15, GPIO_FN_TPU1TO3,
195 GPIO_FN_VIO2_D7,
196 GPIO_FN_VIO_CLK,
197 GPIO_FN_VIO2_CLK,
198 GPIO_FN_VIO_FIELD, GPIO_FN_VIO2_FIELD,
199 GPIO_FN_VIO_CKO,
200 GPIO_FN_A27, GPIO_FN_MFG0_IN1,
201 GPIO_FN_MFG0_IN2,
202 GPIO_FN_TS_SPSYNC3, GPIO_FN_MSIOF2_RSCK,
203 GPIO_FN_TS_SDAT3, GPIO_FN_MSIOF2_RSYNC,
204 GPIO_FN_TPU1TO2, GPIO_FN_TS_SDEN3, GPIO_FN_PORT153_MSIOF2_SS1,
205 GPIO_FN_MSIOF2_MCK0,
206 GPIO_FN_MSIOF2_MCK1,
207 GPIO_FN_PORT156_MSIOF2_SS2,
208 GPIO_FN_PORT157_MSIOF2_RXD,
209 GPIO_FN_DINT_, GPIO_FN_TS_SCK3,
210 GPIO_FN_NMI,
211 GPIO_FN_TPU3TO0,
212 GPIO_FN_BBIF2_TSYNC1,
213 GPIO_FN_BBIF2_TSCK1,
214 GPIO_FN_BBIF2_TXD1,
215 GPIO_FN_MFG2_OUT2,
216 GPIO_FN_TPU2TO1,
217 GPIO_FN_TPU4TO1, GPIO_FN_MFG4_OUT2,
218 GPIO_FN_D16,
219 GPIO_FN_D17,
220 GPIO_FN_D18,
221 GPIO_FN_D19,
222 GPIO_FN_D20,
223 GPIO_FN_D21,
224 GPIO_FN_D22,
225 GPIO_FN_PORT207_MSIOF0L_SS1, GPIO_FN_D23,
226 GPIO_FN_PORT208_MSIOF0L_SS2, GPIO_FN_D24,
227 GPIO_FN_D25,
228 GPIO_FN_DREQ2, GPIO_FN_PORT210_MSIOF0L_SS1, GPIO_FN_D26,
229 GPIO_FN_PORT211_MSIOF0L_SS2, GPIO_FN_D27,
230 GPIO_FN_TS_SPSYNC1, GPIO_FN_MSIOF0L_MCK0, GPIO_FN_D28,
231 GPIO_FN_TS_SDAT1, GPIO_FN_MSIOF0L_MCK1, GPIO_FN_D29,
232 GPIO_FN_TS_SDEN1, GPIO_FN_MSIOF0L_RSCK, GPIO_FN_D30,
233 GPIO_FN_TS_SCK1, GPIO_FN_MSIOF0L_RSYNC, GPIO_FN_D31,
234 GPIO_FN_DACK2,
235 GPIO_FN_MSIOF0L_TSYNC, GPIO_FN_VIO2_FIELD3,
236 GPIO_FN_DACK3,
237 GPIO_FN_PORT218_VIO_CKOR,
238 GPIO_FN_DREQ3, GPIO_FN_MSIOF0L_TSCK, GPIO_FN_VIO2_CLK3, \
239 GPIO_FN_DREQ1,
240 GPIO_FN_PWEN, GPIO_FN_MSIOF0L_RXD, GPIO_FN_VIO2_HD3, \
241 GPIO_FN_DACK1, GPIO_FN_OVCN,
242 GPIO_FN_MSIOF0L_TXD, GPIO_FN_VIO2_VD3,
243
244 GPIO_FN_OVCN2,
245 GPIO_FN_EXTLP, GPIO_FN_PORT226_VIO_CKO2,
246 GPIO_FN_IDIN,
247 GPIO_FN_MFG1_IN1,
248 GPIO_FN_MSIOF1_TXD,
249 GPIO_FN_MSIOF1_TSYNC,
250 GPIO_FN_MSIOF1_TSCK,
251 GPIO_FN_MSIOF1_RXD,
252 GPIO_FN_MSIOF1_RSCK, GPIO_FN_VIO2_CLK2,
253 GPIO_FN_MSIOF1_RSYNC, GPIO_FN_MFG1_IN2, GPIO_FN_VIO2_VD2, \
254 GPIO_FN_MSIOF1_MCK0,
255 GPIO_FN_MSIOF1_MCK1,
256 GPIO_FN_MSIOF1_SS1, GPIO_FN_VIO2_FIELD2,
257 GPIO_FN_MSIOF1_SS2, GPIO_FN_VIO2_HD2,
258 GPIO_FN_PORT241_IROUT, GPIO_FN_MFG4_OUT1, \
259 GPIO_FN_TPU4TO0,
260 GPIO_FN_MFG4_IN2,
261 GPIO_FN_PORT243_VIO_CKO2,
262 GPIO_FN_MFG2_IN1,
263 GPIO_FN_MSIOF2R_RXD,
264 GPIO_FN_MFG2_IN2,
265 GPIO_FN_MSIOF2R_TXD,
266 GPIO_FN_MFG1_OUT1,
267 GPIO_FN_TPU1TO0,
268 GPIO_FN_MFG3_OUT2,
269 GPIO_FN_TPU3TO1,
270 GPIO_FN_MFG2_OUT1,
271 GPIO_FN_TPU2TO0,
272 GPIO_FN_MSIOF2R_TSCK,
273 GPIO_FN_PORT249_IROUT, GPIO_FN_MFG4_IN1, \
274 GPIO_FN_MSIOF2R_TSYNC,
275 GPIO_FN_SDHICLK0,
276 GPIO_FN_SDHICD0,
277 GPIO_FN_SDHID0_0,
278 GPIO_FN_SDHID0_1,
279 GPIO_FN_SDHID0_2,
280 GPIO_FN_SDHID0_3,
281 GPIO_FN_SDHICMD0,
282 GPIO_FN_SDHIWP0,
283 GPIO_FN_SDHICLK1,
284 GPIO_FN_SDHID1_0, GPIO_FN_TS_SPSYNC2,
285 GPIO_FN_SDHID1_1, GPIO_FN_TS_SDAT2,
286 GPIO_FN_SDHID1_2, GPIO_FN_TS_SDEN2,
287 GPIO_FN_SDHID1_3, GPIO_FN_TS_SCK2,
288 GPIO_FN_SDHICMD1,
289 GPIO_FN_SDHICLK2,
290 GPIO_FN_SDHID2_0, GPIO_FN_TS_SPSYNC4,
291 GPIO_FN_SDHID2_1, GPIO_FN_TS_SDAT4,
292 GPIO_FN_SDHID2_2, GPIO_FN_TS_SDEN4,
293 GPIO_FN_SDHID2_3, GPIO_FN_TS_SCK4,
294 GPIO_FN_SDHICMD2,
295 GPIO_FN_MMCCLK0,
296 GPIO_FN_MMCD0_0,
297 GPIO_FN_MMCD0_1,
298 GPIO_FN_MMCD0_2,
299 GPIO_FN_MMCD0_3,
300 GPIO_FN_MMCD0_4, GPIO_FN_TS_SPSYNC5,
301 GPIO_FN_MMCD0_5, GPIO_FN_TS_SDAT5,
302 GPIO_FN_MMCD0_6, GPIO_FN_TS_SDEN5,
303 GPIO_FN_MMCD0_7, GPIO_FN_TS_SCK5,
304 GPIO_FN_MMCCMD0,
305 GPIO_FN_RESETOUTS_, GPIO_FN_EXTAL2OUT,
306 GPIO_FN_MCP_WAIT__MCP_FRB,
307 GPIO_FN_MCP_CKO, GPIO_FN_MMCCLK1,
308 GPIO_FN_MCP_D15_MCP_NAF15,
309 GPIO_FN_MCP_D14_MCP_NAF14,
310 GPIO_FN_MCP_D13_MCP_NAF13,
311 GPIO_FN_MCP_D12_MCP_NAF12,
312 GPIO_FN_MCP_D11_MCP_NAF11,
313 GPIO_FN_MCP_D10_MCP_NAF10,
314 GPIO_FN_MCP_D9_MCP_NAF9,
315 GPIO_FN_MCP_D8_MCP_NAF8, GPIO_FN_MMCCMD1,
316 GPIO_FN_MCP_D7_MCP_NAF7, GPIO_FN_MMCD1_7,
317
318 GPIO_FN_MCP_D6_MCP_NAF6, GPIO_FN_MMCD1_6,
319 GPIO_FN_MCP_D5_MCP_NAF5, GPIO_FN_MMCD1_5,
320 GPIO_FN_MCP_D4_MCP_NAF4, GPIO_FN_MMCD1_4,
321 GPIO_FN_MCP_D3_MCP_NAF3, GPIO_FN_MMCD1_3,
322 GPIO_FN_MCP_D2_MCP_NAF2, GPIO_FN_MMCD1_2,
323 GPIO_FN_MCP_D1_MCP_NAF1, GPIO_FN_MMCD1_1,
324 GPIO_FN_MCP_D0_MCP_NAF0, GPIO_FN_MMCD1_0,
325 GPIO_FN_MCP_NBRSTOUT_,
326 GPIO_FN_MCP_WE0__MCP_FWE, GPIO_FN_MCP_RDWR_MCP_FWE,
327
328 /* MSEL2 special case */
329 GPIO_FN_TSIF2_TS_XX1,
330 GPIO_FN_TSIF2_TS_XX2,
331 GPIO_FN_TSIF2_TS_XX3,
332 GPIO_FN_TSIF2_TS_XX4,
333 GPIO_FN_TSIF2_TS_XX5,
334 GPIO_FN_TSIF1_TS_XX1,
335 GPIO_FN_TSIF1_TS_XX2,
336 GPIO_FN_TSIF1_TS_XX3,
337 GPIO_FN_TSIF1_TS_XX4,
338 GPIO_FN_TSIF1_TS_XX5,
339 GPIO_FN_TSIF0_TS_XX1,
340 GPIO_FN_TSIF0_TS_XX2,
341 GPIO_FN_TSIF0_TS_XX3,
342 GPIO_FN_TSIF0_TS_XX4,
343 GPIO_FN_TSIF0_TS_XX5,
344 GPIO_FN_MST1_TS_XX1,
345 GPIO_FN_MST1_TS_XX2,
346 GPIO_FN_MST1_TS_XX3,
347 GPIO_FN_MST1_TS_XX4,
348 GPIO_FN_MST1_TS_XX5,
349 GPIO_FN_MST0_TS_XX1,
350 GPIO_FN_MST0_TS_XX2,
351 GPIO_FN_MST0_TS_XX3,
352 GPIO_FN_MST0_TS_XX4,
353 GPIO_FN_MST0_TS_XX5,
354
355 /* MSEL3 special cases */
356 GPIO_FN_SDHI0_VCCQ_MC0_ON,
357 GPIO_FN_SDHI0_VCCQ_MC0_OFF,
358 GPIO_FN_DEBUG_MON_VIO,
359 GPIO_FN_DEBUG_MON_LCDD,
360 GPIO_FN_LCDC_LCDC0,
361 GPIO_FN_LCDC_LCDC1,
362
363 /* MSEL4 special cases */
364 GPIO_FN_IRQ9_MEM_INT,
365 GPIO_FN_IRQ9_MCP_INT,
366 GPIO_FN_A11,
367 GPIO_FN_TPU4TO3,
368 GPIO_FN_RESETA_N_PU_ON,
369 GPIO_FN_RESETA_N_PU_OFF,
370 GPIO_FN_EDBGREQ_PD,
371 GPIO_FN_EDBGREQ_PU,
372
373 /* end of GPIO */
374 GPIO_NR,
375};
376 5
377/* DMA slave IDs */ 6/* DMA slave IDs */
378enum { 7enum {
diff --git a/arch/arm/plat-orion/irq.c b/arch/arm/plat-orion/irq.c
index 8db0b981ca64..c492e1b3dfdb 100644
--- a/arch/arm/plat-orion/irq.c
+++ b/arch/arm/plat-orion/irq.c
@@ -47,7 +47,7 @@ static int __init orion_add_irq_domain(struct device_node *np,
47 do { 47 do {
48 base = of_iomap(np, i); 48 base = of_iomap(np, i);
49 if (base) { 49 if (base) {
50 orion_irq_init(i * 32, base); 50 orion_irq_init(i * 32, base + 0x04);
51 i++; 51 i++;
52 } 52 }
53 } while (base); 53 } while (base);
diff --git a/arch/sh/boards/mach-ecovec24/setup.c b/arch/sh/boards/mach-ecovec24/setup.c
index a4f630f04ea3..65dd81baa7f6 100644
--- a/arch/sh/boards/mach-ecovec24/setup.c
+++ b/arch/sh/boards/mach-ecovec24/setup.c
@@ -30,6 +30,7 @@
30#include <linux/spi/mmc_spi.h> 30#include <linux/spi/mmc_spi.h>
31#include <linux/input.h> 31#include <linux/input.h>
32#include <linux/input/sh_keysc.h> 32#include <linux/input/sh_keysc.h>
33#include <linux/platform_data/gpio_backlight.h>
33#include <linux/sh_eth.h> 34#include <linux/sh_eth.h>
34#include <linux/sh_intc.h> 35#include <linux/sh_intc.h>
35#include <linux/videodev2.h> 36#include <linux/videodev2.h>
@@ -302,7 +303,7 @@ static struct platform_device usbhs_device = {
302 .resource = usbhs_resources, 303 .resource = usbhs_resources,
303}; 304};
304 305
305/* LCDC */ 306/* LCDC and backlight */
306static const struct fb_videomode ecovec_lcd_modes[] = { 307static const struct fb_videomode ecovec_lcd_modes[] = {
307 { 308 {
308 .name = "Panel", 309 .name = "Panel",
@@ -333,13 +334,6 @@ static const struct fb_videomode ecovec_dvi_modes[] = {
333 }, 334 },
334}; 335};
335 336
336static int ecovec24_set_brightness(int brightness)
337{
338 gpio_set_value(GPIO_PTR1, brightness);
339
340 return 0;
341}
342
343static struct sh_mobile_lcdc_info lcdc_info = { 337static struct sh_mobile_lcdc_info lcdc_info = {
344 .ch[0] = { 338 .ch[0] = {
345 .interface_type = RGB18, 339 .interface_type = RGB18,
@@ -349,11 +343,6 @@ static struct sh_mobile_lcdc_info lcdc_info = {
349 .width = 152, 343 .width = 152,
350 .height = 91, 344 .height = 91,
351 }, 345 },
352 .bl_info = {
353 .name = "sh_mobile_lcdc_bl",
354 .max_brightness = 1,
355 .set_brightness = ecovec24_set_brightness,
356 },
357 } 346 }
358}; 347};
359 348
@@ -379,6 +368,20 @@ static struct platform_device lcdc_device = {
379 }, 368 },
380}; 369};
381 370
371static struct gpio_backlight_platform_data gpio_backlight_data = {
372 .fbdev = &lcdc_device.dev,
373 .gpio = GPIO_PTR1,
374 .def_value = 1,
375 .name = "backlight",
376};
377
378static struct platform_device gpio_backlight_device = {
379 .name = "gpio-backlight",
380 .dev = {
381 .platform_data = &gpio_backlight_data,
382 },
383};
384
382/* CEU0 */ 385/* CEU0 */
383static struct sh_mobile_ceu_info sh_mobile_ceu0_info = { 386static struct sh_mobile_ceu_info sh_mobile_ceu0_info = {
384 .flags = SH_CEU_FLAG_USE_8BIT_BUS, 387 .flags = SH_CEU_FLAG_USE_8BIT_BUS,
@@ -1048,6 +1051,7 @@ static struct platform_device *ecovec_devices[] __initdata = {
1048 &usb1_common_device, 1051 &usb1_common_device,
1049 &usbhs_device, 1052 &usbhs_device,
1050 &lcdc_device, 1053 &lcdc_device,
1054 &gpio_backlight_device,
1051 &ceu0_device, 1055 &ceu0_device,
1052 &ceu1_device, 1056 &ceu1_device,
1053 &keysc_device, 1057 &keysc_device,
@@ -1238,11 +1242,9 @@ static int __init arch_setup(void)
1238 1242
1239 gpio_request(GPIO_PTE6, NULL); 1243 gpio_request(GPIO_PTE6, NULL);
1240 gpio_request(GPIO_PTU1, NULL); 1244 gpio_request(GPIO_PTU1, NULL);
1241 gpio_request(GPIO_PTR1, NULL);
1242 gpio_request(GPIO_PTA2, NULL); 1245 gpio_request(GPIO_PTA2, NULL);
1243 gpio_direction_input(GPIO_PTE6); 1246 gpio_direction_input(GPIO_PTE6);
1244 gpio_direction_output(GPIO_PTU1, 0); 1247 gpio_direction_output(GPIO_PTU1, 0);
1245 gpio_direction_output(GPIO_PTR1, 0);
1246 gpio_direction_output(GPIO_PTA2, 0); 1248 gpio_direction_output(GPIO_PTA2, 0);
1247 1249
1248 /* I/O buffer drive ability is high */ 1250 /* I/O buffer drive ability is high */
@@ -1255,6 +1257,9 @@ static int __init arch_setup(void)
1255 lcdc_info.ch[0].lcd_modes = ecovec_dvi_modes; 1257 lcdc_info.ch[0].lcd_modes = ecovec_dvi_modes;
1256 lcdc_info.ch[0].num_modes = ARRAY_SIZE(ecovec_dvi_modes); 1258 lcdc_info.ch[0].num_modes = ARRAY_SIZE(ecovec_dvi_modes);
1257 1259
1260 /* No backlight */
1261 gpio_backlight_data.fbdev = NULL;
1262
1258 gpio_set_value(GPIO_PTA2, 1); 1263 gpio_set_value(GPIO_PTA2, 1);
1259 gpio_set_value(GPIO_PTU1, 1); 1264 gpio_set_value(GPIO_PTU1, 1);
1260 } else { 1265 } else {
@@ -1264,8 +1269,6 @@ static int __init arch_setup(void)
1264 lcdc_info.ch[0].lcd_modes = ecovec_lcd_modes; 1269 lcdc_info.ch[0].lcd_modes = ecovec_lcd_modes;
1265 lcdc_info.ch[0].num_modes = ARRAY_SIZE(ecovec_lcd_modes); 1270 lcdc_info.ch[0].num_modes = ARRAY_SIZE(ecovec_lcd_modes);
1266 1271
1267 gpio_set_value(GPIO_PTR1, 1);
1268
1269 /* FIXME 1272 /* FIXME
1270 * 1273 *
1271 * LCDDON control is needed for Panel, 1274 * LCDDON control is needed for Panel,
diff --git a/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c b/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c
index c62050332629..355a78a3b313 100644
--- a/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c
+++ b/arch/sh/boards/mach-kfr2r09/lcd_wqvga.c
@@ -276,51 +276,3 @@ void kfr2r09_lcd_start(void *sohandle, struct sh_mobile_lcdc_sys_bus_ops *so)
276{ 276{
277 write_memory_start(sohandle, so); 277 write_memory_start(sohandle, so);
278} 278}
279
280#define CTRL_CKSW 0x10
281#define CTRL_C10 0x20
282#define CTRL_CPSW 0x80
283#define MAIN_MLED4 0x40
284#define MAIN_MSW 0x80
285
286int kfr2r09_lcd_set_brightness(int brightness)
287{
288 struct i2c_adapter *a;
289 struct i2c_msg msg;
290 unsigned char buf[2];
291 int ret;
292
293 a = i2c_get_adapter(0);
294 if (!a)
295 return -ENODEV;
296
297 buf[0] = 0x00;
298 if (brightness)
299 buf[1] = CTRL_CPSW | CTRL_C10 | CTRL_CKSW;
300 else
301 buf[1] = 0;
302
303 msg.addr = 0x75;
304 msg.buf = buf;
305 msg.len = 2;
306 msg.flags = 0;
307 ret = i2c_transfer(a, &msg, 1);
308 if (ret != 1)
309 return -ENODEV;
310
311 buf[0] = 0x01;
312 if (brightness)
313 buf[1] = MAIN_MSW | MAIN_MLED4 | 0x0c;
314 else
315 buf[1] = 0;
316
317 msg.addr = 0x75;
318 msg.buf = buf;
319 msg.len = 2;
320 msg.flags = 0;
321 ret = i2c_transfer(a, &msg, 1);
322 if (ret != 1)
323 return -ENODEV;
324
325 return 0;
326}
diff --git a/arch/sh/boards/mach-kfr2r09/setup.c b/arch/sh/boards/mach-kfr2r09/setup.c
index ab502f12ef57..1df4398f8375 100644
--- a/arch/sh/boards/mach-kfr2r09/setup.c
+++ b/arch/sh/boards/mach-kfr2r09/setup.c
@@ -21,6 +21,7 @@
21#include <linux/input.h> 21#include <linux/input.h>
22#include <linux/input/sh_keysc.h> 22#include <linux/input/sh_keysc.h>
23#include <linux/i2c.h> 23#include <linux/i2c.h>
24#include <linux/platform_data/lv5207lp.h>
24#include <linux/regulator/fixed.h> 25#include <linux/regulator/fixed.h>
25#include <linux/regulator/machine.h> 26#include <linux/regulator/machine.h>
26#include <linux/usb/r8a66597.h> 27#include <linux/usb/r8a66597.h>
@@ -159,11 +160,6 @@ static struct sh_mobile_lcdc_info kfr2r09_sh_lcdc_info = {
159 .setup_sys = kfr2r09_lcd_setup, 160 .setup_sys = kfr2r09_lcd_setup,
160 .start_transfer = kfr2r09_lcd_start, 161 .start_transfer = kfr2r09_lcd_start,
161 }, 162 },
162 .bl_info = {
163 .name = "sh_mobile_lcdc_bl",
164 .max_brightness = 1,
165 .set_brightness = kfr2r09_lcd_set_brightness,
166 },
167 .sys_bus_cfg = { 163 .sys_bus_cfg = {
168 .ldmt2r = 0x07010904, 164 .ldmt2r = 0x07010904,
169 .ldmt3r = 0x14012914, 165 .ldmt3r = 0x14012914,
@@ -195,6 +191,17 @@ static struct platform_device kfr2r09_sh_lcdc_device = {
195 }, 191 },
196}; 192};
197 193
194static struct lv5207lp_platform_data kfr2r09_backlight_data = {
195 .fbdev = &kfr2r09_sh_lcdc_device.dev,
196 .def_value = 13,
197 .max_value = 13,
198};
199
200static struct i2c_board_info kfr2r09_backlight_board_info = {
201 I2C_BOARD_INFO("lv5207lp", 0x75),
202 .platform_data = &kfr2r09_backlight_data,
203};
204
198static struct r8a66597_platdata kfr2r09_usb0_gadget_data = { 205static struct r8a66597_platdata kfr2r09_usb0_gadget_data = {
199 .on_chip = 1, 206 .on_chip = 1,
200}; 207};
@@ -627,6 +634,8 @@ static int __init kfr2r09_devices_setup(void)
627 gpio_request(GPIO_FN_SDHI0CMD, NULL); 634 gpio_request(GPIO_FN_SDHI0CMD, NULL);
628 gpio_request(GPIO_FN_SDHI0CLK, NULL); 635 gpio_request(GPIO_FN_SDHI0CLK, NULL);
629 636
637 i2c_register_board_info(0, &kfr2r09_backlight_board_info, 1);
638
630 return platform_add_devices(kfr2r09_devices, 639 return platform_add_devices(kfr2r09_devices,
631 ARRAY_SIZE(kfr2r09_devices)); 640 ARRAY_SIZE(kfr2r09_devices));
632} 641}
diff --git a/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h b/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h
index c20c9e5f5eab..79f154e5cb9c 100644
--- a/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h
+++ b/arch/sh/include/mach-kfr2r09/mach/kfr2r09.h
@@ -4,13 +4,11 @@
4#include <video/sh_mobile_lcdc.h> 4#include <video/sh_mobile_lcdc.h>
5 5
6#if defined(CONFIG_FB_SH_MOBILE_LCDC) || defined(CONFIG_FB_SH_MOBILE_LCDC_MODULE) 6#if defined(CONFIG_FB_SH_MOBILE_LCDC) || defined(CONFIG_FB_SH_MOBILE_LCDC_MODULE)
7int kfr2r09_lcd_set_brightness(int brightness);
8int kfr2r09_lcd_setup(void *sys_ops_handle, 7int kfr2r09_lcd_setup(void *sys_ops_handle,
9 struct sh_mobile_lcdc_sys_bus_ops *sys_ops); 8 struct sh_mobile_lcdc_sys_bus_ops *sys_ops);
10void kfr2r09_lcd_start(void *sys_ops_handle, 9void kfr2r09_lcd_start(void *sys_ops_handle,
11 struct sh_mobile_lcdc_sys_bus_ops *sys_ops); 10 struct sh_mobile_lcdc_sys_bus_ops *sys_ops);
12#else 11#else
13static int kfr2r09_lcd_set_brightness(int brightness) {}
14static int kfr2r09_lcd_setup(void *sys_ops_handle, 12static int kfr2r09_lcd_setup(void *sys_ops_handle,
15 struct sh_mobile_lcdc_sys_bus_ops *sys_ops) 13 struct sh_mobile_lcdc_sys_bus_ops *sys_ops)
16{ 14{