aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2012-11-06 10:31:40 -0500
committerOlof Johansson <olof@lixom.net>2012-11-06 10:31:40 -0500
commit591d07bf13a009315340d4b65c7ffef6aaed6bca (patch)
treebeaeacfd963c6e2edb77228d5c44d964922fcf14
parent3d70f8c617a436c7146ecb81df2265b4626dfe89 (diff)
parentf44c5fd12d8152e45585905422d03427754e1907 (diff)
Merge branch 'ste-dt-for-next' of git://git.linaro.org/people/ljones/linux-3.0-ux500 into next/dt
From Lee Jones: * 'ste-dt-for-next' of git://git.linaro.org/people/ljones/linux-3.0-ux500: (31 commits) ARM: ux500: Convert DT_MACHINE_START to use SMP operations ARM: ux500: CONFIG: Enable GPIO Regulators ARM: ux500: Change the type of interrupt to something compatible ARM: ux500: Add node for the MMC GPIO regulator ARM: ux500: List DT compatibility using platform names rather than by board ARM: ux500: Remove duplicate DT_MACHINE_START - make u8500 for generic ARM: ux500: Rename references to the ccu9540 dev board accordingly ARM: ux500: Enable all MMC devices on the u9540 when booting with DT ARM: ux500: Enable SDI4 port on the u9540 when booting with Device Tree ARM: ux500: Add UART support to the u9540 Device Tree ARM: ux500: Add support for ST-Ericsson's u9540 SoC ARM: ux500: Add skeleton DTS file for the u9540 ARM: ux500: Remove unused board compatible string ARM: ux500: Supply the STMPE keypad Device Tree node to the STUIB DT ARM: ux500: Apply a Device Tree node for the STMPE MFD ARM: ux500: Stop informing the regulator subsystem that we have full constraints ARM: ux500: Add all bu21013 touch screen components to supported Device Trees ARM: ux500: Stop calling the UIB init function when using Device Tree ARM: ux500: Create a new Device Tree include file for boards supporting STUIBs Documentation: Detail permitted DT properties for the BU21013 Touch Screen ...
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/bu21013.txt28
-rw-r--r--arch/arm/boot/dts/ccu9540.dts72
-rw-r--r--arch/arm/boot/dts/dbx5x0.dtsi57
-rw-r--r--arch/arm/boot/dts/href.dtsi273
-rw-r--r--arch/arm/boot/dts/hrefprev60.dts41
-rw-r--r--arch/arm/boot/dts/hrefv60plus.dts83
-rw-r--r--arch/arm/boot/dts/snowball.dts140
-rw-r--r--arch/arm/boot/dts/stuib.dtsi78
-rw-r--r--arch/arm/configs/u8500_defconfig1
-rw-r--r--arch/arm/mach-ux500/board-mop500-stuib.c22
-rw-r--r--arch/arm/mach-ux500/board-mop500.c146
-rw-r--r--arch/arm/mach-ux500/board-mop500.h8
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c108
-rw-r--r--arch/arm/mach-ux500/cpu.c3
14 files changed, 779 insertions, 281 deletions
diff --git a/Documentation/devicetree/bindings/input/touchscreen/bu21013.txt b/Documentation/devicetree/bindings/input/touchscreen/bu21013.txt
new file mode 100644
index 000000000000..ca5a2c86480c
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/touchscreen/bu21013.txt
@@ -0,0 +1,28 @@
1* Rohm BU21013 Touch Screen
2
3Required properties:
4 - compatible : "rohm,bu21013_tp"
5 - reg : I2C device address
6
7Optional properties:
8 - touch-gpio : GPIO pin registering a touch event
9 - <supply_name>-supply : Phandle to a regulator supply
10 - rohm,touch-max-x : Maximum outward permitted limit in the X axis
11 - rohm,touch-max-y : Maximum outward permitted limit in the Y axis
12 - rohm,flip-x : Flip touch coordinates on the X axis
13 - rohm,flip-y : Flip touch coordinates on the Y axis
14
15Example:
16
17 i2c@80110000 {
18 bu21013_tp@0x5c {
19 compatible = "rohm,bu21013_tp";
20 reg = <0x5c>;
21 touch-gpio = <&gpio2 20 0x4>;
22 avdd-supply = <&ab8500_ldo_aux1_reg>;
23
24 rohm,touch-max-x = <384>;
25 rohm,touch-max-y = <704>;
26 rohm,flip-y;
27 };
28 };
diff --git a/arch/arm/boot/dts/ccu9540.dts b/arch/arm/boot/dts/ccu9540.dts
new file mode 100644
index 000000000000..04305463f00d
--- /dev/null
+++ b/arch/arm/boot/dts/ccu9540.dts
@@ -0,0 +1,72 @@
1/*
2 * Copyright 2012 ST-Ericsson AB
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13/include/ "dbx5x0.dtsi"
14
15/ {
16 model = "ST-Ericsson CCU9540 platform with Device Tree";
17 compatible = "st-ericsson,ccu9540", "st-ericsson,u9540";
18
19 memory {
20 reg = <0x00000000 0x20000000>;
21 };
22
23 soc-u9500 {
24 uart@80120000 {
25 status = "okay";
26 };
27
28 uart@80121000 {
29 status = "okay";
30 };
31
32 uart@80007000 {
33 status = "okay";
34 };
35
36 // External Micro SD slot
37 sdi0_per1@80126000 {
38 arm,primecell-periphid = <0x10480180>;
39 max-frequency = <100000000>;
40 bus-width = <4>;
41 mmc-cap-sd-highspeed;
42 mmc-cap-mmc-highspeed;
43 vmmc-supply = <&ab8500_ldo_aux3_reg>;
44
45 cd-gpios = <&gpio7 6 0x4>; // 230
46 cd-inverted;
47
48 status = "okay";
49 };
50
51
52 // WLAN SDIO channel
53 sdi1_per2@80118000 {
54 arm,primecell-periphid = <0x10480180>;
55 max-frequency = <50000000>;
56 bus-width = <4>;
57
58 status = "okay";
59 };
60
61 // On-board eMMC
62 sdi4_per2@80114000 {
63 arm,primecell-periphid = <0x10480180>;
64 max-frequency = <100000000>;
65 bus-width = <8>;
66 mmc-cap-mmc-highspeed;
67 vmmc-supply = <&ab8500_ldo_aux2_reg>;
68
69 status = "okay";
70 };
71 };
72};
diff --git a/arch/arm/boot/dts/dbx5x0.dtsi b/arch/arm/boot/dts/dbx5x0.dtsi
index 4b0e0ca08f40..7ce45fc461fb 100644
--- a/arch/arm/boot/dts/dbx5x0.dtsi
+++ b/arch/arm/boot/dts/dbx5x0.dtsi
@@ -209,123 +209,103 @@
209 // DB8500_REGULATOR_VAPE 209 // DB8500_REGULATOR_VAPE
210 db8500_vape_reg: db8500_vape { 210 db8500_vape_reg: db8500_vape {
211 regulator-compatible = "db8500_vape"; 211 regulator-compatible = "db8500_vape";
212 regulator-name = "db8500-vape";
213 regulator-always-on; 212 regulator-always-on;
214 }; 213 };
215 214
216 // DB8500_REGULATOR_VARM 215 // DB8500_REGULATOR_VARM
217 db8500_varm_reg: db8500_varm { 216 db8500_varm_reg: db8500_varm {
218 regulator-compatible = "db8500_varm"; 217 regulator-compatible = "db8500_varm";
219 regulator-name = "db8500-varm";
220 }; 218 };
221 219
222 // DB8500_REGULATOR_VMODEM 220 // DB8500_REGULATOR_VMODEM
223 db8500_vmodem_reg: db8500_vmodem { 221 db8500_vmodem_reg: db8500_vmodem {
224 regulator-compatible = "db8500_vmodem"; 222 regulator-compatible = "db8500_vmodem";
225 regulator-name = "db8500-vmodem";
226 }; 223 };
227 224
228 // DB8500_REGULATOR_VPLL 225 // DB8500_REGULATOR_VPLL
229 db8500_vpll_reg: db8500_vpll { 226 db8500_vpll_reg: db8500_vpll {
230 regulator-compatible = "db8500_vpll"; 227 regulator-compatible = "db8500_vpll";
231 regulator-name = "db8500-vpll";
232 }; 228 };
233 229
234 // DB8500_REGULATOR_VSMPS1 230 // DB8500_REGULATOR_VSMPS1
235 db8500_vsmps1_reg: db8500_vsmps1 { 231 db8500_vsmps1_reg: db8500_vsmps1 {
236 regulator-compatible = "db8500_vsmps1"; 232 regulator-compatible = "db8500_vsmps1";
237 regulator-name = "db8500-vsmps1";
238 }; 233 };
239 234
240 // DB8500_REGULATOR_VSMPS2 235 // DB8500_REGULATOR_VSMPS2
241 db8500_vsmps2_reg: db8500_vsmps2 { 236 db8500_vsmps2_reg: db8500_vsmps2 {
242 regulator-compatible = "db8500_vsmps2"; 237 regulator-compatible = "db8500_vsmps2";
243 regulator-name = "db8500-vsmps2";
244 }; 238 };
245 239
246 // DB8500_REGULATOR_VSMPS3 240 // DB8500_REGULATOR_VSMPS3
247 db8500_vsmps3_reg: db8500_vsmps3 { 241 db8500_vsmps3_reg: db8500_vsmps3 {
248 regulator-compatible = "db8500_vsmps3"; 242 regulator-compatible = "db8500_vsmps3";
249 regulator-name = "db8500-vsmps3";
250 }; 243 };
251 244
252 // DB8500_REGULATOR_VRF1 245 // DB8500_REGULATOR_VRF1
253 db8500_vrf1_reg: db8500_vrf1 { 246 db8500_vrf1_reg: db8500_vrf1 {
254 regulator-compatible = "db8500_vrf1"; 247 regulator-compatible = "db8500_vrf1";
255 regulator-name = "db8500-vrf1";
256 }; 248 };
257 249
258 // DB8500_REGULATOR_SWITCH_SVAMMDSP 250 // DB8500_REGULATOR_SWITCH_SVAMMDSP
259 db8500_sva_mmdsp_reg: db8500_sva_mmdsp { 251 db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
260 regulator-compatible = "db8500_sva_mmdsp"; 252 regulator-compatible = "db8500_sva_mmdsp";
261 regulator-name = "db8500-sva-mmdsp";
262 }; 253 };
263 254
264 // DB8500_REGULATOR_SWITCH_SVAMMDSPRET 255 // DB8500_REGULATOR_SWITCH_SVAMMDSPRET
265 db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret { 256 db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
266 regulator-compatible = "db8500_sva_mmdsp_ret"; 257 regulator-compatible = "db8500_sva_mmdsp_ret";
267 regulator-name = "db8500-sva-mmdsp-ret";
268 }; 258 };
269 259
270 // DB8500_REGULATOR_SWITCH_SVAPIPE 260 // DB8500_REGULATOR_SWITCH_SVAPIPE
271 db8500_sva_pipe_reg: db8500_sva_pipe { 261 db8500_sva_pipe_reg: db8500_sva_pipe {
272 regulator-compatible = "db8500_sva_pipe"; 262 regulator-compatible = "db8500_sva_pipe";
273 regulator-name = "db8500_sva_pipe";
274 }; 263 };
275 264
276 // DB8500_REGULATOR_SWITCH_SIAMMDSP 265 // DB8500_REGULATOR_SWITCH_SIAMMDSP
277 db8500_sia_mmdsp_reg: db8500_sia_mmdsp { 266 db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
278 regulator-compatible = "db8500_sia_mmdsp"; 267 regulator-compatible = "db8500_sia_mmdsp";
279 regulator-name = "db8500_sia_mmdsp";
280 }; 268 };
281 269
282 // DB8500_REGULATOR_SWITCH_SIAMMDSPRET 270 // DB8500_REGULATOR_SWITCH_SIAMMDSPRET
283 db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret { 271 db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
284 regulator-name = "db8500-sia-mmdsp-ret";
285 }; 272 };
286 273
287 // DB8500_REGULATOR_SWITCH_SIAPIPE 274 // DB8500_REGULATOR_SWITCH_SIAPIPE
288 db8500_sia_pipe_reg: db8500_sia_pipe { 275 db8500_sia_pipe_reg: db8500_sia_pipe {
289 regulator-compatible = "db8500_sia_pipe"; 276 regulator-compatible = "db8500_sia_pipe";
290 regulator-name = "db8500-sia-pipe";
291 }; 277 };
292 278
293 // DB8500_REGULATOR_SWITCH_SGA 279 // DB8500_REGULATOR_SWITCH_SGA
294 db8500_sga_reg: db8500_sga { 280 db8500_sga_reg: db8500_sga {
295 regulator-compatible = "db8500_sga"; 281 regulator-compatible = "db8500_sga";
296 regulator-name = "db8500-sga";
297 vin-supply = <&db8500_vape_reg>; 282 vin-supply = <&db8500_vape_reg>;
298 }; 283 };
299 284
300 // DB8500_REGULATOR_SWITCH_B2R2_MCDE 285 // DB8500_REGULATOR_SWITCH_B2R2_MCDE
301 db8500_b2r2_mcde_reg: db8500_b2r2_mcde { 286 db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
302 regulator-compatible = "db8500_b2r2_mcde"; 287 regulator-compatible = "db8500_b2r2_mcde";
303 regulator-name = "db8500-b2r2-mcde";
304 vin-supply = <&db8500_vape_reg>; 288 vin-supply = <&db8500_vape_reg>;
305 }; 289 };
306 290
307 // DB8500_REGULATOR_SWITCH_ESRAM12 291 // DB8500_REGULATOR_SWITCH_ESRAM12
308 db8500_esram12_reg: db8500_esram12 { 292 db8500_esram12_reg: db8500_esram12 {
309 regulator-compatible = "db8500_esram12"; 293 regulator-compatible = "db8500_esram12";
310 regulator-name = "db8500-esram12";
311 }; 294 };
312 295
313 // DB8500_REGULATOR_SWITCH_ESRAM12RET 296 // DB8500_REGULATOR_SWITCH_ESRAM12RET
314 db8500_esram12_ret_reg: db8500_esram12_ret { 297 db8500_esram12_ret_reg: db8500_esram12_ret {
315 regulator-compatible = "db8500_esram12_ret"; 298 regulator-compatible = "db8500_esram12_ret";
316 regulator-name = "db8500-esram12-ret";
317 }; 299 };
318 300
319 // DB8500_REGULATOR_SWITCH_ESRAM34 301 // DB8500_REGULATOR_SWITCH_ESRAM34
320 db8500_esram34_reg: db8500_esram34 { 302 db8500_esram34_reg: db8500_esram34 {
321 regulator-compatible = "db8500_esram34"; 303 regulator-compatible = "db8500_esram34";
322 regulator-name = "db8500-esram34";
323 }; 304 };
324 305
325 // DB8500_REGULATOR_SWITCH_ESRAM34RET 306 // DB8500_REGULATOR_SWITCH_ESRAM34RET
326 db8500_esram34_ret_reg: db8500_esram34_ret { 307 db8500_esram34_ret_reg: db8500_esram34_ret {
327 regulator-compatible = "db8500_esram34_ret"; 308 regulator-compatible = "db8500_esram34_ret";
328 regulator-name = "db8500-esram34-ret";
329 }; 309 };
330 }; 310 };
331 311
@@ -404,7 +384,6 @@
404 // supplies to the display/camera 384 // supplies to the display/camera
405 ab8500_ldo_aux1_reg: ab8500_ldo_aux1 { 385 ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
406 regulator-compatible = "ab8500_ldo_aux1"; 386 regulator-compatible = "ab8500_ldo_aux1";
407 regulator-name = "V-DISPLAY";
408 regulator-min-microvolt = <2500000>; 387 regulator-min-microvolt = <2500000>;
409 regulator-max-microvolt = <2900000>; 388 regulator-max-microvolt = <2900000>;
410 regulator-boot-on; 389 regulator-boot-on;
@@ -415,7 +394,6 @@
415 // supplies to the on-board eMMC 394 // supplies to the on-board eMMC
416 ab8500_ldo_aux2_reg: ab8500_ldo_aux2 { 395 ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
417 regulator-compatible = "ab8500_ldo_aux2"; 396 regulator-compatible = "ab8500_ldo_aux2";
418 regulator-name = "V-eMMC1";
419 regulator-min-microvolt = <1100000>; 397 regulator-min-microvolt = <1100000>;
420 regulator-max-microvolt = <3300000>; 398 regulator-max-microvolt = <3300000>;
421 }; 399 };
@@ -423,7 +401,6 @@
423 // supply for VAUX3; SDcard slots 401 // supply for VAUX3; SDcard slots
424 ab8500_ldo_aux3_reg: ab8500_ldo_aux3 { 402 ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
425 regulator-compatible = "ab8500_ldo_aux3"; 403 regulator-compatible = "ab8500_ldo_aux3";
426 regulator-name = "V-MMC-SD";
427 regulator-min-microvolt = <1100000>; 404 regulator-min-microvolt = <1100000>;
428 regulator-max-microvolt = <3300000>; 405 regulator-max-microvolt = <3300000>;
429 }; 406 };
@@ -431,49 +408,41 @@
431 // supply for v-intcore12; VINTCORE12 LDO 408 // supply for v-intcore12; VINTCORE12 LDO
432 ab8500_ldo_initcore_reg: ab8500_ldo_initcore { 409 ab8500_ldo_initcore_reg: ab8500_ldo_initcore {
433 regulator-compatible = "ab8500_ldo_initcore"; 410 regulator-compatible = "ab8500_ldo_initcore";
434 regulator-name = "V-INTCORE";
435 }; 411 };
436 412
437 // supply for tvout; gpadc; TVOUT LDO 413 // supply for tvout; gpadc; TVOUT LDO
438 ab8500_ldo_tvout_reg: ab8500_ldo_tvout { 414 ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
439 regulator-compatible = "ab8500_ldo_tvout"; 415 regulator-compatible = "ab8500_ldo_tvout";
440 regulator-name = "V-TVOUT";
441 }; 416 };
442 417
443 // supply for ab8500-usb; USB LDO 418 // supply for ab8500-usb; USB LDO
444 ab8500_ldo_usb_reg: ab8500_ldo_usb { 419 ab8500_ldo_usb_reg: ab8500_ldo_usb {
445 regulator-compatible = "ab8500_ldo_usb"; 420 regulator-compatible = "ab8500_ldo_usb";
446 regulator-name = "dummy";
447 }; 421 };
448 422
449 // supply for ab8500-vaudio; VAUDIO LDO 423 // supply for ab8500-vaudio; VAUDIO LDO
450 ab8500_ldo_audio_reg: ab8500_ldo_audio { 424 ab8500_ldo_audio_reg: ab8500_ldo_audio {
451 regulator-compatible = "ab8500_ldo_audio"; 425 regulator-compatible = "ab8500_ldo_audio";
452 regulator-name = "V-AUD";
453 }; 426 };
454 427
455 // supply for v-anamic1 VAMic1-LDO 428 // supply for v-anamic1 VAMic1-LDO
456 ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 { 429 ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
457 regulator-compatible = "ab8500_ldo_anamic1"; 430 regulator-compatible = "ab8500_ldo_anamic1";
458 regulator-name = "V-AMIC1";
459 }; 431 };
460 432
461 // supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1 433 // supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1
462 ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 { 434 ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 {
463 regulator-compatible = "ab8500_ldo_amamic2"; 435 regulator-compatible = "ab8500_ldo_amamic2";
464 regulator-name = "V-AMIC2";
465 }; 436 };
466 437
467 // supply for v-dmic; VDMIC LDO 438 // supply for v-dmic; VDMIC LDO
468 ab8500_ldo_dmic_reg: ab8500_ldo_dmic { 439 ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
469 regulator-compatible = "ab8500_ldo_dmic"; 440 regulator-compatible = "ab8500_ldo_dmic";
470 regulator-name = "V-DMIC";
471 }; 441 };
472 442
473 // supply for U8500 CSI/DSI; VANA LDO 443 // supply for U8500 CSI/DSI; VANA LDO
474 ab8500_ldo_ana_reg: ab8500_ldo_ana { 444 ab8500_ldo_ana_reg: ab8500_ldo_ana {
475 regulator-compatible = "ab8500_ldo_ana"; 445 regulator-compatible = "ab8500_ldo_ana";
476 regulator-name = "V-CSI/DSI";
477 }; 446 };
478 }; 447 };
479 }; 448 };
@@ -577,42 +546,42 @@
577 status = "disabled"; 546 status = "disabled";
578 }; 547 };
579 548
580 sdi@80126000 { 549 sdi0_per1@80126000 {
581 compatible = "arm,pl18x", "arm,primecell"; 550 compatible = "arm,pl18x", "arm,primecell";
582 reg = <0x80126000 0x1000>; 551 reg = <0x80126000 0x1000>;
583 interrupts = <0 60 0x4>; 552 interrupts = <0 60 0x4>;
584 status = "disabled"; 553 status = "disabled";
585 }; 554 };
586 555
587 sdi@80118000 { 556 sdi1_per2@80118000 {
588 compatible = "arm,pl18x", "arm,primecell"; 557 compatible = "arm,pl18x", "arm,primecell";
589 reg = <0x80118000 0x1000>; 558 reg = <0x80118000 0x1000>;
590 interrupts = <0 50 0x4>; 559 interrupts = <0 50 0x4>;
591 status = "disabled"; 560 status = "disabled";
592 }; 561 };
593 562
594 sdi@80005000 { 563 sdi2_per3@80005000 {
595 compatible = "arm,pl18x", "arm,primecell"; 564 compatible = "arm,pl18x", "arm,primecell";
596 reg = <0x80005000 0x1000>; 565 reg = <0x80005000 0x1000>;
597 interrupts = <0 41 0x4>; 566 interrupts = <0 41 0x4>;
598 status = "disabled"; 567 status = "disabled";
599 }; 568 };
600 569
601 sdi@80119000 { 570 sdi3_per2@80119000 {
602 compatible = "arm,pl18x", "arm,primecell"; 571 compatible = "arm,pl18x", "arm,primecell";
603 reg = <0x80119000 0x1000>; 572 reg = <0x80119000 0x1000>;
604 interrupts = <0 59 0x4>; 573 interrupts = <0 59 0x4>;
605 status = "disabled"; 574 status = "disabled";
606 }; 575 };
607 576
608 sdi@80114000 { 577 sdi4_per2@80114000 {
609 compatible = "arm,pl18x", "arm,primecell"; 578 compatible = "arm,pl18x", "arm,primecell";
610 reg = <0x80114000 0x1000>; 579 reg = <0x80114000 0x1000>;
611 interrupts = <0 99 0x4>; 580 interrupts = <0 99 0x4>;
612 status = "disabled"; 581 status = "disabled";
613 }; 582 };
614 583
615 sdi@80008000 { 584 sdi5_per3@80008000 {
616 compatible = "arm,pl18x", "arm,primecell"; 585 compatible = "arm,pl18x", "arm,primecell";
617 reg = <0x80008000 0x1000>; 586 reg = <0x80008000 0x1000>;
618 interrupts = <0 100 0x4>; 587 interrupts = <0 100 0x4>;
@@ -660,5 +629,19 @@
660 ranges = <0 0x50000000 0x4000000>; 629 ranges = <0 0x50000000 0x4000000>;
661 status = "disabled"; 630 status = "disabled";
662 }; 631 };
632
633 vmmci: regulator-gpio {
634 compatible = "regulator-gpio";
635
636 regulator-min-microvolt = <1800000>;
637 regulator-max-microvolt = <2600000>;
638 regulator-name = "mmci-reg";
639 regulator-type = "voltage";
640
641 gpios = <&tc3589x_gpio 18 0x4>;
642 gpio-enable = <&tc3589x_gpio 17 0x4>;
643 states = <1800000 0x1
644 2900000 0x0>;
645 };
663 }; 646 };
664}; 647};
diff --git a/arch/arm/boot/dts/href.dtsi b/arch/arm/boot/dts/href.dtsi
new file mode 100644
index 000000000000..592fb9dc35bd
--- /dev/null
+++ b/arch/arm/boot/dts/href.dtsi
@@ -0,0 +1,273 @@
1/*
2 * Copyright 2012 ST-Ericsson AB
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/include/ "dbx5x0.dtsi"
13
14/ {
15 memory {
16 reg = <0x00000000 0x20000000>;
17 };
18
19 gpio_keys {
20 compatible = "gpio-keys";
21 #address-cells = <1>;
22 #size-cells = <0>;
23
24 button@1 {
25 linux,code = <11>;
26 label = "SFH7741 Proximity Sensor";
27 };
28 };
29
30 soc-u9500 {
31 uart@80120000 {
32 status = "okay";
33 };
34
35 uart@80121000 {
36 status = "okay";
37 };
38
39 uart@80007000 {
40 status = "okay";
41 };
42
43 i2c@80004000 {
44 tc3589x@42 {
45 compatible = "tc3589x";
46 reg = <0x42>;
47 interrupt-parent = <&gpio6>;
48 interrupts = <25 0x1>;
49
50 interrupt-controller;
51 #interrupt-cells = <2>;
52
53 tc3589x_gpio: tc3589x_gpio {
54 compatible = "tc3589x-gpio";
55 interrupts = <0 0x1>;
56
57 interrupt-controller;
58 #interrupt-cells = <2>;
59 gpio-controller;
60 #gpio-cells = <2>;
61 };
62 };
63 };
64
65 i2c@80128000 {
66 lp5521@0x33 {
67 compatible = "lp5521";
68 reg = <0x33>;
69 };
70
71 lp5521@0x34 {
72 compatible = "lp5521";
73 reg = <0x34>;
74 };
75
76 bh1780@0x29 {
77 compatible = "rohm,bh1780gli";
78 reg = <0x33>;
79 };
80 };
81
82 // External Micro SD slot
83 sdi0_per1@80126000 {
84 arm,primecell-periphid = <0x10480180>;
85 max-frequency = <50000000>;
86 bus-width = <4>;
87 mmc-cap-sd-highspeed;
88 mmc-cap-mmc-highspeed;
89 vmmc-supply = <&ab8500_ldo_aux3_reg>;
90
91 cd-gpios = <&tc3589x_gpio 3 0x4>;
92
93 status = "okay";
94 };
95
96 // WLAN SDIO channel
97 sdi1_per2@80118000 {
98 arm,primecell-periphid = <0x10480180>;
99 max-frequency = <50000000>;
100 bus-width = <4>;
101
102 status = "okay";
103 };
104
105 // PoP:ed eMMC
106 sdi2_per3@80005000 {
107 arm,primecell-periphid = <0x10480180>;
108 max-frequency = <50000000>;
109 bus-width = <8>;
110 mmc-cap-mmc-highspeed;
111
112 status = "okay";
113 };
114
115 // On-board eMMC
116 sdi4_per2@80114000 {
117 arm,primecell-periphid = <0x10480180>;
118 max-frequency = <50000000>;
119 bus-width = <8>;
120 mmc-cap-mmc-highspeed;
121 vmmc-supply = <&ab8500_ldo_aux2_reg>;
122
123 status = "okay";
124 };
125
126 sound {
127 compatible = "stericsson,snd-soc-mop500";
128
129 stericsson,cpu-dai = <&msp1 &msp3>;
130 stericsson,audio-codec = <&codec>;
131 };
132
133 msp1: msp@80124000 {
134 status = "okay";
135 };
136
137 msp3: msp@80125000 {
138 status = "okay";
139 };
140
141 prcmu@80157000 {
142 db8500-prcmu-regulators {
143 db8500_vape_reg: db8500_vape {
144 regulator-name = "db8500-vape";
145 };
146
147 db8500_varm_reg: db8500_varm {
148 regulator-name = "db8500-varm";
149 };
150
151 db8500_vmodem_reg: db8500_vmodem {
152 regulator-name = "db8500-vmodem";
153 };
154
155 db8500_vpll_reg: db8500_vpll {
156 regulator-name = "db8500-vpll";
157 };
158
159 db8500_vsmps1_reg: db8500_vsmps1 {
160 regulator-name = "db8500-vsmps1";
161 };
162
163 db8500_vsmps2_reg: db8500_vsmps2 {
164 regulator-name = "db8500-vsmps2";
165 };
166
167 db8500_vsmps3_reg: db8500_vsmps3 {
168 regulator-name = "db8500-vsmps3";
169 };
170
171 db8500_vrf1_reg: db8500_vrf1 {
172 regulator-name = "db8500-vrf1";
173 };
174
175 db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
176 regulator-name = "db8500-sva-mmdsp";
177 };
178
179 db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
180 regulator-name = "db8500-sva-mmdsp-ret";
181 };
182
183 db8500_sva_pipe_reg: db8500_sva_pipe {
184 regulator-name = "db8500_sva_pipe";
185 };
186
187 db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
188 regulator-name = "db8500_sia_mmdsp";
189 };
190
191 db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
192 regulator-name = "db8500-sia-mmdsp-ret";
193 };
194
195 db8500_sia_pipe_reg: db8500_sia_pipe {
196 regulator-name = "db8500-sia-pipe";
197 };
198
199 db8500_sga_reg: db8500_sga {
200 regulator-name = "db8500-sga";
201 };
202
203 db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
204 regulator-name = "db8500-b2r2-mcde";
205 };
206
207 db8500_esram12_reg: db8500_esram12 {
208 regulator-name = "db8500-esram12";
209 };
210
211 db8500_esram12_ret_reg: db8500_esram12_ret {
212 regulator-name = "db8500-esram12-ret";
213 };
214
215 db8500_esram34_reg: db8500_esram34 {
216 regulator-name = "db8500-esram34";
217 };
218
219 db8500_esram34_ret_reg: db8500_esram34_ret {
220 regulator-name = "db8500-esram34-ret";
221 };
222 };
223
224 ab8500@5 {
225 ab8500-regulators {
226 ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
227 regulator-name = "V-DISPLAY";
228 };
229
230 ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
231 regulator-name = "V-eMMC1";
232 };
233
234 ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
235 regulator-name = "V-MMC-SD";
236 };
237
238 ab8500_ldo_initcore_reg: ab8500_ldo_initcore {
239 regulator-name = "V-INTCORE";
240 };
241
242 ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
243 regulator-name = "V-TVOUT";
244 };
245
246 ab8500_ldo_usb_reg: ab8500_ldo_usb {
247 regulator-name = "dummy";
248 };
249
250 ab8500_ldo_audio_reg: ab8500_ldo_audio {
251 regulator-name = "V-AUD";
252 };
253
254 ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
255 regulator-name = "V-AMIC1";
256 };
257
258 ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 {
259 regulator-name = "V-AMIC2";
260 };
261
262 ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
263 regulator-name = "V-DMIC";
264 };
265
266 ab8500_ldo_ana_reg: ab8500_ldo_ana {
267 regulator-name = "V-CSI/DSI";
268 };
269 };
270 };
271 };
272 };
273};
diff --git a/arch/arm/boot/dts/hrefprev60.dts b/arch/arm/boot/dts/hrefprev60.dts
new file mode 100644
index 000000000000..b398946fd64a
--- /dev/null
+++ b/arch/arm/boot/dts/hrefprev60.dts
@@ -0,0 +1,41 @@
1/*
2 * Copyright 2012 ST-Ericsson AB
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13/include/ "dbx5x0.dtsi"
14/include/ "href.dtsi"
15/include/ "stuib.dtsi"
16
17/ {
18 model = "ST-Ericsson HREF (pre-v60) platform with Device Tree";
19 compatible = "st-ericsson,mop500", "st-ericsson,u8500";
20
21 gpio_keys {
22 button@1 {
23 gpios = <&tc3589x_gpio 7 0x4>;
24 };
25 };
26
27 soc-u9500 {
28 i2c@80004000 {
29 tps61052@33 {
30 compatible = "tps61052";
31 reg = <0x33>;
32 };
33 };
34
35 i2c@80110000 {
36 bu21013_tp@0x5c {
37 reset-gpio = <&tc3589x_gpio 13 0x4>;
38 };
39 };
40 };
41};
diff --git a/arch/arm/boot/dts/hrefv60plus.dts b/arch/arm/boot/dts/hrefv60plus.dts
index 2131d77dc9c9..a01ac8f000d6 100644
--- a/arch/arm/boot/dts/hrefv60plus.dts
+++ b/arch/arm/boot/dts/hrefv60plus.dts
@@ -11,85 +11,24 @@
11 11
12/dts-v1/; 12/dts-v1/;
13/include/ "dbx5x0.dtsi" 13/include/ "dbx5x0.dtsi"
14/include/ "href.dtsi"
15/include/ "stuib.dtsi"
14 16
15/ { 17/ {
16 model = "ST-Ericsson HREF platform with Device Tree"; 18 model = "ST-Ericsson HREF (v60+) platform with Device Tree";
17 compatible = "st-ericsson,hrefv60+"; 19 compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
18 20
19 memory { 21 gpio_keys {
20 reg = <0x00000000 0x20000000>; 22 button@1 {
23 gpios = <&gpio6 25 0x4>;
24 };
21 }; 25 };
22 26
23 soc-u9500 { 27 soc-u9500 {
24 uart@80120000 { 28 i2c@80110000 {
25 status = "okay"; 29 bu21013_tp@0x5c {
26 }; 30 reset-gpio = <&gpio4 15 0x4>;
27
28 uart@80121000 {
29 status = "okay";
30 };
31
32 uart@80007000 {
33 status = "okay";
34 };
35
36 i2c@80004000 {
37 tc3589x@42 {
38 compatible = "tc3589x";
39 reg = <0x42>;
40 interrupt-parent = <&gpio6>;
41 interrupts = <25 0x1>;
42
43 interrupt-controller;
44 #interrupt-cells = <2>;
45
46 tc3589x_gpio: tc3589x_gpio {
47 compatible = "tc3589x-gpio";
48 interrupts = <0 0x1>;
49
50 interrupt-controller;
51 #interrupt-cells = <2>;
52 gpio-controller;
53 #gpio-cells = <2>;
54 };
55 };
56
57 tps61052@33 {
58 compatible = "tps61052";
59 reg = <0x33>;
60 };
61 };
62
63 i2c@80128000 {
64 lp5521@0x33 {
65 compatible = "lp5521";
66 reg = <0x33>;
67 };
68
69 lp5521@0x34 {
70 compatible = "lp5521";
71 reg = <0x34>;
72 }; 31 };
73
74 bh1780@0x29 {
75 compatible = "rohm,bh1780gli";
76 reg = <0x33>;
77 };
78 };
79
80 sound {
81 compatible = "stericsson,snd-soc-mop500";
82
83 stericsson,cpu-dai = <&msp1 &msp3>;
84 stericsson,audio-codec = <&codec>;
85 };
86
87 msp1: msp@80124000 {
88 status = "okay";
89 };
90
91 msp3: msp@80125000 {
92 status = "okay";
93 }; 32 };
94 }; 33 };
95}; 34};
diff --git a/arch/arm/boot/dts/snowball.dts b/arch/arm/boot/dts/snowball.dts
index 702c0baa6004..9e02a913eb62 100644
--- a/arch/arm/boot/dts/snowball.dts
+++ b/arch/arm/boot/dts/snowball.dts
@@ -14,7 +14,7 @@
14 14
15/ { 15/ {
16 model = "Calao Systems Snowball platform with device tree"; 16 model = "Calao Systems Snowball platform with device tree";
17 compatible = "calaosystems,snowball-a9500"; 17 compatible = "calaosystems,snowball-a9500", "st-ericsson,u9500";
18 18
19 memory { 19 memory {
20 reg = <0x00000000 0x20000000>; 20 reg = <0x00000000 0x20000000>;
@@ -120,10 +120,10 @@
120 }; 120 };
121 121
122 // External Micro SD slot 122 // External Micro SD slot
123 sdi@80126000 { 123 sdi0_per1@80126000 {
124 arm,primecell-periphid = <0x10480180>; 124 arm,primecell-periphid = <0x10480180>;
125 max-frequency = <50000000>; 125 max-frequency = <50000000>;
126 bus-width = <8>; 126 bus-width = <4>;
127 mmc-cap-mmc-highspeed; 127 mmc-cap-mmc-highspeed;
128 vmmc-supply = <&ab8500_ldo_aux3_reg>; 128 vmmc-supply = <&ab8500_ldo_aux3_reg>;
129 129
@@ -134,7 +134,7 @@
134 }; 134 };
135 135
136 // On-board eMMC 136 // On-board eMMC
137 sdi@80114000 { 137 sdi4_per2@80114000 {
138 arm,primecell-periphid = <0x10480180>; 138 arm,primecell-periphid = <0x10480180>;
139 max-frequency = <50000000>; 139 max-frequency = <50000000>;
140 bus-width = <8>; 140 bus-width = <8>;
@@ -183,5 +183,137 @@
183 reg = <0x33>; 183 reg = <0x33>;
184 }; 184 };
185 }; 185 };
186
187 prcmu@80157000 {
188 db8500-prcmu-regulators {
189 db8500_vape_reg: db8500_vape {
190 regulator-name = "db8500-vape";
191 };
192
193 db8500_varm_reg: db8500_varm {
194 regulator-name = "db8500-varm";
195 };
196
197 db8500_vmodem_reg: db8500_vmodem {
198 regulator-name = "db8500-vmodem";
199 };
200
201 db8500_vpll_reg: db8500_vpll {
202 regulator-name = "db8500-vpll";
203 };
204
205 db8500_vsmps1_reg: db8500_vsmps1 {
206 regulator-name = "db8500-vsmps1";
207 };
208
209 db8500_vsmps2_reg: db8500_vsmps2 {
210 regulator-name = "db8500-vsmps2";
211 };
212
213 db8500_vsmps3_reg: db8500_vsmps3 {
214 regulator-name = "db8500-vsmps3";
215 };
216
217 db8500_vrf1_reg: db8500_vrf1 {
218 regulator-name = "db8500-vrf1";
219 };
220
221 db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
222 regulator-name = "db8500-sva-mmdsp";
223 };
224
225 db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
226 regulator-name = "db8500-sva-mmdsp-ret";
227 };
228
229 db8500_sva_pipe_reg: db8500_sva_pipe {
230 regulator-name = "db8500_sva_pipe";
231 };
232
233 db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
234 regulator-name = "db8500_sia_mmdsp";
235 };
236
237 db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
238 regulator-name = "db8500-sia-mmdsp-ret";
239 };
240
241 db8500_sia_pipe_reg: db8500_sia_pipe {
242 regulator-name = "db8500-sia-pipe";
243 };
244
245 db8500_sga_reg: db8500_sga {
246 regulator-name = "db8500-sga";
247 };
248
249 db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
250 regulator-name = "db8500-b2r2-mcde";
251 };
252
253 db8500_esram12_reg: db8500_esram12 {
254 regulator-name = "db8500-esram12";
255 };
256
257 db8500_esram12_ret_reg: db8500_esram12_ret {
258 regulator-name = "db8500-esram12-ret";
259 };
260
261 db8500_esram34_reg: db8500_esram34 {
262 regulator-name = "db8500-esram34";
263 };
264
265 db8500_esram34_ret_reg: db8500_esram34_ret {
266 regulator-name = "db8500-esram34-ret";
267 };
268 };
269
270 ab8500@5 {
271 ab8500-regulators {
272 ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
273 regulator-name = "V-DISPLAY";
274 };
275
276 ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
277 regulator-name = "V-eMMC1";
278 };
279
280 ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
281 regulator-name = "V-MMC-SD";
282 };
283
284 ab8500_ldo_initcore_reg: ab8500_ldo_initcore {
285 regulator-name = "V-INTCORE";
286 };
287
288 ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
289 regulator-name = "V-TVOUT";
290 };
291
292 ab8500_ldo_usb_reg: ab8500_ldo_usb {
293 regulator-name = "dummy";
294 };
295
296 ab8500_ldo_audio_reg: ab8500_ldo_audio {
297 regulator-name = "V-AUD";
298 };
299
300 ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
301 regulator-name = "V-AMIC1";
302 };
303
304 ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 {
305 regulator-name = "V-AMIC2";
306 };
307
308 ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
309 regulator-name = "V-DMIC";
310 };
311
312 ab8500_ldo_ana_reg: ab8500_ldo_ana {
313 regulator-name = "V-CSI/DSI";
314 };
315 };
316 };
317 };
186 }; 318 };
187}; 319};
diff --git a/arch/arm/boot/dts/stuib.dtsi b/arch/arm/boot/dts/stuib.dtsi
new file mode 100644
index 000000000000..39446a247e79
--- /dev/null
+++ b/arch/arm/boot/dts/stuib.dtsi
@@ -0,0 +1,78 @@
1/*
2 * Copyright 2012 ST-Ericsson AB
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/ {
13 soc-u9500 {
14 i2c@80004000 {
15 stmpe1601: stmpe1601@40 {
16 compatible = "st,stmpe1601";
17 reg = <0x40>;
18 interrupts = <26 0x1>;
19 interrupt-parent = <&gpio6>;
20 interrupt-controller;
21
22 wakeup-source;
23 st,autosleep-timeout = <1024>;
24
25 stmpe_keypad {
26 compatible = "st,stmpe-keypad";
27
28 debounce-interval = <64>;
29 st,scan-count = <8>;
30 st,no-autorepeat;
31
32 linux,keymap = <0x205006b
33 0x4010074
34 0x3050072
35 0x1030004
36 0x502006a
37 0x500000a
38 0x5008b
39 0x706001c
40 0x405000b
41 0x6070003
42 0x3040067
43 0x303006c
44 0x60400e7
45 0x602009e
46 0x4020073
47 0x5050002
48 0x4030069
49 0x3020008>;
50 };
51 };
52 };
53
54 i2c@80110000 {
55 bu21013_tp@0x5c {
56 compatible = "rhom,bu21013_tp";
57 reg = <0x5c>;
58 touch-gpio = <&gpio2 20 0x4>;
59 avdd-supply = <&ab8500_ldo_aux1_reg>;
60
61 rhom,touch-max-x = <384>;
62 rhom,touch-max-y = <704>;
63 rhom,flip-y;
64 };
65
66 bu21013_tp@0x5d {
67 compatible = "rhom,bu21013_tp";
68 reg = <0x5d>;
69 touch-gpio = <&gpio2 20 0x4>;
70 avdd-supply = <&ab8500_ldo_aux1_reg>;
71
72 rhom,touch-max-x = <384>;
73 rhom,touch-max-y = <704>;
74 rhom,flip-y;
75 };
76 };
77 };
78};
diff --git a/arch/arm/configs/u8500_defconfig b/arch/arm/configs/u8500_defconfig
index da6845493caa..6fe7ede6f0c2 100644
--- a/arch/arm/configs/u8500_defconfig
+++ b/arch/arm/configs/u8500_defconfig
@@ -76,6 +76,7 @@ CONFIG_AB8500_CORE=y
76CONFIG_REGULATOR=y 76CONFIG_REGULATOR=y
77CONFIG_REGULATOR_AB8500=y 77CONFIG_REGULATOR_AB8500=y
78CONFIG_REGULATOR_FIXED_VOLTAGE=y 78CONFIG_REGULATOR_FIXED_VOLTAGE=y
79CONFIG_REGULATOR_GPIO=y
79# CONFIG_HID_SUPPORT is not set 80# CONFIG_HID_SUPPORT is not set
80CONFIG_USB_GADGET=y 81CONFIG_USB_GADGET=y
81CONFIG_AB8500_USB=y 82CONFIG_AB8500_USB=y
diff --git a/arch/arm/mach-ux500/board-mop500-stuib.c b/arch/arm/mach-ux500/board-mop500-stuib.c
index 8c979770d872..564f57d5d8a7 100644
--- a/arch/arm/mach-ux500/board-mop500-stuib.c
+++ b/arch/arm/mach-ux500/board-mop500-stuib.c
@@ -162,18 +162,6 @@ static struct bu21013_platform_device tsc_plat_device = {
162 .y_flip = true, 162 .y_flip = true,
163}; 163};
164 164
165static struct bu21013_platform_device tsc_plat2_device = {
166 .cs_en = bu21013_gpio_board_init,
167 .cs_dis = bu21013_gpio_board_exit,
168 .irq_read_val = bu21013_read_pin_val,
169 .irq = NOMADIK_GPIO_TO_IRQ(TOUCH_GPIO_PIN),
170 .touch_x_max = TOUCH_XMAX,
171 .touch_y_max = TOUCH_YMAX,
172 .ext_clk = false,
173 .x_flip = false,
174 .y_flip = true,
175};
176
177static struct i2c_board_info __initdata u8500_i2c3_devices_stuib[] = { 165static struct i2c_board_info __initdata u8500_i2c3_devices_stuib[] = {
178 { 166 {
179 I2C_BOARD_INFO("bu21013_tp", 0x5C), 167 I2C_BOARD_INFO("bu21013_tp", 0x5C),
@@ -181,21 +169,17 @@ static struct i2c_board_info __initdata u8500_i2c3_devices_stuib[] = {
181 }, 169 },
182 { 170 {
183 I2C_BOARD_INFO("bu21013_tp", 0x5D), 171 I2C_BOARD_INFO("bu21013_tp", 0x5D),
184 .platform_data = &tsc_plat2_device, 172 .platform_data = &tsc_plat_device,
185 }, 173 },
186 174
187}; 175};
188 176
189void __init mop500_stuib_init(void) 177void __init mop500_stuib_init(void)
190{ 178{
191 if (machine_is_hrefv60()) { 179 if (machine_is_hrefv60())
192 tsc_plat_device.cs_pin = HREFV60_TOUCH_RST_GPIO; 180 tsc_plat_device.cs_pin = HREFV60_TOUCH_RST_GPIO;
193 tsc_plat2_device.cs_pin = HREFV60_TOUCH_RST_GPIO; 181 else
194 } else {
195 tsc_plat_device.cs_pin = GPIO_BU21013_CS; 182 tsc_plat_device.cs_pin = GPIO_BU21013_CS;
196 tsc_plat2_device.cs_pin = GPIO_BU21013_CS;
197
198 }
199 183
200 mop500_uib_i2c_add(0, mop500_i2c0_devices_stuib, 184 mop500_uib_i2c_add(0, mop500_i2c0_devices_stuib,
201 ARRAY_SIZE(mop500_i2c0_devices_stuib)); 185 ARRAY_SIZE(mop500_i2c0_devices_stuib));
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index 416d436111f2..daa4237ac0dc 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -33,8 +33,6 @@
33#include <linux/smsc911x.h> 33#include <linux/smsc911x.h>
34#include <linux/gpio_keys.h> 34#include <linux/gpio_keys.h>
35#include <linux/delay.h> 35#include <linux/delay.h>
36#include <linux/of.h>
37#include <linux/of_platform.h>
38#include <linux/leds.h> 36#include <linux/leds.h>
39#include <linux/pinctrl/consumer.h> 37#include <linux/pinctrl/consumer.h>
40 38
@@ -464,7 +462,7 @@ static struct stedma40_chan_cfg ssp0_dma_cfg_tx = {
464}; 462};
465#endif 463#endif
466 464
467static struct pl022_ssp_controller ssp0_plat = { 465struct pl022_ssp_controller ssp0_plat = {
468 .bus_id = 0, 466 .bus_id = 0,
469#ifdef CONFIG_STE_DMA40 467#ifdef CONFIG_STE_DMA40
470 .enable_dma = 1, 468 .enable_dma = 1,
@@ -541,7 +539,7 @@ static struct stedma40_chan_cfg uart2_dma_cfg_tx = {
541}; 539};
542#endif 540#endif
543 541
544static struct amba_pl011_data uart0_plat = { 542struct amba_pl011_data uart0_plat = {
545#ifdef CONFIG_STE_DMA40 543#ifdef CONFIG_STE_DMA40
546 .dma_filter = stedma40_filter, 544 .dma_filter = stedma40_filter,
547 .dma_rx_param = &uart0_dma_cfg_rx, 545 .dma_rx_param = &uart0_dma_cfg_rx,
@@ -549,7 +547,7 @@ static struct amba_pl011_data uart0_plat = {
549#endif 547#endif
550}; 548};
551 549
552static struct amba_pl011_data uart1_plat = { 550struct amba_pl011_data uart1_plat = {
553#ifdef CONFIG_STE_DMA40 551#ifdef CONFIG_STE_DMA40
554 .dma_filter = stedma40_filter, 552 .dma_filter = stedma40_filter,
555 .dma_rx_param = &uart1_dma_cfg_rx, 553 .dma_rx_param = &uart1_dma_cfg_rx,
@@ -557,7 +555,7 @@ static struct amba_pl011_data uart1_plat = {
557#endif 555#endif
558}; 556};
559 557
560static struct amba_pl011_data uart2_plat = { 558struct amba_pl011_data uart2_plat = {
561#ifdef CONFIG_STE_DMA40 559#ifdef CONFIG_STE_DMA40
562 .dma_filter = stedma40_filter, 560 .dma_filter = stedma40_filter,
563 .dma_rx_param = &uart2_dma_cfg_rx, 561 .dma_rx_param = &uart2_dma_cfg_rx,
@@ -618,8 +616,6 @@ static void __init mop500_init_machine(void)
618 616
619 /* This board has full regulator constraints */ 617 /* This board has full regulator constraints */
620 regulator_has_full_constraints(); 618 regulator_has_full_constraints();
621
622 mop500_uib_init();
623} 619}
624 620
625static void __init snowball_init_machine(void) 621static void __init snowball_init_machine(void)
@@ -684,8 +680,6 @@ static void __init hrefv60_init_machine(void)
684 680
685 /* This board has full regulator constraints */ 681 /* This board has full regulator constraints */
686 regulator_has_full_constraints(); 682 regulator_has_full_constraints();
687
688 mop500_uib_init();
689} 683}
690 684
691MACHINE_START(U8500, "ST-Ericsson MOP500 platform") 685MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
@@ -721,135 +715,5 @@ MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")
721 .timer = &ux500_timer, 715 .timer = &ux500_timer,
722 .handle_irq = gic_handle_irq, 716 .handle_irq = gic_handle_irq,
723 .init_machine = snowball_init_machine, 717 .init_machine = snowball_init_machine,
724 .init_late = ux500_init_late, 718 .init_late = NULL,
725MACHINE_END
726
727#ifdef CONFIG_MACH_UX500_DT
728
729struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
730 /* Requires call-back bindings. */
731 OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata),
732 /* Requires DMA and call-back bindings. */
733 OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", &uart0_plat),
734 OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", &uart1_plat),
735 OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", &uart2_plat),
736 /* Requires DMA bindings. */
737 OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat),
738 OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data),
739 OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data),
740 OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2", &mop500_sdi2_data),
741 OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4", &mop500_sdi4_data),
742 /* Requires clock name bindings. */
743 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL),
744 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL),
745 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e000, "gpio.2", NULL),
746 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e080, "gpio.3", NULL),
747 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e100, "gpio.4", NULL),
748 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e180, "gpio.5", NULL),
749 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL),
750 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL),
751 OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL),
752 OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL),
753 OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL),
754 OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL),
755 OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL),
756 OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL),
757 /* Requires device name bindings. */
758 OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL),
759 /* Requires clock name and DMA bindings. */
760 OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000,
761 "ux500-msp-i2s.0", &msp0_platform_data),
762 OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000,
763 "ux500-msp-i2s.1", &msp1_platform_data),
764 OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000,
765 "ux500-msp-i2s.2", &msp2_platform_data),
766 OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
767 "ux500-msp-i2s.3", &msp3_platform_data),
768 {},
769};
770
771static const struct of_device_id u8500_local_bus_nodes[] = {
772 /* only create devices below soc node */
773 { .compatible = "stericsson,db8500", },
774 { .compatible = "stericsson,db8500-prcmu", },
775 { .compatible = "simple-bus"},
776 { },
777};
778
779static void __init u8500_init_machine(void)
780{
781 struct device *parent = NULL;
782 int i2c0_devs;
783 int i;
784
785 /* Pinmaps must be in place before devices register */
786 if (of_machine_is_compatible("st-ericsson,mop500"))
787 mop500_pinmaps_init();
788 else if (of_machine_is_compatible("calaosystems,snowball-a9500"))
789 snowball_pinmaps_init();
790 else if (of_machine_is_compatible("st-ericsson,hrefv60+"))
791 hrefv60_pinmaps_init();
792
793 parent = u8500_of_init_devices();
794
795 for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++)
796 mop500_platform_devs[i]->dev.parent = parent;
797
798 /* automatically probe child nodes of db8500 device */
799 of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent);
800
801 if (of_machine_is_compatible("st-ericsson,mop500")) {
802 mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR;
803
804 platform_add_devices(mop500_platform_devs,
805 ARRAY_SIZE(mop500_platform_devs));
806
807 mop500_sdi_init(parent);
808 mop500_audio_init(parent);
809 i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
810 i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
811 i2c_register_board_info(2, mop500_i2c2_devices,
812 ARRAY_SIZE(mop500_i2c2_devices));
813
814 mop500_uib_init();
815
816 } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
817 mop500_of_audio_init(parent);
818 } else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
819 /*
820 * The HREFv60 board removed a GPIO expander and routed
821 * all these GPIO pins to the internal GPIO controller
822 * instead.
823 */
824 mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO;
825 platform_add_devices(mop500_platform_devs,
826 ARRAY_SIZE(mop500_platform_devs));
827
828 mop500_uib_init();
829 }
830
831 /* This board has full regulator constraints */
832 regulator_has_full_constraints();
833}
834
835static const char * u8500_dt_board_compat[] = {
836 "calaosystems,snowball-a9500",
837 "st-ericsson,hrefv60+",
838 "st-ericsson,u8500",
839 "st-ericsson,mop500",
840 NULL,
841};
842
843
844DT_MACHINE_START(U8500_DT, "ST-Ericsson U8500 platform (Device Tree Support)")
845 .smp = smp_ops(ux500_smp_ops),
846 .map_io = u8500_map_io,
847 .init_irq = ux500_init_irq,
848 /* we re-use nomadik timer here */
849 .timer = &ux500_timer,
850 .handle_irq = gic_handle_irq,
851 .init_machine = u8500_init_machine,
852 .init_late = ux500_init_late,
853 .dt_compat = u8500_dt_board_compat,
854MACHINE_END 719MACHINE_END
855#endif
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h
index aca39a68712a..d77208232cbc 100644
--- a/arch/arm/mach-ux500/board-mop500.h
+++ b/arch/arm/mach-ux500/board-mop500.h
@@ -89,6 +89,10 @@ extern struct msp_i2s_platform_data msp1_platform_data;
89extern struct msp_i2s_platform_data msp2_platform_data; 89extern struct msp_i2s_platform_data msp2_platform_data;
90extern struct msp_i2s_platform_data msp3_platform_data; 90extern struct msp_i2s_platform_data msp3_platform_data;
91extern struct arm_pmu_platdata db8500_pmu_platdata; 91extern struct arm_pmu_platdata db8500_pmu_platdata;
92extern struct amba_pl011_data uart0_plat;
93extern struct amba_pl011_data uart1_plat;
94extern struct amba_pl011_data uart2_plat;
95extern struct pl022_ssp_controller ssp0_plat;
92 96
93extern void mop500_sdi_init(struct device *parent); 97extern void mop500_sdi_init(struct device *parent);
94extern void snowball_sdi_init(struct device *parent); 98extern void snowball_sdi_init(struct device *parent);
@@ -106,8 +110,4 @@ void mop500_of_audio_init(struct device *parent);
106int __init mop500_uib_init(void); 110int __init mop500_uib_init(void);
107void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, 111void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
108 unsigned n); 112 unsigned n);
109
110/* TODO: Once all pieces are DT:ed, remove completely. */
111struct device * __init u8500_of_init_devices(void);
112
113#endif 113#endif
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index bcdfe6b1d453..4a0c40abf2ab 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -17,9 +17,15 @@
17#include <linux/platform_device.h> 17#include <linux/platform_device.h>
18#include <linux/io.h> 18#include <linux/io.h>
19#include <linux/mfd/abx500/ab8500.h> 19#include <linux/mfd/abx500/ab8500.h>
20#include <linux/mfd/dbx500-prcmu.h>
21#include <linux/of.h>
22#include <linux/of_platform.h>
23#include <linux/regulator/machine.h>
20 24
21#include <asm/pmu.h> 25#include <asm/pmu.h>
22#include <asm/mach/map.h> 26#include <asm/mach/map.h>
27#include <asm/mach/arch.h>
28#include <asm/hardware/gic.h>
23#include <plat/gpio-nomadik.h> 29#include <plat/gpio-nomadik.h>
24#include <mach/hardware.h> 30#include <mach/hardware.h>
25#include <mach/setup.h> 31#include <mach/setup.h>
@@ -29,6 +35,7 @@
29 35
30#include "devices-db8500.h" 36#include "devices-db8500.h"
31#include "ste-dma40-db8500.h" 37#include "ste-dma40-db8500.h"
38#include "board-mop500.h"
32 39
33/* minimum static i/o mapping required to boot U8500 platforms */ 40/* minimum static i/o mapping required to boot U8500 platforms */
34static struct map_desc u8500_uart_io_desc[] __initdata = { 41static struct map_desc u8500_uart_io_desc[] __initdata = {
@@ -227,12 +234,12 @@ struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500)
227 return parent; 234 return parent;
228} 235}
229 236
237#ifdef CONFIG_MACH_UX500_DT
238
230/* TODO: Once all pieces are DT:ed, remove completely. */ 239/* TODO: Once all pieces are DT:ed, remove completely. */
231struct device * __init u8500_of_init_devices(void) 240static struct device * __init u8500_of_init_devices(void)
232{ 241{
233 struct device *parent; 242 struct device *parent = db8500_soc_device_init();
234
235 parent = db8500_soc_device_init();
236 243
237 db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); 244 db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg);
238 245
@@ -251,3 +258,96 @@ struct device * __init u8500_of_init_devices(void)
251 258
252 return parent; 259 return parent;
253} 260}
261
262static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
263 /* Requires call-back bindings. */
264 OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata),
265 /* Requires DMA and call-back bindings. */
266 OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", &uart0_plat),
267 OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", &uart1_plat),
268 OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", &uart2_plat),
269 /* Requires DMA bindings. */
270 OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat),
271 OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data),
272 OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data),
273 OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2", &mop500_sdi2_data),
274 OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4", &mop500_sdi4_data),
275 /* Requires clock name bindings. */
276 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL),
277 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL),
278 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e000, "gpio.2", NULL),
279 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e080, "gpio.3", NULL),
280 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e100, "gpio.4", NULL),
281 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e180, "gpio.5", NULL),
282 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL),
283 OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL),
284 OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL),
285 OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL),
286 OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL),
287 OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL),
288 OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL),
289 OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL),
290 /* Requires device name bindings. */
291 OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL),
292 /* Requires clock name and DMA bindings. */
293 OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000,
294 "ux500-msp-i2s.0", &msp0_platform_data),
295 OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000,
296 "ux500-msp-i2s.1", &msp1_platform_data),
297 OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000,
298 "ux500-msp-i2s.2", &msp2_platform_data),
299 OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
300 "ux500-msp-i2s.3", &msp3_platform_data),
301 {},
302};
303
304static const struct of_device_id u8500_local_bus_nodes[] = {
305 /* only create devices below soc node */
306 { .compatible = "stericsson,db8500", },
307 { .compatible = "stericsson,db8500-prcmu", },
308 { .compatible = "simple-bus"},
309 { },
310};
311
312static void __init u8500_init_machine(void)
313{
314 struct device *parent = NULL;
315
316 /* Pinmaps must be in place before devices register */
317 if (of_machine_is_compatible("st-ericsson,mop500"))
318 mop500_pinmaps_init();
319 else if (of_machine_is_compatible("calaosystems,snowball-a9500"))
320 snowball_pinmaps_init();
321 else if (of_machine_is_compatible("st-ericsson,hrefv60+"))
322 hrefv60_pinmaps_init();
323 else if (of_machine_is_compatible("st-ericsson,ccu9540")) {}
324 /* TODO: Add pinmaps for ccu9540 board. */
325
326 /* TODO: Export SoC, USB, cpu-freq and DMA40 */
327 parent = u8500_of_init_devices();
328
329 /* automatically probe child nodes of db8500 device */
330 of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent);
331}
332
333static const char * stericsson_dt_platform_compat[] = {
334 "st-ericsson,u8500",
335 "st-ericsson,u8540",
336 "st-ericsson,u9500",
337 "st-ericsson,u9540",
338 NULL,
339};
340
341DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)")
342 .smp = smp_ops(ux500_smp_ops),
343 .map_io = u8500_map_io,
344 .init_irq = ux500_init_irq,
345 /* we re-use nomadik timer here */
346 .timer = &ux500_timer,
347 .handle_irq = gic_handle_irq,
348 .init_machine = u8500_init_machine,
349 .init_late = NULL,
350 .dt_compat = stericsson_dt_platform_compat,
351MACHINE_END
352
353#endif
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c
index 1f3fbc2bb776..721e7b4275f3 100644
--- a/arch/arm/mach-ux500/cpu.c
+++ b/arch/arm/mach-ux500/cpu.c
@@ -26,6 +26,8 @@
26#include <mach/setup.h> 26#include <mach/setup.h>
27#include <mach/devices.h> 27#include <mach/devices.h>
28 28
29#include "board-mop500.h"
30
29void __iomem *_PRCMU_BASE; 31void __iomem *_PRCMU_BASE;
30 32
31/* 33/*
@@ -82,6 +84,7 @@ void __init ux500_init_irq(void)
82 84
83void __init ux500_init_late(void) 85void __init ux500_init_late(void)
84{ 86{
87 mop500_uib_init();
85} 88}
86 89
87static const char * __init ux500_get_machine(void) 90static const char * __init ux500_get_machine(void)