aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/boot/dts/db8500.dtsi204
-rw-r--r--arch/arm/boot/dts/snowball.dts32
-rw-r--r--arch/arm/configs/u8500_defconfig1
-rw-r--r--arch/arm/mach-ux500/board-mop500-uib.c4
-rw-r--r--arch/arm/mach-ux500/board-mop500.c32
-rw-r--r--arch/arm/mach-ux500/board-mop500.h4
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c25
7 files changed, 281 insertions, 21 deletions
diff --git a/arch/arm/boot/dts/db8500.dtsi b/arch/arm/boot/dts/db8500.dtsi
index 881bc3987844..4ad5160018cb 100644
--- a/arch/arm/boot/dts/db8500.dtsi
+++ b/arch/arm/boot/dts/db8500.dtsi
@@ -58,6 +58,8 @@
58 "st,nomadik-gpio"; 58 "st,nomadik-gpio";
59 reg = <0x8012e000 0x80>; 59 reg = <0x8012e000 0x80>;
60 interrupts = <0 119 0x4>; 60 interrupts = <0 119 0x4>;
61 interrupt-controller;
62 #interrupt-cells = <2>;
61 supports-sleepmode; 63 supports-sleepmode;
62 gpio-controller; 64 gpio-controller;
63 #gpio-cells = <2>; 65 #gpio-cells = <2>;
@@ -69,6 +71,8 @@
69 "st,nomadik-gpio"; 71 "st,nomadik-gpio";
70 reg = <0x8012e080 0x80>; 72 reg = <0x8012e080 0x80>;
71 interrupts = <0 120 0x4>; 73 interrupts = <0 120 0x4>;
74 interrupt-controller;
75 #interrupt-cells = <2>;
72 supports-sleepmode; 76 supports-sleepmode;
73 gpio-controller; 77 gpio-controller;
74 #gpio-cells = <2>; 78 #gpio-cells = <2>;
@@ -80,6 +84,8 @@
80 "st,nomadik-gpio"; 84 "st,nomadik-gpio";
81 reg = <0x8000e000 0x80>; 85 reg = <0x8000e000 0x80>;
82 interrupts = <0 121 0x4>; 86 interrupts = <0 121 0x4>;
87 interrupt-controller;
88 #interrupt-cells = <2>;
83 supports-sleepmode; 89 supports-sleepmode;
84 gpio-controller; 90 gpio-controller;
85 #gpio-cells = <2>; 91 #gpio-cells = <2>;
@@ -91,6 +97,8 @@
91 "st,nomadik-gpio"; 97 "st,nomadik-gpio";
92 reg = <0x8000e080 0x80>; 98 reg = <0x8000e080 0x80>;
93 interrupts = <0 122 0x4>; 99 interrupts = <0 122 0x4>;
100 interrupt-controller;
101 #interrupt-cells = <2>;
94 supports-sleepmode; 102 supports-sleepmode;
95 gpio-controller; 103 gpio-controller;
96 #gpio-cells = <2>; 104 #gpio-cells = <2>;
@@ -102,6 +110,8 @@
102 "st,nomadik-gpio"; 110 "st,nomadik-gpio";
103 reg = <0x8000e100 0x80>; 111 reg = <0x8000e100 0x80>;
104 interrupts = <0 123 0x4>; 112 interrupts = <0 123 0x4>;
113 interrupt-controller;
114 #interrupt-cells = <2>;
105 supports-sleepmode; 115 supports-sleepmode;
106 gpio-controller; 116 gpio-controller;
107 #gpio-cells = <2>; 117 #gpio-cells = <2>;
@@ -113,6 +123,8 @@
113 "st,nomadik-gpio"; 123 "st,nomadik-gpio";
114 reg = <0x8000e180 0x80>; 124 reg = <0x8000e180 0x80>;
115 interrupts = <0 124 0x4>; 125 interrupts = <0 124 0x4>;
126 interrupt-controller;
127 #interrupt-cells = <2>;
116 supports-sleepmode; 128 supports-sleepmode;
117 gpio-controller; 129 gpio-controller;
118 #gpio-cells = <2>; 130 #gpio-cells = <2>;
@@ -124,6 +136,8 @@
124 "st,nomadik-gpio"; 136 "st,nomadik-gpio";
125 reg = <0x8011e000 0x80>; 137 reg = <0x8011e000 0x80>;
126 interrupts = <0 125 0x4>; 138 interrupts = <0 125 0x4>;
139 interrupt-controller;
140 #interrupt-cells = <2>;
127 supports-sleepmode; 141 supports-sleepmode;
128 gpio-controller; 142 gpio-controller;
129 #gpio-cells = <2>; 143 #gpio-cells = <2>;
@@ -135,6 +149,8 @@
135 "st,nomadik-gpio"; 149 "st,nomadik-gpio";
136 reg = <0x8011e080 0x80>; 150 reg = <0x8011e080 0x80>;
137 interrupts = <0 126 0x4>; 151 interrupts = <0 126 0x4>;
152 interrupt-controller;
153 #interrupt-cells = <2>;
138 supports-sleepmode; 154 supports-sleepmode;
139 gpio-controller; 155 gpio-controller;
140 #gpio-cells = <2>; 156 #gpio-cells = <2>;
@@ -146,12 +162,18 @@
146 "st,nomadik-gpio"; 162 "st,nomadik-gpio";
147 reg = <0xa03fe000 0x80>; 163 reg = <0xa03fe000 0x80>;
148 interrupts = <0 127 0x4>; 164 interrupts = <0 127 0x4>;
165 interrupt-controller;
166 #interrupt-cells = <2>;
149 supports-sleepmode; 167 supports-sleepmode;
150 gpio-controller; 168 gpio-controller;
151 #gpio-cells = <2>; 169 #gpio-cells = <2>;
152 gpio-bank = <8>; 170 gpio-bank = <8>;
153 }; 171 };
154 172
173 pinctrl {
174 compatible = "stericsson,nmk_pinctrl";
175 };
176
155 usb@a03e0000 { 177 usb@a03e0000 {
156 compatible = "stericsson,db8500-musb", 178 compatible = "stericsson,db8500-musb",
157 "mentor,musb"; 179 "mentor,musb";
@@ -169,20 +191,195 @@
169 prcmu@80157000 { 191 prcmu@80157000 {
170 compatible = "stericsson,db8500-prcmu"; 192 compatible = "stericsson,db8500-prcmu";
171 reg = <0x80157000 0x1000>; 193 reg = <0x80157000 0x1000>;
172 interrupts = <46 47>; 194 interrupts = <0 47 0x4>;
173 #address-cells = <1>; 195 #address-cells = <1>;
174 #size-cells = <1>; 196 #size-cells = <1>;
175 ranges; 197 ranges;
176 198
177 prcmu-timer-4@80157450 { 199 prcmu-timer-4@80157450 {
178 compatible = "stericsson,db8500-prcmu-timer-4"; 200 compatible = "stericsson,db8500-prcmu-timer-4";
179 reg = <0x80157450 0xC>; 201 reg = <0x80157450 0xC>;
180 }; 202 };
181 203
204 db8500-prcmu-regulators {
205 compatible = "stericsson,db8500-prcmu-regulator";
206
207 // DB8500_REGULATOR_VAPE
208 db8500_vape_reg: db8500_vape {
209 regulator-name = "db8500-vape";
210 regulator-always-on;
211 };
212
213 // DB8500_REGULATOR_VARM
214 db8500_varm_reg: db8500_varm {
215 regulator-name = "db8500-varm";
216 };
217
218 // DB8500_REGULATOR_VMODEM
219 db8500_vmodem_reg: db8500_vmodem {
220 regulator-name = "db8500-vmodem";
221 };
222
223 // DB8500_REGULATOR_VPLL
224 db8500_vpll_reg: db8500_vpll {
225 regulator-name = "db8500-vpll";
226 };
227
228 // DB8500_REGULATOR_VSMPS1
229 db8500_vsmps1_reg: db8500_vsmps1 {
230 regulator-name = "db8500-vsmps1";
231 };
232
233 // DB8500_REGULATOR_VSMPS2
234 db8500_vsmps2_reg: db8500_vsmps2 {
235 regulator-name = "db8500-vsmps2";
236 };
237
238 // DB8500_REGULATOR_VSMPS3
239 db8500_vsmps3_reg: db8500_vsmps3 {
240 regulator-name = "db8500-vsmps3";
241 };
242
243 // DB8500_REGULATOR_VRF1
244 db8500_vrf1_reg: db8500_vrf1 {
245 regulator-name = "db8500-vrf1";
246 };
247
248 // DB8500_REGULATOR_SWITCH_SVAMMDSP
249 db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
250 regulator-name = "db8500-sva-mmdsp";
251 };
252
253 // DB8500_REGULATOR_SWITCH_SVAMMDSPRET
254 db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
255 regulator-name = "db8500-sva-mmdsp-ret";
256 };
257
258 // DB8500_REGULATOR_SWITCH_SVAPIPE
259 db8500_sva_pipe_reg: db8500_sva_pipe {
260 regulator-name = "db8500_sva_pipe";
261 };
262
263 // DB8500_REGULATOR_SWITCH_SIAMMDSP
264 db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
265 regulator-name = "db8500_sia_mmdsp";
266 };
267
268 // DB8500_REGULATOR_SWITCH_SIAMMDSPRET
269 db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
270 regulator-name = "db8500-sia-mmdsp-ret";
271 };
272
273 // DB8500_REGULATOR_SWITCH_SIAPIPE
274 db8500_sia_pipe_reg: db8500_sia_pipe {
275 regulator-name = "db8500-sia-pipe";
276 };
277
278 // DB8500_REGULATOR_SWITCH_SGA
279 db8500_sga_reg: db8500_sga {
280 regulator-name = "db8500-sga";
281 vin-supply = <&db8500_vape_reg>;
282 };
283
284 // DB8500_REGULATOR_SWITCH_B2R2_MCDE
285 db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
286 regulator-name = "db8500-b2r2-mcde";
287 vin-supply = <&db8500_vape_reg>;
288 };
289
290 // DB8500_REGULATOR_SWITCH_ESRAM12
291 db8500_esram12_reg: db8500_esram12 {
292 regulator-name = "db8500-esram12";
293 };
294
295 // DB8500_REGULATOR_SWITCH_ESRAM12RET
296 db8500_esram12_ret_reg: db8500_esram12_ret {
297 regulator-name = "db8500-esram12-ret";
298 };
299
300 // DB8500_REGULATOR_SWITCH_ESRAM34
301 db8500_esram34_reg: db8500_esram34 {
302 regulator-name = "db8500-esram34";
303 };
304
305 // DB8500_REGULATOR_SWITCH_ESRAM34RET
306 db8500_esram34_ret_reg: db8500_esram34_ret {
307 regulator-name = "db8500-esram34-ret";
308 };
309 };
310
182 ab8500@5 { 311 ab8500@5 {
183 compatible = "stericsson,ab8500"; 312 compatible = "stericsson,ab8500";
184 reg = <5>; /* mailbox 5 is i2c */ 313 reg = <5>; /* mailbox 5 is i2c */
185 interrupts = <0 40 0x4>; 314 interrupts = <0 40 0x4>;
315
316 ab8500-regulators {
317 compatible = "stericsson,ab8500-regulator";
318
319 // supplies to the display/camera
320 ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
321 regulator-name = "V-DISPLAY";
322 regulator-min-microvolt = <2500000>;
323 regulator-max-microvolt = <2900000>;
324 regulator-boot-on;
325 /* BUG: If turned off MMC will be affected. */
326 regulator-always-on;
327 };
328
329 // supplies to the on-board eMMC
330 ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
331 regulator-name = "V-eMMC1";
332 regulator-min-microvolt = <1100000>;
333 regulator-max-microvolt = <3300000>;
334 };
335
336 // supply for VAUX3; SDcard slots
337 ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
338 regulator-name = "V-MMC-SD";
339 regulator-min-microvolt = <1100000>;
340 regulator-max-microvolt = <3300000>;
341 };
342
343 // supply for v-intcore12; VINTCORE12 LDO
344 ab8500_ldo_initcore_reg: ab8500_ldo_initcore {
345 regulator-name = "V-INTCORE";
346 };
347
348 // supply for tvout; gpadc; TVOUT LDO
349 ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
350 regulator-name = "V-TVOUT";
351 };
352
353 // supply for ab8500-usb; USB LDO
354 ab8500_ldo_usb_reg: ab8500_ldo_usb {
355 regulator-name = "dummy";
356 };
357
358 // supply for ab8500-vaudio; VAUDIO LDO
359 ab8500_ldo_audio_reg: ab8500_ldo_audio {
360 regulator-name = "V-AUD";
361 };
362
363 // supply for v-anamic1 VAMic1-LDO
364 ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
365 regulator-name = "V-AMIC1";
366 };
367
368 // supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1
369 ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 {
370 regulator-name = "V-AMIC2";
371 };
372
373 // supply for v-dmic; VDMIC LDO
374 ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
375 regulator-name = "V-DMIC";
376 };
377
378 // supply for U8500 CSI/DSI; VANA LDO
379 ab8500_ldo_ana_reg: ab8500_ldo_ana {
380 regulator-name = "V-CSI/DSI";
381 };
382 };
186 }; 383 };
187 }; 384 };
188 385
@@ -235,7 +432,8 @@
235 status = "disabled"; 432 status = "disabled";
236 433
237 // Add one of these for each child device 434 // Add one of these for each child device
238 cs-gpios = <&gpio0 31 &gpio4 14 &gpio4 16 &gpio6 22 &gpio7 0>; 435 cs-gpios = <&gpio0 31 0x4 &gpio4 14 0x4 &gpio4 16 0x4
436 &gpio6 22 0x4 &gpio7 0 0x4>;
239 437
240 }; 438 };
241 439
diff --git a/arch/arm/boot/dts/snowball.dts b/arch/arm/boot/dts/snowball.dts
index d99dc04f0d91..ec3c33975110 100644
--- a/arch/arm/boot/dts/snowball.dts
+++ b/arch/arm/boot/dts/snowball.dts
@@ -20,6 +20,16 @@
20 reg = <0x00000000 0x20000000>; 20 reg = <0x00000000 0x20000000>;
21 }; 21 };
22 22
23 en_3v3_reg: en_3v3 {
24 compatible = "regulator-fixed";
25 regulator-name = "en-3v3-fixed-supply";
26 regulator-min-microvolt = <3300000>;
27 regulator-max-microvolt = <3300000>;
28 gpios = <&gpio0 26 0x4>; // 26
29 startup-delay-us = <5000>;
30 enable-active-high;
31 };
32
23 gpio_keys { 33 gpio_keys {
24 compatible = "gpio-keys"; 34 compatible = "gpio-keys";
25 #address-cells = <1>; 35 #address-cells = <1>;
@@ -30,35 +40,35 @@
30 wakeup = <1>; 40 wakeup = <1>;
31 linux,code = <2>; 41 linux,code = <2>;
32 label = "userpb"; 42 label = "userpb";
33 gpios = <&gpio1 0 0>; 43 gpios = <&gpio1 0 0x4>;
34 }; 44 };
35 button@2 { 45 button@2 {
36 debounce_interval = <50>; 46 debounce_interval = <50>;
37 wakeup = <1>; 47 wakeup = <1>;
38 linux,code = <3>; 48 linux,code = <3>;
39 label = "extkb1"; 49 label = "extkb1";
40 gpios = <&gpio4 23 0>; 50 gpios = <&gpio4 23 0x4>;
41 }; 51 };
42 button@3 { 52 button@3 {
43 debounce_interval = <50>; 53 debounce_interval = <50>;
44 wakeup = <1>; 54 wakeup = <1>;
45 linux,code = <4>; 55 linux,code = <4>;
46 label = "extkb2"; 56 label = "extkb2";
47 gpios = <&gpio4 24 0>; 57 gpios = <&gpio4 24 0x4>;
48 }; 58 };
49 button@4 { 59 button@4 {
50 debounce_interval = <50>; 60 debounce_interval = <50>;
51 wakeup = <1>; 61 wakeup = <1>;
52 linux,code = <5>; 62 linux,code = <5>;
53 label = "extkb3"; 63 label = "extkb3";
54 gpios = <&gpio5 1 0>; 64 gpios = <&gpio5 1 0x4>;
55 }; 65 };
56 button@5 { 66 button@5 {
57 debounce_interval = <50>; 67 debounce_interval = <50>;
58 wakeup = <1>; 68 wakeup = <1>;
59 linux,code = <6>; 69 linux,code = <6>;
60 label = "extkb4"; 70 label = "extkb4";
61 gpios = <&gpio5 2 0>; 71 gpios = <&gpio5 2 0x4>;
62 }; 72 };
63 }; 73 };
64 74
@@ -66,12 +76,11 @@
66 compatible = "gpio-leds"; 76 compatible = "gpio-leds";
67 used-led { 77 used-led {
68 label = "user_led"; 78 label = "user_led";
69 gpios = <&gpio4 14>; 79 gpios = <&gpio4 14 0x4>;
70 }; 80 };
71 }; 81 };
72 82
73 soc-u9500 { 83 soc-u9500 {
74
75 external-bus@50000000 { 84 external-bus@50000000 {
76 status = "okay"; 85 status = "okay";
77 86
@@ -80,6 +89,9 @@
80 reg = <0 0x10000>; 89 reg = <0 0x10000>;
81 interrupts = <12 0x1>; 90 interrupts = <12 0x1>;
82 interrupt-parent = <&gpio4>; 91 interrupt-parent = <&gpio4>;
92 vdd33a-supply = <&en_3v3_reg>;
93 vddvario-supply = <&db8500_vape_reg>;
94
83 95
84 reg-shift = <1>; 96 reg-shift = <1>;
85 reg-io-width = <2>; 97 reg-io-width = <2>;
@@ -91,11 +103,13 @@
91 103
92 sdi@80126000 { 104 sdi@80126000 {
93 status = "enabled"; 105 status = "enabled";
94 cd-gpios = <&gpio6 26>; 106 vmmc-supply = <&ab8500_ldo_aux3_reg>;
107 cd-gpios = <&gpio6 26 0x4>; // 218
95 }; 108 };
96 109
97 sdi@80114000 { 110 sdi@80114000 {
98 status = "enabled"; 111 status = "enabled";
112 vmmc-supply = <&ab8500_ldo_aux2_reg>;
99 }; 113 };
100 114
101 uart@80120000 { 115 uart@80120000 {
@@ -114,7 +128,7 @@
114 tc3589x@42 { 128 tc3589x@42 {
115 //compatible = "tc3589x"; 129 //compatible = "tc3589x";
116 reg = <0x42>; 130 reg = <0x42>;
117 interrupts = <25>; 131 gpios = <&gpio6 25 0x4>;
118 interrupt-parent = <&gpio6>; 132 interrupt-parent = <&gpio6>;
119 }; 133 };
120 tps61052@33 { 134 tps61052@33 {
diff --git a/arch/arm/configs/u8500_defconfig b/arch/arm/configs/u8500_defconfig
index 7e84f453e8a6..2d4f661d1cf6 100644
--- a/arch/arm/configs/u8500_defconfig
+++ b/arch/arm/configs/u8500_defconfig
@@ -75,6 +75,7 @@ CONFIG_AB5500_CORE=y
75CONFIG_AB8500_CORE=y 75CONFIG_AB8500_CORE=y
76CONFIG_REGULATOR=y 76CONFIG_REGULATOR=y
77CONFIG_REGULATOR_AB8500=y 77CONFIG_REGULATOR_AB8500=y
78CONFIG_REGULATOR_FIXED_VOLTAGE=y
78# CONFIG_HID_SUPPORT is not set 79# CONFIG_HID_SUPPORT is not set
79CONFIG_USB_GADGET=y 80CONFIG_USB_GADGET=y
80CONFIG_AB8500_USB=y 81CONFIG_AB8500_USB=y
diff --git a/arch/arm/mach-ux500/board-mop500-uib.c b/arch/arm/mach-ux500/board-mop500-uib.c
index b29a788f498c..1f47d962e3a1 100644
--- a/arch/arm/mach-ux500/board-mop500-uib.c
+++ b/arch/arm/mach-ux500/board-mop500-uib.c
@@ -96,7 +96,7 @@ static void __init __mop500_uib_init(struct uib *uib, const char *why)
96/* 96/*
97 * Detect the UIB attached based on the presence or absence of i2c devices. 97 * Detect the UIB attached based on the presence or absence of i2c devices.
98 */ 98 */
99static int __init mop500_uib_init(void) 99int __init mop500_uib_init(void)
100{ 100{
101 struct uib *uib = mop500_uib; 101 struct uib *uib = mop500_uib;
102 struct i2c_adapter *i2c0; 102 struct i2c_adapter *i2c0;
@@ -131,5 +131,3 @@ static int __init mop500_uib_init(void)
131 131
132 return 0; 132 return 0;
133} 133}
134
135module_init(mop500_uib_init);
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index fba8adea421e..9c74ac545849 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -673,9 +673,15 @@ static void __init u8500_cryp1_hash1_init(struct device *parent)
673static struct platform_device *snowball_platform_devs[] __initdata = { 673static struct platform_device *snowball_platform_devs[] __initdata = {
674 &snowball_led_dev, 674 &snowball_led_dev,
675 &snowball_key_dev, 675 &snowball_key_dev,
676 &snowball_sbnet_dev,
676 &ab8500_device, 677 &ab8500_device,
677}; 678};
678 679
680static struct platform_device *snowball_of_platform_devs[] __initdata = {
681 &snowball_led_dev,
682 &snowball_key_dev,
683};
684
679static void __init mop500_init_machine(void) 685static void __init mop500_init_machine(void)
680{ 686{
681 struct device *parent = NULL; 687 struct device *parent = NULL;
@@ -710,6 +716,8 @@ static void __init mop500_init_machine(void)
710 716
711 /* This board has full regulator constraints */ 717 /* This board has full regulator constraints */
712 regulator_has_full_constraints(); 718 regulator_has_full_constraints();
719
720 mop500_uib_init();
713} 721}
714 722
715static void __init snowball_init_machine(void) 723static void __init snowball_init_machine(void)
@@ -774,6 +782,8 @@ static void __init hrefv60_init_machine(void)
774 782
775 /* This board has full regulator constraints */ 783 /* This board has full regulator constraints */
776 regulator_has_full_constraints(); 784 regulator_has_full_constraints();
785
786 mop500_uib_init();
777} 787}
778 788
779MACHINE_START(U8500, "ST-Ericsson MOP500 platform") 789MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
@@ -834,6 +844,10 @@ struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
834static const struct of_device_id u8500_local_bus_nodes[] = { 844static const struct of_device_id u8500_local_bus_nodes[] = {
835 /* only create devices below soc node */ 845 /* only create devices below soc node */
836 { .compatible = "stericsson,db8500", }, 846 { .compatible = "stericsson,db8500", },
847 { .compatible = "stericsson,db8500-prcmu", },
848 { .compatible = "stericsson,db8500-prcmu-regulator", },
849 { .compatible = "stericsson,ab8500", },
850 { .compatible = "stericsson,ab8500-regulator", },
837 { .compatible = "simple-bus"}, 851 { .compatible = "simple-bus"},
838 { }, 852 { },
839}; 853};
@@ -852,7 +866,7 @@ static void __init u8500_init_machine(void)
852 else if (of_machine_is_compatible("st-ericsson,hrefv60+")) 866 else if (of_machine_is_compatible("st-ericsson,hrefv60+"))
853 hrefv60_pinmaps_init(); 867 hrefv60_pinmaps_init();
854 868
855 parent = u8500_init_devices(); 869 parent = u8500_of_init_devices();
856 870
857 for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) 871 for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++)
858 mop500_platform_devs[i]->dev.parent = parent; 872 mop500_platform_devs[i]->dev.parent = parent;
@@ -869,15 +883,23 @@ static void __init u8500_init_machine(void)
869 ARRAY_SIZE(mop500_platform_devs)); 883 ARRAY_SIZE(mop500_platform_devs));
870 884
871 mop500_sdi_init(parent); 885 mop500_sdi_init(parent);
872
873 i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); 886 i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
874 i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); 887 i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
875 i2c_register_board_info(2, mop500_i2c2_devices, 888 i2c_register_board_info(2, mop500_i2c2_devices,
876 ARRAY_SIZE(mop500_i2c2_devices)); 889 ARRAY_SIZE(mop500_i2c2_devices));
877 890
891 mop500_uib_init();
892
878 } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) { 893 } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
879 platform_add_devices(snowball_platform_devs, 894 /*
880 ARRAY_SIZE(snowball_platform_devs)); 895 * Devices to be DT:ed:
896 * snowball_led_dev = todo
897 * snowball_key_dev = todo
898 * snowball_sbnet_dev = done
899 * ab8500_device = done
900 */
901 platform_add_devices(snowball_of_platform_devs,
902 ARRAY_SIZE(snowball_of_platform_devs));
881 903
882 snowball_sdi_init(parent); 904 snowball_sdi_init(parent);
883 } else if (of_machine_is_compatible("st-ericsson,hrefv60+")) { 905 } else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
@@ -898,6 +920,8 @@ static void __init u8500_init_machine(void)
898 i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); 920 i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
899 i2c_register_board_info(2, mop500_i2c2_devices, 921 i2c_register_board_info(2, mop500_i2c2_devices,
900 ARRAY_SIZE(mop500_i2c2_devices)); 922 ARRAY_SIZE(mop500_i2c2_devices));
923
924 mop500_uib_init();
901 } 925 }
902 mop500_i2c_init(parent); 926 mop500_i2c_init(parent);
903 927
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h
index bc44c07c71a9..2f87b25a908a 100644
--- a/arch/arm/mach-ux500/board-mop500.h
+++ b/arch/arm/mach-ux500/board-mop500.h
@@ -89,7 +89,11 @@ void __init mop500_pinmaps_init(void);
89void __init snowball_pinmaps_init(void); 89void __init snowball_pinmaps_init(void);
90void __init hrefv60_pinmaps_init(void); 90void __init hrefv60_pinmaps_init(void);
91 91
92int __init mop500_uib_init(void);
92void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, 93void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
93 unsigned n); 94 unsigned n);
94 95
96/* TODO: Once all pieces are DT:ed, remove completely. */
97struct device * __init u8500_of_init_devices(void);
98
95#endif 99#endif
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 16169c4bf6ca..33275eb4c689 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -140,7 +140,6 @@ static struct platform_device *platform_devs[] __initdata = {
140static struct platform_device *of_platform_devs[] __initdata = { 140static struct platform_device *of_platform_devs[] __initdata = {
141 &u8500_dma40_device, 141 &u8500_dma40_device,
142 &db8500_pmu_device, 142 &db8500_pmu_device,
143 &db8500_prcmu_device,
144}; 143};
145 144
146static resource_size_t __initdata db8500_gpio_base[] = { 145static resource_size_t __initdata db8500_gpio_base[] = {
@@ -222,6 +221,28 @@ struct device * __init u8500_init_devices(void)
222 platform_device_register_data(parent, 221 platform_device_register_data(parent,
223 "cpufreq-u8500", -1, NULL, 0); 222 "cpufreq-u8500", -1, NULL, 0);
224 223
224 for (i = 0; i < ARRAY_SIZE(platform_devs); i++)
225 platform_devs[i]->dev.parent = parent;
226
227 platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs));
228
229 return parent;
230}
231
232/* TODO: Once all pieces are DT:ed, remove completely. */
233struct device * __init u8500_of_init_devices(void)
234{
235 struct device *parent;
236 int i;
237
238 parent = db8500_soc_device_init();
239
240 db8500_add_rtc(parent);
241 db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg);
242
243 platform_device_register_data(parent,
244 "cpufreq-u8500", -1, NULL, 0);
245
225 for (i = 0; i < ARRAY_SIZE(of_platform_devs); i++) 246 for (i = 0; i < ARRAY_SIZE(of_platform_devs); i++)
226 of_platform_devs[i]->dev.parent = parent; 247 of_platform_devs[i]->dev.parent = parent;
227 248
@@ -229,7 +250,7 @@ struct device * __init u8500_init_devices(void)
229 * Devices to be DT:ed: 250 * Devices to be DT:ed:
230 * u8500_dma40_device = todo 251 * u8500_dma40_device = todo
231 * db8500_pmu_device = todo 252 * db8500_pmu_device = todo
232 * db8500_prcmu_device = todo 253 * db8500_prcmu_device = done
233 */ 254 */
234 platform_add_devices(of_platform_devs, ARRAY_SIZE(of_platform_devs)); 255 platform_add_devices(of_platform_devs, ARRAY_SIZE(of_platform_devs));
235 256