diff options
author | Olof Johansson <olof@lixom.net> | 2012-11-06 10:31:40 -0500 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-11-06 10:31:40 -0500 |
commit | 591d07bf13a009315340d4b65c7ffef6aaed6bca (patch) | |
tree | beaeacfd963c6e2edb77228d5c44d964922fcf14 | |
parent | 3d70f8c617a436c7146ecb81df2265b4626dfe89 (diff) | |
parent | f44c5fd12d8152e45585905422d03427754e1907 (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.txt | 28 | ||||
-rw-r--r-- | arch/arm/boot/dts/ccu9540.dts | 72 | ||||
-rw-r--r-- | arch/arm/boot/dts/dbx5x0.dtsi | 57 | ||||
-rw-r--r-- | arch/arm/boot/dts/href.dtsi | 273 | ||||
-rw-r--r-- | arch/arm/boot/dts/hrefprev60.dts | 41 | ||||
-rw-r--r-- | arch/arm/boot/dts/hrefv60plus.dts | 83 | ||||
-rw-r--r-- | arch/arm/boot/dts/snowball.dts | 140 | ||||
-rw-r--r-- | arch/arm/boot/dts/stuib.dtsi | 78 | ||||
-rw-r--r-- | arch/arm/configs/u8500_defconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-stuib.c | 22 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.c | 146 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.h | 8 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu-db8500.c | 108 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu.c | 3 |
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 | |||
3 | Required properties: | ||
4 | - compatible : "rohm,bu21013_tp" | ||
5 | - reg : I2C device address | ||
6 | |||
7 | Optional 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 | |||
15 | Example: | ||
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 | |||
76 | CONFIG_REGULATOR=y | 76 | CONFIG_REGULATOR=y |
77 | CONFIG_REGULATOR_AB8500=y | 77 | CONFIG_REGULATOR_AB8500=y |
78 | CONFIG_REGULATOR_FIXED_VOLTAGE=y | 78 | CONFIG_REGULATOR_FIXED_VOLTAGE=y |
79 | CONFIG_REGULATOR_GPIO=y | ||
79 | # CONFIG_HID_SUPPORT is not set | 80 | # CONFIG_HID_SUPPORT is not set |
80 | CONFIG_USB_GADGET=y | 81 | CONFIG_USB_GADGET=y |
81 | CONFIG_AB8500_USB=y | 82 | CONFIG_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 | ||
165 | static 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 | |||
177 | static struct i2c_board_info __initdata u8500_i2c3_devices_stuib[] = { | 165 | static 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 | ||
189 | void __init mop500_stuib_init(void) | 177 | void __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 | ||
467 | static struct pl022_ssp_controller ssp0_plat = { | 465 | struct 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 | ||
544 | static struct amba_pl011_data uart0_plat = { | 542 | struct 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 | ||
552 | static struct amba_pl011_data uart1_plat = { | 550 | struct 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 | ||
560 | static struct amba_pl011_data uart2_plat = { | 558 | struct 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 | ||
625 | static void __init snowball_init_machine(void) | 621 | static 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 | ||
691 | MACHINE_START(U8500, "ST-Ericsson MOP500 platform") | 685 | MACHINE_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, |
725 | MACHINE_END | ||
726 | |||
727 | #ifdef CONFIG_MACH_UX500_DT | ||
728 | |||
729 | struct 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 | |||
771 | static 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 | |||
779 | static 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 | |||
835 | static 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 | |||
844 | DT_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, | ||
854 | MACHINE_END | 719 | MACHINE_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; | |||
89 | extern struct msp_i2s_platform_data msp2_platform_data; | 89 | extern struct msp_i2s_platform_data msp2_platform_data; |
90 | extern struct msp_i2s_platform_data msp3_platform_data; | 90 | extern struct msp_i2s_platform_data msp3_platform_data; |
91 | extern struct arm_pmu_platdata db8500_pmu_platdata; | 91 | extern struct arm_pmu_platdata db8500_pmu_platdata; |
92 | extern struct amba_pl011_data uart0_plat; | ||
93 | extern struct amba_pl011_data uart1_plat; | ||
94 | extern struct amba_pl011_data uart2_plat; | ||
95 | extern struct pl022_ssp_controller ssp0_plat; | ||
92 | 96 | ||
93 | extern void mop500_sdi_init(struct device *parent); | 97 | extern void mop500_sdi_init(struct device *parent); |
94 | extern void snowball_sdi_init(struct device *parent); | 98 | extern void snowball_sdi_init(struct device *parent); |
@@ -106,8 +110,4 @@ void mop500_of_audio_init(struct device *parent); | |||
106 | int __init mop500_uib_init(void); | 110 | int __init mop500_uib_init(void); |
107 | void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, | 111 | void 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. */ | ||
111 | struct 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 */ |
34 | static struct map_desc u8500_uart_io_desc[] __initdata = { | 41 | static 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. */ |
231 | struct device * __init u8500_of_init_devices(void) | 240 | static 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 | |||
262 | static 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 | |||
304 | static 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 | |||
312 | static 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 | |||
333 | static 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 | |||
341 | DT_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, | ||
351 | MACHINE_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 | |||
29 | void __iomem *_PRCMU_BASE; | 31 | void __iomem *_PRCMU_BASE; |
30 | 32 | ||
31 | /* | 33 | /* |
@@ -82,6 +84,7 @@ void __init ux500_init_irq(void) | |||
82 | 84 | ||
83 | void __init ux500_init_late(void) | 85 | void __init ux500_init_late(void) |
84 | { | 86 | { |
87 | mop500_uib_init(); | ||
85 | } | 88 | } |
86 | 89 | ||
87 | static const char * __init ux500_get_machine(void) | 90 | static const char * __init ux500_get_machine(void) |