diff options
Diffstat (limited to 'arch/arm')
96 files changed, 1263 insertions, 825 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index fcedd612c54c..a39e3214ea3d 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -550,6 +550,8 @@ config ARCH_IXP4XX | |||
550 | select GENERIC_CLOCKEVENTS | 550 | select GENERIC_CLOCKEVENTS |
551 | select MIGHT_HAVE_PCI | 551 | select MIGHT_HAVE_PCI |
552 | select NEED_MACH_IO_H | 552 | select NEED_MACH_IO_H |
553 | select USB_EHCI_BIG_ENDIAN_MMIO | ||
554 | select USB_EHCI_BIG_ENDIAN_DESC | ||
553 | help | 555 | help |
554 | Support for Intel's IXP4XX (XScale) family of processors. | 556 | Support for Intel's IXP4XX (XScale) family of processors. |
555 | 557 | ||
diff --git a/arch/arm/boot/dts/at91sam9260.dtsi b/arch/arm/boot/dts/at91sam9260.dtsi index cb7bcc51608d..39253b9aedd1 100644 --- a/arch/arm/boot/dts/at91sam9260.dtsi +++ b/arch/arm/boot/dts/at91sam9260.dtsi | |||
@@ -322,6 +322,24 @@ | |||
322 | }; | 322 | }; |
323 | }; | 323 | }; |
324 | 324 | ||
325 | spi0 { | ||
326 | pinctrl_spi0: spi0-0 { | ||
327 | atmel,pins = | ||
328 | <0 0 0x1 0x0 /* PA0 periph A SPI0_MISO pin */ | ||
329 | 0 1 0x1 0x0 /* PA1 periph A SPI0_MOSI pin */ | ||
330 | 0 2 0x1 0x0>; /* PA2 periph A SPI0_SPCK pin */ | ||
331 | }; | ||
332 | }; | ||
333 | |||
334 | spi1 { | ||
335 | pinctrl_spi1: spi1-0 { | ||
336 | atmel,pins = | ||
337 | <1 0 0x1 0x0 /* PB0 periph A SPI1_MISO pin */ | ||
338 | 1 1 0x1 0x0 /* PB1 periph A SPI1_MOSI pin */ | ||
339 | 1 2 0x1 0x0>; /* PB2 periph A SPI1_SPCK pin */ | ||
340 | }; | ||
341 | }; | ||
342 | |||
325 | pioA: gpio@fffff400 { | 343 | pioA: gpio@fffff400 { |
326 | compatible = "atmel,at91rm9200-gpio"; | 344 | compatible = "atmel,at91rm9200-gpio"; |
327 | reg = <0xfffff400 0x200>; | 345 | reg = <0xfffff400 0x200>; |
@@ -471,6 +489,28 @@ | |||
471 | status = "disabled"; | 489 | status = "disabled"; |
472 | }; | 490 | }; |
473 | 491 | ||
492 | spi0: spi@fffc8000 { | ||
493 | #address-cells = <1>; | ||
494 | #size-cells = <0>; | ||
495 | compatible = "atmel,at91rm9200-spi"; | ||
496 | reg = <0xfffc8000 0x200>; | ||
497 | interrupts = <12 4 3>; | ||
498 | pinctrl-names = "default"; | ||
499 | pinctrl-0 = <&pinctrl_spi0>; | ||
500 | status = "disabled"; | ||
501 | }; | ||
502 | |||
503 | spi1: spi@fffcc000 { | ||
504 | #address-cells = <1>; | ||
505 | #size-cells = <0>; | ||
506 | compatible = "atmel,at91rm9200-spi"; | ||
507 | reg = <0xfffcc000 0x200>; | ||
508 | interrupts = <13 4 3>; | ||
509 | pinctrl-names = "default"; | ||
510 | pinctrl-0 = <&pinctrl_spi1>; | ||
511 | status = "disabled"; | ||
512 | }; | ||
513 | |||
474 | adc0: adc@fffe0000 { | 514 | adc0: adc@fffe0000 { |
475 | compatible = "atmel,at91sam9260-adc"; | 515 | compatible = "atmel,at91sam9260-adc"; |
476 | reg = <0xfffe0000 0x100>; | 516 | reg = <0xfffe0000 0x100>; |
diff --git a/arch/arm/boot/dts/at91sam9263.dtsi b/arch/arm/boot/dts/at91sam9263.dtsi index 271d4de026e9..94b58ab2cc08 100644 --- a/arch/arm/boot/dts/at91sam9263.dtsi +++ b/arch/arm/boot/dts/at91sam9263.dtsi | |||
@@ -303,6 +303,24 @@ | |||
303 | }; | 303 | }; |
304 | }; | 304 | }; |
305 | 305 | ||
306 | spi0 { | ||
307 | pinctrl_spi0: spi0-0 { | ||
308 | atmel,pins = | ||
309 | <0 0 0x2 0x0 /* PA0 periph B SPI0_MISO pin */ | ||
310 | 0 1 0x2 0x0 /* PA1 periph B SPI0_MOSI pin */ | ||
311 | 0 2 0x2 0x0>; /* PA2 periph B SPI0_SPCK pin */ | ||
312 | }; | ||
313 | }; | ||
314 | |||
315 | spi1 { | ||
316 | pinctrl_spi1: spi1-0 { | ||
317 | atmel,pins = | ||
318 | <1 12 0x1 0x0 /* PB12 periph A SPI1_MISO pin */ | ||
319 | 1 13 0x1 0x0 /* PB13 periph A SPI1_MOSI pin */ | ||
320 | 1 14 0x1 0x0>; /* PB14 periph A SPI1_SPCK pin */ | ||
321 | }; | ||
322 | }; | ||
323 | |||
306 | pioA: gpio@fffff200 { | 324 | pioA: gpio@fffff200 { |
307 | compatible = "atmel,at91rm9200-gpio"; | 325 | compatible = "atmel,at91rm9200-gpio"; |
308 | reg = <0xfffff200 0x200>; | 326 | reg = <0xfffff200 0x200>; |
@@ -462,6 +480,28 @@ | |||
462 | reg = <0xfffffd40 0x10>; | 480 | reg = <0xfffffd40 0x10>; |
463 | status = "disabled"; | 481 | status = "disabled"; |
464 | }; | 482 | }; |
483 | |||
484 | spi0: spi@fffa4000 { | ||
485 | #address-cells = <1>; | ||
486 | #size-cells = <0>; | ||
487 | compatible = "atmel,at91rm9200-spi"; | ||
488 | reg = <0xfffa4000 0x200>; | ||
489 | interrupts = <14 4 3>; | ||
490 | pinctrl-names = "default"; | ||
491 | pinctrl-0 = <&pinctrl_spi0>; | ||
492 | status = "disabled"; | ||
493 | }; | ||
494 | |||
495 | spi1: spi@fffa8000 { | ||
496 | #address-cells = <1>; | ||
497 | #size-cells = <0>; | ||
498 | compatible = "atmel,at91rm9200-spi"; | ||
499 | reg = <0xfffa8000 0x200>; | ||
500 | interrupts = <15 4 3>; | ||
501 | pinctrl-names = "default"; | ||
502 | pinctrl-0 = <&pinctrl_spi1>; | ||
503 | status = "disabled"; | ||
504 | }; | ||
465 | }; | 505 | }; |
466 | 506 | ||
467 | nand0: nand@40000000 { | 507 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/at91sam9263ek.dts b/arch/arm/boot/dts/at91sam9263ek.dts index 1eb08728f527..a14e424b2e81 100644 --- a/arch/arm/boot/dts/at91sam9263ek.dts +++ b/arch/arm/boot/dts/at91sam9263ek.dts | |||
@@ -79,6 +79,16 @@ | |||
79 | }; | 79 | }; |
80 | }; | 80 | }; |
81 | }; | 81 | }; |
82 | |||
83 | spi0: spi@fffa4000 { | ||
84 | status = "okay"; | ||
85 | cs-gpios = <&pioA 5 0>, <0>, <0>, <0>; | ||
86 | mtd_dataflash@0 { | ||
87 | compatible = "atmel,at45", "atmel,dataflash"; | ||
88 | spi-max-frequency = <50000000>; | ||
89 | reg = <0>; | ||
90 | }; | ||
91 | }; | ||
82 | }; | 92 | }; |
83 | 93 | ||
84 | nand0: nand@40000000 { | 94 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi index da15e83e7f17..23d1f468f27f 100644 --- a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi +++ b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi | |||
@@ -96,6 +96,16 @@ | |||
96 | status = "okay"; | 96 | status = "okay"; |
97 | pinctrl-0 = <&pinctrl_ssc0_tx>; | 97 | pinctrl-0 = <&pinctrl_ssc0_tx>; |
98 | }; | 98 | }; |
99 | |||
100 | spi0: spi@fffc8000 { | ||
101 | status = "okay"; | ||
102 | cs-gpios = <0>, <&pioC 11 0>, <0>, <0>; | ||
103 | mtd_dataflash@0 { | ||
104 | compatible = "atmel,at45", "atmel,dataflash"; | ||
105 | spi-max-frequency = <50000000>; | ||
106 | reg = <1>; | ||
107 | }; | ||
108 | }; | ||
99 | }; | 109 | }; |
100 | 110 | ||
101 | nand0: nand@40000000 { | 111 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/at91sam9g45.dtsi b/arch/arm/boot/dts/at91sam9g45.dtsi index 6b1d4cab24c2..cfdf429578b5 100644 --- a/arch/arm/boot/dts/at91sam9g45.dtsi +++ b/arch/arm/boot/dts/at91sam9g45.dtsi | |||
@@ -322,6 +322,24 @@ | |||
322 | }; | 322 | }; |
323 | }; | 323 | }; |
324 | 324 | ||
325 | spi0 { | ||
326 | pinctrl_spi0: spi0-0 { | ||
327 | atmel,pins = | ||
328 | <1 0 0x1 0x0 /* PB0 periph A SPI0_MISO pin */ | ||
329 | 1 1 0x1 0x0 /* PB1 periph A SPI0_MOSI pin */ | ||
330 | 1 2 0x1 0x0>; /* PB2 periph A SPI0_SPCK pin */ | ||
331 | }; | ||
332 | }; | ||
333 | |||
334 | spi1 { | ||
335 | pinctrl_spi1: spi1-0 { | ||
336 | atmel,pins = | ||
337 | <1 14 0x1 0x0 /* PB14 periph A SPI1_MISO pin */ | ||
338 | 1 15 0x1 0x0 /* PB15 periph A SPI1_MOSI pin */ | ||
339 | 1 16 0x1 0x0>; /* PB16 periph A SPI1_SPCK pin */ | ||
340 | }; | ||
341 | }; | ||
342 | |||
325 | pioA: gpio@fffff200 { | 343 | pioA: gpio@fffff200 { |
326 | compatible = "atmel,at91rm9200-gpio"; | 344 | compatible = "atmel,at91rm9200-gpio"; |
327 | reg = <0xfffff200 0x200>; | 345 | reg = <0xfffff200 0x200>; |
@@ -531,6 +549,28 @@ | |||
531 | reg = <0xfffffd40 0x10>; | 549 | reg = <0xfffffd40 0x10>; |
532 | status = "disabled"; | 550 | status = "disabled"; |
533 | }; | 551 | }; |
552 | |||
553 | spi0: spi@fffa4000 { | ||
554 | #address-cells = <1>; | ||
555 | #size-cells = <0>; | ||
556 | compatible = "atmel,at91rm9200-spi"; | ||
557 | reg = <0xfffa4000 0x200>; | ||
558 | interrupts = <14 4 3>; | ||
559 | pinctrl-names = "default"; | ||
560 | pinctrl-0 = <&pinctrl_spi0>; | ||
561 | status = "disabled"; | ||
562 | }; | ||
563 | |||
564 | spi1: spi@fffa8000 { | ||
565 | #address-cells = <1>; | ||
566 | #size-cells = <0>; | ||
567 | compatible = "atmel,at91rm9200-spi"; | ||
568 | reg = <0xfffa8000 0x200>; | ||
569 | interrupts = <15 4 3>; | ||
570 | pinctrl-names = "default"; | ||
571 | pinctrl-0 = <&pinctrl_spi1>; | ||
572 | status = "disabled"; | ||
573 | }; | ||
534 | }; | 574 | }; |
535 | 575 | ||
536 | nand0: nand@40000000 { | 576 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/at91sam9m10g45ek.dts b/arch/arm/boot/dts/at91sam9m10g45ek.dts index 20c31913c270..92c52a7d70bc 100644 --- a/arch/arm/boot/dts/at91sam9m10g45ek.dts +++ b/arch/arm/boot/dts/at91sam9m10g45ek.dts | |||
@@ -102,6 +102,16 @@ | |||
102 | }; | 102 | }; |
103 | }; | 103 | }; |
104 | }; | 104 | }; |
105 | |||
106 | spi0: spi@fffa4000{ | ||
107 | status = "okay"; | ||
108 | cs-gpios = <&pioB 3 0>, <0>, <0>, <0>; | ||
109 | mtd_dataflash@0 { | ||
110 | compatible = "atmel,at45", "atmel,dataflash"; | ||
111 | spi-max-frequency = <13000000>; | ||
112 | reg = <0>; | ||
113 | }; | ||
114 | }; | ||
105 | }; | 115 | }; |
106 | 116 | ||
107 | nand0: nand@40000000 { | 117 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/at91sam9n12.dtsi b/arch/arm/boot/dts/at91sam9n12.dtsi index 7750f98dd764..b2961f1ea51b 100644 --- a/arch/arm/boot/dts/at91sam9n12.dtsi +++ b/arch/arm/boot/dts/at91sam9n12.dtsi | |||
@@ -261,6 +261,24 @@ | |||
261 | }; | 261 | }; |
262 | }; | 262 | }; |
263 | 263 | ||
264 | spi0 { | ||
265 | pinctrl_spi0: spi0-0 { | ||
266 | atmel,pins = | ||
267 | <0 11 0x1 0x0 /* PA11 periph A SPI0_MISO pin */ | ||
268 | 0 12 0x1 0x0 /* PA12 periph A SPI0_MOSI pin */ | ||
269 | 0 13 0x1 0x0>; /* PA13 periph A SPI0_SPCK pin */ | ||
270 | }; | ||
271 | }; | ||
272 | |||
273 | spi1 { | ||
274 | pinctrl_spi1: spi1-0 { | ||
275 | atmel,pins = | ||
276 | <0 21 0x2 0x0 /* PA21 periph B SPI1_MISO pin */ | ||
277 | 0 22 0x2 0x0 /* PA22 periph B SPI1_MOSI pin */ | ||
278 | 0 23 0x2 0x0>; /* PA23 periph B SPI1_SPCK pin */ | ||
279 | }; | ||
280 | }; | ||
281 | |||
264 | pioA: gpio@fffff400 { | 282 | pioA: gpio@fffff400 { |
265 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; | 283 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; |
266 | reg = <0xfffff400 0x200>; | 284 | reg = <0xfffff400 0x200>; |
@@ -373,6 +391,28 @@ | |||
373 | #size-cells = <0>; | 391 | #size-cells = <0>; |
374 | status = "disabled"; | 392 | status = "disabled"; |
375 | }; | 393 | }; |
394 | |||
395 | spi0: spi@f0000000 { | ||
396 | #address-cells = <1>; | ||
397 | #size-cells = <0>; | ||
398 | compatible = "atmel,at91rm9200-spi"; | ||
399 | reg = <0xf0000000 0x100>; | ||
400 | interrupts = <13 4 3>; | ||
401 | pinctrl-names = "default"; | ||
402 | pinctrl-0 = <&pinctrl_spi0>; | ||
403 | status = "disabled"; | ||
404 | }; | ||
405 | |||
406 | spi1: spi@f0004000 { | ||
407 | #address-cells = <1>; | ||
408 | #size-cells = <0>; | ||
409 | compatible = "atmel,at91rm9200-spi"; | ||
410 | reg = <0xf0004000 0x100>; | ||
411 | interrupts = <14 4 3>; | ||
412 | pinctrl-names = "default"; | ||
413 | pinctrl-0 = <&pinctrl_spi1>; | ||
414 | status = "disabled"; | ||
415 | }; | ||
376 | }; | 416 | }; |
377 | 417 | ||
378 | nand0: nand@40000000 { | 418 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/at91sam9n12ek.dts b/arch/arm/boot/dts/at91sam9n12ek.dts index d400f8de4387..34c842b1efb2 100644 --- a/arch/arm/boot/dts/at91sam9n12ek.dts +++ b/arch/arm/boot/dts/at91sam9n12ek.dts | |||
@@ -67,6 +67,16 @@ | |||
67 | }; | 67 | }; |
68 | }; | 68 | }; |
69 | }; | 69 | }; |
70 | |||
71 | spi0: spi@f0000000 { | ||
72 | status = "okay"; | ||
73 | cs-gpios = <&pioA 14 0>, <0>, <0>, <0>; | ||
74 | m25p80@0 { | ||
75 | compatible = "atmel,at25df321a"; | ||
76 | spi-max-frequency = <50000000>; | ||
77 | reg = <0>; | ||
78 | }; | ||
79 | }; | ||
70 | }; | 80 | }; |
71 | 81 | ||
72 | nand0: nand@40000000 { | 82 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi index a98c0d50fbbe..347b438d47fa 100644 --- a/arch/arm/boot/dts/at91sam9x5.dtsi +++ b/arch/arm/boot/dts/at91sam9x5.dtsi | |||
@@ -343,6 +343,24 @@ | |||
343 | }; | 343 | }; |
344 | }; | 344 | }; |
345 | 345 | ||
346 | spi0 { | ||
347 | pinctrl_spi0: spi0-0 { | ||
348 | atmel,pins = | ||
349 | <0 11 0x1 0x0 /* PA11 periph A SPI0_MISO pin */ | ||
350 | 0 12 0x1 0x0 /* PA12 periph A SPI0_MOSI pin */ | ||
351 | 0 13 0x1 0x0>; /* PA13 periph A SPI0_SPCK pin */ | ||
352 | }; | ||
353 | }; | ||
354 | |||
355 | spi1 { | ||
356 | pinctrl_spi1: spi1-0 { | ||
357 | atmel,pins = | ||
358 | <0 21 0x2 0x0 /* PA21 periph B SPI1_MISO pin */ | ||
359 | 0 22 0x2 0x0 /* PA22 periph B SPI1_MOSI pin */ | ||
360 | 0 23 0x2 0x0>; /* PA23 periph B SPI1_SPCK pin */ | ||
361 | }; | ||
362 | }; | ||
363 | |||
346 | pioA: gpio@fffff400 { | 364 | pioA: gpio@fffff400 { |
347 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; | 365 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; |
348 | reg = <0xfffff400 0x200>; | 366 | reg = <0xfffff400 0x200>; |
@@ -529,6 +547,28 @@ | |||
529 | trigger-value = <0x6>; | 547 | trigger-value = <0x6>; |
530 | }; | 548 | }; |
531 | }; | 549 | }; |
550 | |||
551 | spi0: spi@f0000000 { | ||
552 | #address-cells = <1>; | ||
553 | #size-cells = <0>; | ||
554 | compatible = "atmel,at91rm9200-spi"; | ||
555 | reg = <0xf0000000 0x100>; | ||
556 | interrupts = <13 4 3>; | ||
557 | pinctrl-names = "default"; | ||
558 | pinctrl-0 = <&pinctrl_spi0>; | ||
559 | status = "disabled"; | ||
560 | }; | ||
561 | |||
562 | spi1: spi@f0004000 { | ||
563 | #address-cells = <1>; | ||
564 | #size-cells = <0>; | ||
565 | compatible = "atmel,at91rm9200-spi"; | ||
566 | reg = <0xf0004000 0x100>; | ||
567 | interrupts = <14 4 3>; | ||
568 | pinctrl-names = "default"; | ||
569 | pinctrl-0 = <&pinctrl_spi1>; | ||
570 | status = "disabled"; | ||
571 | }; | ||
532 | }; | 572 | }; |
533 | 573 | ||
534 | nand0: nand@40000000 { | 574 | nand0: nand@40000000 { |
diff --git a/arch/arm/boot/dts/at91sam9x5ek.dtsi b/arch/arm/boot/dts/at91sam9x5ek.dtsi index 8a7cf1d9cf5d..09f5e667ca7a 100644 --- a/arch/arm/boot/dts/at91sam9x5ek.dtsi +++ b/arch/arm/boot/dts/at91sam9x5ek.dtsi | |||
@@ -84,6 +84,16 @@ | |||
84 | }; | 84 | }; |
85 | }; | 85 | }; |
86 | }; | 86 | }; |
87 | |||
88 | spi0: spi@f0000000 { | ||
89 | status = "okay"; | ||
90 | cs-gpios = <&pioA 14 0>, <0>, <0>, <0>; | ||
91 | m25p80@0 { | ||
92 | compatible = "atmel,at25df321a"; | ||
93 | spi-max-frequency = <50000000>; | ||
94 | reg = <0>; | ||
95 | }; | ||
96 | }; | ||
87 | }; | 97 | }; |
88 | 98 | ||
89 | usb0: ohci@00600000 { | 99 | usb0: ohci@00600000 { |
diff --git a/arch/arm/boot/dts/imx28-m28evk.dts b/arch/arm/boot/dts/imx28-m28evk.dts index 6ce3d17c3a29..fd36e1cca104 100644 --- a/arch/arm/boot/dts/imx28-m28evk.dts +++ b/arch/arm/boot/dts/imx28-m28evk.dts | |||
@@ -152,7 +152,6 @@ | |||
152 | i2c0: i2c@80058000 { | 152 | i2c0: i2c@80058000 { |
153 | pinctrl-names = "default"; | 153 | pinctrl-names = "default"; |
154 | pinctrl-0 = <&i2c0_pins_a>; | 154 | pinctrl-0 = <&i2c0_pins_a>; |
155 | clock-frequency = <400000>; | ||
156 | status = "okay"; | 155 | status = "okay"; |
157 | 156 | ||
158 | sgtl5000: codec@0a { | 157 | sgtl5000: codec@0a { |
diff --git a/arch/arm/boot/dts/imx28-sps1.dts b/arch/arm/boot/dts/imx28-sps1.dts index e6cde8aa7fff..6c6a5442800a 100644 --- a/arch/arm/boot/dts/imx28-sps1.dts +++ b/arch/arm/boot/dts/imx28-sps1.dts | |||
@@ -70,7 +70,6 @@ | |||
70 | i2c0: i2c@80058000 { | 70 | i2c0: i2c@80058000 { |
71 | pinctrl-names = "default"; | 71 | pinctrl-names = "default"; |
72 | pinctrl-0 = <&i2c0_pins_a>; | 72 | pinctrl-0 = <&i2c0_pins_a>; |
73 | clock-frequency = <400000>; | ||
74 | status = "okay"; | 73 | status = "okay"; |
75 | 74 | ||
76 | rtc: rtc@51 { | 75 | rtc: rtc@51 { |
diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi index 06ec460b4581..281a223591ff 100644 --- a/arch/arm/boot/dts/imx6qdl.dtsi +++ b/arch/arm/boot/dts/imx6qdl.dtsi | |||
@@ -91,6 +91,7 @@ | |||
91 | compatible = "arm,cortex-a9-twd-timer"; | 91 | compatible = "arm,cortex-a9-twd-timer"; |
92 | reg = <0x00a00600 0x20>; | 92 | reg = <0x00a00600 0x20>; |
93 | interrupts = <1 13 0xf01>; | 93 | interrupts = <1 13 0xf01>; |
94 | clocks = <&clks 15>; | ||
94 | }; | 95 | }; |
95 | 96 | ||
96 | L2: l2-cache@00a02000 { | 97 | L2: l2-cache@00a02000 { |
diff --git a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts index 93c3afbef9ee..3694e94f6e99 100644 --- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts +++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts | |||
@@ -96,11 +96,11 @@ | |||
96 | marvell,function = "gpio"; | 96 | marvell,function = "gpio"; |
97 | }; | 97 | }; |
98 | pmx_led_rebuild_brt_ctrl_1: pmx-led-rebuild-brt-ctrl-1 { | 98 | pmx_led_rebuild_brt_ctrl_1: pmx-led-rebuild-brt-ctrl-1 { |
99 | marvell,pins = "mpp44"; | 99 | marvell,pins = "mpp46"; |
100 | marvell,function = "gpio"; | 100 | marvell,function = "gpio"; |
101 | }; | 101 | }; |
102 | pmx_led_rebuild_brt_ctrl_2: pmx-led-rebuild-brt-ctrl-2 { | 102 | pmx_led_rebuild_brt_ctrl_2: pmx-led-rebuild-brt-ctrl-2 { |
103 | marvell,pins = "mpp45"; | 103 | marvell,pins = "mpp47"; |
104 | marvell,function = "gpio"; | 104 | marvell,function = "gpio"; |
105 | }; | 105 | }; |
106 | 106 | ||
@@ -157,14 +157,14 @@ | |||
157 | gpios = <&gpio0 16 0>; | 157 | gpios = <&gpio0 16 0>; |
158 | linux,default-trigger = "default-on"; | 158 | linux,default-trigger = "default-on"; |
159 | }; | 159 | }; |
160 | health_led1 { | 160 | rebuild_led { |
161 | label = "status:white:rebuild_led"; | ||
162 | gpios = <&gpio1 4 0>; | ||
163 | }; | ||
164 | health_led { | ||
161 | label = "status:red:health_led"; | 165 | label = "status:red:health_led"; |
162 | gpios = <&gpio1 5 0>; | 166 | gpios = <&gpio1 5 0>; |
163 | }; | 167 | }; |
164 | health_led2 { | ||
165 | label = "status:white:health_led"; | ||
166 | gpios = <&gpio1 4 0>; | ||
167 | }; | ||
168 | backup_led { | 168 | backup_led { |
169 | label = "status:blue:backup_led"; | 169 | label = "status:blue:backup_led"; |
170 | gpios = <&gpio0 15 0>; | 170 | gpios = <&gpio0 15 0>; |
diff --git a/arch/arm/boot/dts/msm8660-surf.dts b/arch/arm/boot/dts/msm8660-surf.dts index 31f2157cd7d7..67f8670c4d6a 100644 --- a/arch/arm/boot/dts/msm8660-surf.dts +++ b/arch/arm/boot/dts/msm8660-surf.dts | |||
@@ -38,4 +38,10 @@ | |||
38 | <0x19c00000 0x1000>; | 38 | <0x19c00000 0x1000>; |
39 | interrupts = <0 195 0x0>; | 39 | interrupts = <0 195 0x0>; |
40 | }; | 40 | }; |
41 | |||
42 | qcom,ssbi@500000 { | ||
43 | compatible = "qcom,ssbi"; | ||
44 | reg = <0x500000 0x1000>; | ||
45 | qcom,controller-type = "pmic-arbiter"; | ||
46 | }; | ||
41 | }; | 47 | }; |
diff --git a/arch/arm/boot/dts/msm8960-cdp.dts b/arch/arm/boot/dts/msm8960-cdp.dts index 9e621b5ad3dd..c9b09a813a4b 100644 --- a/arch/arm/boot/dts/msm8960-cdp.dts +++ b/arch/arm/boot/dts/msm8960-cdp.dts | |||
@@ -38,4 +38,10 @@ | |||
38 | <0x16400000 0x1000>; | 38 | <0x16400000 0x1000>; |
39 | interrupts = <0 154 0x0>; | 39 | interrupts = <0 154 0x0>; |
40 | }; | 40 | }; |
41 | |||
42 | qcom,ssbi@500000 { | ||
43 | compatible = "qcom,ssbi"; | ||
44 | reg = <0x500000 0x1000>; | ||
45 | qcom,controller-type = "pmic-arbiter"; | ||
46 | }; | ||
41 | }; | 47 | }; |
diff --git a/arch/arm/boot/dts/spear1310.dtsi b/arch/arm/boot/dts/spear1310.dtsi index 1513c1927cc8..122ae94076c8 100644 --- a/arch/arm/boot/dts/spear1310.dtsi +++ b/arch/arm/boot/dts/spear1310.dtsi | |||
@@ -89,7 +89,7 @@ | |||
89 | pinmux: pinmux@e0700000 { | 89 | pinmux: pinmux@e0700000 { |
90 | compatible = "st,spear1310-pinmux"; | 90 | compatible = "st,spear1310-pinmux"; |
91 | reg = <0xe0700000 0x1000>; | 91 | reg = <0xe0700000 0x1000>; |
92 | #gpio-range-cells = <2>; | 92 | #gpio-range-cells = <3>; |
93 | }; | 93 | }; |
94 | 94 | ||
95 | apb { | 95 | apb { |
@@ -212,7 +212,7 @@ | |||
212 | interrupt-controller; | 212 | interrupt-controller; |
213 | gpio-controller; | 213 | gpio-controller; |
214 | #gpio-cells = <2>; | 214 | #gpio-cells = <2>; |
215 | gpio-ranges = <&pinmux 0 246>; | 215 | gpio-ranges = <&pinmux 0 0 246>; |
216 | status = "disabled"; | 216 | status = "disabled"; |
217 | 217 | ||
218 | st-plgpio,ngpio = <246>; | 218 | st-plgpio,ngpio = <246>; |
diff --git a/arch/arm/boot/dts/spear1340.dtsi b/arch/arm/boot/dts/spear1340.dtsi index 34da11aa6795..c511c4772efd 100644 --- a/arch/arm/boot/dts/spear1340.dtsi +++ b/arch/arm/boot/dts/spear1340.dtsi | |||
@@ -63,7 +63,7 @@ | |||
63 | pinmux: pinmux@e0700000 { | 63 | pinmux: pinmux@e0700000 { |
64 | compatible = "st,spear1340-pinmux"; | 64 | compatible = "st,spear1340-pinmux"; |
65 | reg = <0xe0700000 0x1000>; | 65 | reg = <0xe0700000 0x1000>; |
66 | #gpio-range-cells = <2>; | 66 | #gpio-range-cells = <3>; |
67 | }; | 67 | }; |
68 | 68 | ||
69 | pwm: pwm@e0180000 { | 69 | pwm: pwm@e0180000 { |
@@ -127,7 +127,7 @@ | |||
127 | interrupt-controller; | 127 | interrupt-controller; |
128 | gpio-controller; | 128 | gpio-controller; |
129 | #gpio-cells = <2>; | 129 | #gpio-cells = <2>; |
130 | gpio-ranges = <&pinmux 0 252>; | 130 | gpio-ranges = <&pinmux 0 0 252>; |
131 | status = "disabled"; | 131 | status = "disabled"; |
132 | 132 | ||
133 | st-plgpio,ngpio = <250>; | 133 | st-plgpio,ngpio = <250>; |
diff --git a/arch/arm/boot/dts/spear310.dtsi b/arch/arm/boot/dts/spear310.dtsi index ab45b8c81982..95372080eea6 100644 --- a/arch/arm/boot/dts/spear310.dtsi +++ b/arch/arm/boot/dts/spear310.dtsi | |||
@@ -25,7 +25,7 @@ | |||
25 | pinmux: pinmux@b4000000 { | 25 | pinmux: pinmux@b4000000 { |
26 | compatible = "st,spear310-pinmux"; | 26 | compatible = "st,spear310-pinmux"; |
27 | reg = <0xb4000000 0x1000>; | 27 | reg = <0xb4000000 0x1000>; |
28 | #gpio-range-cells = <2>; | 28 | #gpio-range-cells = <3>; |
29 | }; | 29 | }; |
30 | 30 | ||
31 | fsmc: flash@44000000 { | 31 | fsmc: flash@44000000 { |
@@ -102,7 +102,7 @@ | |||
102 | interrupt-controller; | 102 | interrupt-controller; |
103 | gpio-controller; | 103 | gpio-controller; |
104 | #gpio-cells = <2>; | 104 | #gpio-cells = <2>; |
105 | gpio-ranges = <&pinmux 0 102>; | 105 | gpio-ranges = <&pinmux 0 0 102>; |
106 | status = "disabled"; | 106 | status = "disabled"; |
107 | 107 | ||
108 | st-plgpio,ngpio = <102>; | 108 | st-plgpio,ngpio = <102>; |
diff --git a/arch/arm/boot/dts/spear320.dtsi b/arch/arm/boot/dts/spear320.dtsi index caa5520b1fd4..ffea342aeec9 100644 --- a/arch/arm/boot/dts/spear320.dtsi +++ b/arch/arm/boot/dts/spear320.dtsi | |||
@@ -24,7 +24,7 @@ | |||
24 | pinmux: pinmux@b3000000 { | 24 | pinmux: pinmux@b3000000 { |
25 | compatible = "st,spear320-pinmux"; | 25 | compatible = "st,spear320-pinmux"; |
26 | reg = <0xb3000000 0x1000>; | 26 | reg = <0xb3000000 0x1000>; |
27 | #gpio-range-cells = <2>; | 27 | #gpio-range-cells = <3>; |
28 | }; | 28 | }; |
29 | 29 | ||
30 | clcd@90000000 { | 30 | clcd@90000000 { |
@@ -130,7 +130,7 @@ | |||
130 | interrupt-controller; | 130 | interrupt-controller; |
131 | gpio-controller; | 131 | gpio-controller; |
132 | #gpio-cells = <2>; | 132 | #gpio-cells = <2>; |
133 | gpio-ranges = <&pinmux 0 102>; | 133 | gpio-ranges = <&pinmux 0 0 102>; |
134 | status = "disabled"; | 134 | status = "disabled"; |
135 | 135 | ||
136 | st-plgpio,ngpio = <102>; | 136 | st-plgpio,ngpio = <102>; |
diff --git a/arch/arm/boot/dts/vt8500-bv07.dts b/arch/arm/boot/dts/vt8500-bv07.dts index 567cf4e8ab84..877b33afa7ed 100644 --- a/arch/arm/boot/dts/vt8500-bv07.dts +++ b/arch/arm/boot/dts/vt8500-bv07.dts | |||
@@ -11,26 +11,22 @@ | |||
11 | 11 | ||
12 | / { | 12 | / { |
13 | model = "Benign BV07 Netbook"; | 13 | model = "Benign BV07 Netbook"; |
14 | }; | ||
14 | 15 | ||
15 | /* | 16 | &fb { |
16 | * Display node is based on Sascha Hauer's patch on dri-devel. | 17 | bits-per-pixel = <16>; |
17 | * Added a bpp property to calculate the size of the framebuffer | 18 | display-timings { |
18 | * until the binding is formalized. | 19 | native-mode = <&timing0>; |
19 | */ | 20 | timing0: 800x480 { |
20 | display: display@0 { | 21 | clock-frequency = <0>; /* unused but required */ |
21 | modes { | 22 | hactive = <800>; |
22 | mode0: mode@0 { | 23 | vactive = <480>; |
23 | hactive = <800>; | 24 | hfront-porch = <40>; |
24 | vactive = <480>; | 25 | hback-porch = <88>; |
25 | hback-porch = <88>; | 26 | hsync-len = <0>; |
26 | hfront-porch = <40>; | 27 | vback-porch = <32>; |
27 | hsync-len = <0>; | 28 | vfront-porch = <11>; |
28 | vback-porch = <32>; | 29 | vsync-len = <1>; |
29 | vfront-porch = <11>; | ||
30 | vsync-len = <1>; | ||
31 | clock = <0>; /* unused but required */ | ||
32 | bpp = <16>; /* non-standard but required */ | ||
33 | }; | ||
34 | }; | 30 | }; |
35 | }; | 31 | }; |
36 | }; | 32 | }; |
diff --git a/arch/arm/boot/dts/vt8500.dtsi b/arch/arm/boot/dts/vt8500.dtsi index cf31ced46602..68c8dc644383 100644 --- a/arch/arm/boot/dts/vt8500.dtsi +++ b/arch/arm/boot/dts/vt8500.dtsi | |||
@@ -98,12 +98,10 @@ | |||
98 | interrupts = <43>; | 98 | interrupts = <43>; |
99 | }; | 99 | }; |
100 | 100 | ||
101 | fb@d800e400 { | 101 | fb: fb@d8050800 { |
102 | compatible = "via,vt8500-fb"; | 102 | compatible = "via,vt8500-fb"; |
103 | reg = <0xd800e400 0x400>; | 103 | reg = <0xd800e400 0x400>; |
104 | interrupts = <12>; | 104 | interrupts = <12>; |
105 | display = <&display>; | ||
106 | default-mode = <&mode0>; | ||
107 | }; | 105 | }; |
108 | 106 | ||
109 | ge_rops@d8050400 { | 107 | ge_rops@d8050400 { |
diff --git a/arch/arm/boot/dts/wm8505-ref.dts b/arch/arm/boot/dts/wm8505-ref.dts index fd4e248074c6..edd2cec3d37f 100644 --- a/arch/arm/boot/dts/wm8505-ref.dts +++ b/arch/arm/boot/dts/wm8505-ref.dts | |||
@@ -11,26 +11,22 @@ | |||
11 | 11 | ||
12 | / { | 12 | / { |
13 | model = "Wondermedia WM8505 Netbook"; | 13 | model = "Wondermedia WM8505 Netbook"; |
14 | }; | ||
14 | 15 | ||
15 | /* | 16 | &fb { |
16 | * Display node is based on Sascha Hauer's patch on dri-devel. | 17 | bits-per-pixel = <32>; |
17 | * Added a bpp property to calculate the size of the framebuffer | 18 | display-timings { |
18 | * until the binding is formalized. | 19 | native-mode = <&timing0>; |
19 | */ | 20 | timing0: 800x480 { |
20 | display: display@0 { | 21 | clock-frequency = <0>; /* unused but required */ |
21 | modes { | 22 | hactive = <800>; |
22 | mode0: mode@0 { | 23 | vactive = <480>; |
23 | hactive = <800>; | 24 | hfront-porch = <40>; |
24 | vactive = <480>; | 25 | hback-porch = <88>; |
25 | hback-porch = <88>; | 26 | hsync-len = <0>; |
26 | hfront-porch = <40>; | 27 | vback-porch = <32>; |
27 | hsync-len = <0>; | 28 | vfront-porch = <11>; |
28 | vback-porch = <32>; | 29 | vsync-len = <1>; |
29 | vfront-porch = <11>; | ||
30 | vsync-len = <1>; | ||
31 | clock = <0>; /* unused but required */ | ||
32 | bpp = <32>; /* non-standard but required */ | ||
33 | }; | ||
34 | }; | 30 | }; |
35 | }; | 31 | }; |
36 | }; | 32 | }; |
diff --git a/arch/arm/boot/dts/wm8505.dtsi b/arch/arm/boot/dts/wm8505.dtsi index e74a1c0fb9a2..bcf668d31b28 100644 --- a/arch/arm/boot/dts/wm8505.dtsi +++ b/arch/arm/boot/dts/wm8505.dtsi | |||
@@ -128,11 +128,9 @@ | |||
128 | interrupts = <0>; | 128 | interrupts = <0>; |
129 | }; | 129 | }; |
130 | 130 | ||
131 | fb@d8050800 { | 131 | fb: fb@d8050800 { |
132 | compatible = "wm,wm8505-fb"; | 132 | compatible = "wm,wm8505-fb"; |
133 | reg = <0xd8050800 0x200>; | 133 | reg = <0xd8050800 0x200>; |
134 | display = <&display>; | ||
135 | default-mode = <&mode0>; | ||
136 | }; | 134 | }; |
137 | 135 | ||
138 | ge_rops@d8050400 { | 136 | ge_rops@d8050400 { |
diff --git a/arch/arm/boot/dts/wm8650-mid.dts b/arch/arm/boot/dts/wm8650-mid.dts index cefd938f842f..61671a0d9ede 100644 --- a/arch/arm/boot/dts/wm8650-mid.dts +++ b/arch/arm/boot/dts/wm8650-mid.dts | |||
@@ -11,26 +11,24 @@ | |||
11 | 11 | ||
12 | / { | 12 | / { |
13 | model = "Wondermedia WM8650-MID Tablet"; | 13 | model = "Wondermedia WM8650-MID Tablet"; |
14 | }; | ||
15 | |||
16 | &fb { | ||
17 | bits-per-pixel = <16>; | ||
14 | 18 | ||
15 | /* | 19 | display-timings { |
16 | * Display node is based on Sascha Hauer's patch on dri-devel. | 20 | native-mode = <&timing0>; |
17 | * Added a bpp property to calculate the size of the framebuffer | 21 | timing0: 800x480 { |
18 | * until the binding is formalized. | 22 | clock-frequency = <0>; /* unused but required */ |
19 | */ | 23 | hactive = <800>; |
20 | display: display@0 { | 24 | vactive = <480>; |
21 | modes { | 25 | hfront-porch = <40>; |
22 | mode0: mode@0 { | 26 | hback-porch = <88>; |
23 | hactive = <800>; | 27 | hsync-len = <0>; |
24 | vactive = <480>; | 28 | vback-porch = <32>; |
25 | hback-porch = <88>; | 29 | vfront-porch = <11>; |
26 | hfront-porch = <40>; | 30 | vsync-len = <1>; |
27 | hsync-len = <0>; | ||
28 | vback-porch = <32>; | ||
29 | vfront-porch = <11>; | ||
30 | vsync-len = <1>; | ||
31 | clock = <0>; /* unused but required */ | ||
32 | bpp = <16>; /* non-standard but required */ | ||
33 | }; | ||
34 | }; | 31 | }; |
35 | }; | 32 | }; |
36 | }; | 33 | }; |
34 | |||
diff --git a/arch/arm/boot/dts/wm8650.dtsi b/arch/arm/boot/dts/wm8650.dtsi index db3c0a12e052..9313407bbc30 100644 --- a/arch/arm/boot/dts/wm8650.dtsi +++ b/arch/arm/boot/dts/wm8650.dtsi | |||
@@ -128,11 +128,9 @@ | |||
128 | interrupts = <43>; | 128 | interrupts = <43>; |
129 | }; | 129 | }; |
130 | 130 | ||
131 | fb@d8050800 { | 131 | fb: fb@d8050800 { |
132 | compatible = "wm,wm8505-fb"; | 132 | compatible = "wm,wm8505-fb"; |
133 | reg = <0xd8050800 0x200>; | 133 | reg = <0xd8050800 0x200>; |
134 | display = <&display>; | ||
135 | default-mode = <&mode0>; | ||
136 | }; | 134 | }; |
137 | 135 | ||
138 | ge_rops@d8050400 { | 136 | ge_rops@d8050400 { |
diff --git a/arch/arm/boot/dts/wm8850-w70v2.dts b/arch/arm/boot/dts/wm8850-w70v2.dts index fcc660c89540..32d22532cd6c 100644 --- a/arch/arm/boot/dts/wm8850-w70v2.dts +++ b/arch/arm/boot/dts/wm8850-w70v2.dts | |||
@@ -15,28 +15,6 @@ | |||
15 | / { | 15 | / { |
16 | model = "Wondermedia WM8850-W70v2 Tablet"; | 16 | model = "Wondermedia WM8850-W70v2 Tablet"; |
17 | 17 | ||
18 | /* | ||
19 | * Display node is based on Sascha Hauer's patch on dri-devel. | ||
20 | * Added a bpp property to calculate the size of the framebuffer | ||
21 | * until the binding is formalized. | ||
22 | */ | ||
23 | display: display@0 { | ||
24 | modes { | ||
25 | mode0: mode@0 { | ||
26 | hactive = <800>; | ||
27 | vactive = <480>; | ||
28 | hback-porch = <88>; | ||
29 | hfront-porch = <40>; | ||
30 | hsync-len = <0>; | ||
31 | vback-porch = <32>; | ||
32 | vfront-porch = <11>; | ||
33 | vsync-len = <1>; | ||
34 | clock = <0>; /* unused but required */ | ||
35 | bpp = <16>; /* non-standard but required */ | ||
36 | }; | ||
37 | }; | ||
38 | }; | ||
39 | |||
40 | backlight { | 18 | backlight { |
41 | compatible = "pwm-backlight"; | 19 | compatible = "pwm-backlight"; |
42 | pwms = <&pwm 0 50000 1>; /* duty inverted */ | 20 | pwms = <&pwm 0 50000 1>; /* duty inverted */ |
@@ -45,3 +23,21 @@ | |||
45 | default-brightness-level = <5>; | 23 | default-brightness-level = <5>; |
46 | }; | 24 | }; |
47 | }; | 25 | }; |
26 | |||
27 | &fb { | ||
28 | bits-per-pixel = <16>; | ||
29 | display-timings { | ||
30 | native-mode = <&timing0>; | ||
31 | timing0: 800x480 { | ||
32 | clock-frequency = <0>; /* unused but required */ | ||
33 | hactive = <800>; | ||
34 | vactive = <480>; | ||
35 | hfront-porch = <40>; | ||
36 | hback-porch = <88>; | ||
37 | hsync-len = <0>; | ||
38 | vback-porch = <32>; | ||
39 | vfront-porch = <11>; | ||
40 | vsync-len = <1>; | ||
41 | }; | ||
42 | }; | ||
43 | }; | ||
diff --git a/arch/arm/boot/dts/wm8850.dtsi b/arch/arm/boot/dts/wm8850.dtsi index e8cbfdc87bba..7149cd13e3b9 100644 --- a/arch/arm/boot/dts/wm8850.dtsi +++ b/arch/arm/boot/dts/wm8850.dtsi | |||
@@ -135,11 +135,9 @@ | |||
135 | }; | 135 | }; |
136 | }; | 136 | }; |
137 | 137 | ||
138 | fb@d8051700 { | 138 | fb: fb@d8051700 { |
139 | compatible = "wm,wm8505-fb"; | 139 | compatible = "wm,wm8505-fb"; |
140 | reg = <0xd8051700 0x200>; | 140 | reg = <0xd8051700 0x200>; |
141 | display = <&display>; | ||
142 | default-mode = <&mode0>; | ||
143 | }; | 141 | }; |
144 | 142 | ||
145 | ge_rops@d8050400 { | 143 | ge_rops@d8050400 { |
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig index e36b01025321..088d6c11a0fa 100644 --- a/arch/arm/configs/imx_v6_v7_defconfig +++ b/arch/arm/configs/imx_v6_v7_defconfig | |||
@@ -188,6 +188,7 @@ CONFIG_USB_EHCI_HCD=y | |||
188 | CONFIG_USB_EHCI_MXC=y | 188 | CONFIG_USB_EHCI_MXC=y |
189 | CONFIG_USB_CHIPIDEA=y | 189 | CONFIG_USB_CHIPIDEA=y |
190 | CONFIG_USB_CHIPIDEA_HOST=y | 190 | CONFIG_USB_CHIPIDEA_HOST=y |
191 | CONFIG_USB_PHY=y | ||
191 | CONFIG_USB_MXS_PHY=y | 192 | CONFIG_USB_MXS_PHY=y |
192 | CONFIG_USB_STORAGE=y | 193 | CONFIG_USB_STORAGE=y |
193 | CONFIG_MMC=y | 194 | CONFIG_MMC=y |
diff --git a/arch/arm/configs/lpc32xx_defconfig b/arch/arm/configs/lpc32xx_defconfig index 92386b20bd09..afa7249fac6e 100644 --- a/arch/arm/configs/lpc32xx_defconfig +++ b/arch/arm/configs/lpc32xx_defconfig | |||
@@ -134,6 +134,7 @@ CONFIG_SND_DEBUG_VERBOSE=y | |||
134 | # CONFIG_SND_SPI is not set | 134 | # CONFIG_SND_SPI is not set |
135 | CONFIG_SND_SOC=y | 135 | CONFIG_SND_SOC=y |
136 | CONFIG_USB=y | 136 | CONFIG_USB=y |
137 | CONFIG_USB_PHY=y | ||
137 | CONFIG_USB_OHCI_HCD=y | 138 | CONFIG_USB_OHCI_HCD=y |
138 | CONFIG_USB_STORAGE=y | 139 | CONFIG_USB_STORAGE=y |
139 | CONFIG_USB_GADGET=y | 140 | CONFIG_USB_GADGET=y |
diff --git a/arch/arm/configs/mxs_defconfig b/arch/arm/configs/mxs_defconfig index 6a99e30f81d2..87924d671115 100644 --- a/arch/arm/configs/mxs_defconfig +++ b/arch/arm/configs/mxs_defconfig | |||
@@ -120,6 +120,7 @@ CONFIG_USB_EHCI_HCD=y | |||
120 | CONFIG_USB_CHIPIDEA=y | 120 | CONFIG_USB_CHIPIDEA=y |
121 | CONFIG_USB_CHIPIDEA_HOST=y | 121 | CONFIG_USB_CHIPIDEA_HOST=y |
122 | CONFIG_USB_STORAGE=y | 122 | CONFIG_USB_STORAGE=y |
123 | CONFIG_USB_PHY=y | ||
123 | CONFIG_USB_MXS_PHY=y | 124 | CONFIG_USB_MXS_PHY=y |
124 | CONFIG_MMC=y | 125 | CONFIG_MMC=y |
125 | CONFIG_MMC_MXS=y | 126 | CONFIG_MMC_MXS=y |
diff --git a/arch/arm/configs/omap1_defconfig b/arch/arm/configs/omap1_defconfig index 42eab9a2a0fd..7e0ebb64a7f9 100644 --- a/arch/arm/configs/omap1_defconfig +++ b/arch/arm/configs/omap1_defconfig | |||
@@ -195,6 +195,7 @@ CONFIG_SND_SOC=y | |||
195 | CONFIG_SND_OMAP_SOC=y | 195 | CONFIG_SND_OMAP_SOC=y |
196 | # CONFIG_USB_HID is not set | 196 | # CONFIG_USB_HID is not set |
197 | CONFIG_USB=y | 197 | CONFIG_USB=y |
198 | CONFIG_USB_PHY=y | ||
198 | CONFIG_USB_DEBUG=y | 199 | CONFIG_USB_DEBUG=y |
199 | CONFIG_USB_DEVICEFS=y | 200 | CONFIG_USB_DEVICEFS=y |
200 | # CONFIG_USB_DEVICE_CLASS is not set | 201 | # CONFIG_USB_DEVICE_CLASS is not set |
diff --git a/arch/arm/include/asm/glue-cache.h b/arch/arm/include/asm/glue-cache.h index cca9f15704ed..ea289e1435e7 100644 --- a/arch/arm/include/asm/glue-cache.h +++ b/arch/arm/include/asm/glue-cache.h | |||
@@ -19,14 +19,6 @@ | |||
19 | #undef _CACHE | 19 | #undef _CACHE |
20 | #undef MULTI_CACHE | 20 | #undef MULTI_CACHE |
21 | 21 | ||
22 | #if defined(CONFIG_CPU_CACHE_V3) | ||
23 | # ifdef _CACHE | ||
24 | # define MULTI_CACHE 1 | ||
25 | # else | ||
26 | # define _CACHE v3 | ||
27 | # endif | ||
28 | #endif | ||
29 | |||
30 | #if defined(CONFIG_CPU_CACHE_V4) | 22 | #if defined(CONFIG_CPU_CACHE_V4) |
31 | # ifdef _CACHE | 23 | # ifdef _CACHE |
32 | # define MULTI_CACHE 1 | 24 | # define MULTI_CACHE 1 |
diff --git a/arch/arm/include/asm/hardware/iop3xx.h b/arch/arm/include/asm/hardware/iop3xx.h index 02fe2fbe2477..ed94b1a366ae 100644 --- a/arch/arm/include/asm/hardware/iop3xx.h +++ b/arch/arm/include/asm/hardware/iop3xx.h | |||
@@ -37,7 +37,7 @@ extern int iop3xx_get_init_atu(void); | |||
37 | * IOP3XX processor registers | 37 | * IOP3XX processor registers |
38 | */ | 38 | */ |
39 | #define IOP3XX_PERIPHERAL_PHYS_BASE 0xffffe000 | 39 | #define IOP3XX_PERIPHERAL_PHYS_BASE 0xffffe000 |
40 | #define IOP3XX_PERIPHERAL_VIRT_BASE 0xfeffe000 | 40 | #define IOP3XX_PERIPHERAL_VIRT_BASE 0xfedfe000 |
41 | #define IOP3XX_PERIPHERAL_SIZE 0x00002000 | 41 | #define IOP3XX_PERIPHERAL_SIZE 0x00002000 |
42 | #define IOP3XX_PERIPHERAL_UPPER_PA (IOP3XX_PERIPHERAL_PHYS_BASE +\ | 42 | #define IOP3XX_PERIPHERAL_UPPER_PA (IOP3XX_PERIPHERAL_PHYS_BASE +\ |
43 | IOP3XX_PERIPHERAL_SIZE - 1) | 43 | IOP3XX_PERIPHERAL_SIZE - 1) |
diff --git a/arch/arm/include/asm/pgtable-3level.h b/arch/arm/include/asm/pgtable-3level.h index 6ef8afd1b64c..86b8fe398b95 100644 --- a/arch/arm/include/asm/pgtable-3level.h +++ b/arch/arm/include/asm/pgtable-3level.h | |||
@@ -111,7 +111,7 @@ | |||
111 | #define L_PTE_S2_MT_WRITETHROUGH (_AT(pteval_t, 0xa) << 2) /* MemAttr[3:0] */ | 111 | #define L_PTE_S2_MT_WRITETHROUGH (_AT(pteval_t, 0xa) << 2) /* MemAttr[3:0] */ |
112 | #define L_PTE_S2_MT_WRITEBACK (_AT(pteval_t, 0xf) << 2) /* MemAttr[3:0] */ | 112 | #define L_PTE_S2_MT_WRITEBACK (_AT(pteval_t, 0xf) << 2) /* MemAttr[3:0] */ |
113 | #define L_PTE_S2_RDONLY (_AT(pteval_t, 1) << 6) /* HAP[1] */ | 113 | #define L_PTE_S2_RDONLY (_AT(pteval_t, 1) << 6) /* HAP[1] */ |
114 | #define L_PTE_S2_RDWR (_AT(pteval_t, 2) << 6) /* HAP[2:1] */ | 114 | #define L_PTE_S2_RDWR (_AT(pteval_t, 3) << 6) /* HAP[2:1] */ |
115 | 115 | ||
116 | /* | 116 | /* |
117 | * Hyp-mode PL2 PTE definitions for LPAE. | 117 | * Hyp-mode PL2 PTE definitions for LPAE. |
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index 80d6fc4dbe4a..9bcd262a9008 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h | |||
@@ -61,6 +61,15 @@ extern void __pgd_error(const char *file, int line, pgd_t); | |||
61 | #define FIRST_USER_ADDRESS PAGE_SIZE | 61 | #define FIRST_USER_ADDRESS PAGE_SIZE |
62 | 62 | ||
63 | /* | 63 | /* |
64 | * Use TASK_SIZE as the ceiling argument for free_pgtables() and | ||
65 | * free_pgd_range() to avoid freeing the modules pmd when LPAE is enabled (pmd | ||
66 | * page shared between user and kernel). | ||
67 | */ | ||
68 | #ifdef CONFIG_ARM_LPAE | ||
69 | #define USER_PGTABLES_CEILING TASK_SIZE | ||
70 | #endif | ||
71 | |||
72 | /* | ||
64 | * The pgprot_* and protection_map entries will be fixed up in runtime | 73 | * The pgprot_* and protection_map entries will be fixed up in runtime |
65 | * to include the cachable and bufferable bits based on memory policy, | 74 | * to include the cachable and bufferable bits based on memory policy, |
66 | * as well as any architecture dependent bits like global/ASID and SMP | 75 | * as well as any architecture dependent bits like global/ASID and SMP |
diff --git a/arch/arm/include/asm/tlbflush.h b/arch/arm/include/asm/tlbflush.h index 9e9c041358ca..ab865e65a84c 100644 --- a/arch/arm/include/asm/tlbflush.h +++ b/arch/arm/include/asm/tlbflush.h | |||
@@ -14,7 +14,6 @@ | |||
14 | 14 | ||
15 | #include <asm/glue.h> | 15 | #include <asm/glue.h> |
16 | 16 | ||
17 | #define TLB_V3_PAGE (1 << 0) | ||
18 | #define TLB_V4_U_PAGE (1 << 1) | 17 | #define TLB_V4_U_PAGE (1 << 1) |
19 | #define TLB_V4_D_PAGE (1 << 2) | 18 | #define TLB_V4_D_PAGE (1 << 2) |
20 | #define TLB_V4_I_PAGE (1 << 3) | 19 | #define TLB_V4_I_PAGE (1 << 3) |
@@ -22,7 +21,6 @@ | |||
22 | #define TLB_V6_D_PAGE (1 << 5) | 21 | #define TLB_V6_D_PAGE (1 << 5) |
23 | #define TLB_V6_I_PAGE (1 << 6) | 22 | #define TLB_V6_I_PAGE (1 << 6) |
24 | 23 | ||
25 | #define TLB_V3_FULL (1 << 8) | ||
26 | #define TLB_V4_U_FULL (1 << 9) | 24 | #define TLB_V4_U_FULL (1 << 9) |
27 | #define TLB_V4_D_FULL (1 << 10) | 25 | #define TLB_V4_D_FULL (1 << 10) |
28 | #define TLB_V4_I_FULL (1 << 11) | 26 | #define TLB_V4_I_FULL (1 << 11) |
@@ -52,7 +50,6 @@ | |||
52 | * ============= | 50 | * ============= |
53 | * | 51 | * |
54 | * We have the following to choose from: | 52 | * We have the following to choose from: |
55 | * v3 - ARMv3 | ||
56 | * v4 - ARMv4 without write buffer | 53 | * v4 - ARMv4 without write buffer |
57 | * v4wb - ARMv4 with write buffer without I TLB flush entry instruction | 54 | * v4wb - ARMv4 with write buffer without I TLB flush entry instruction |
58 | * v4wbi - ARMv4 with write buffer with I TLB flush entry instruction | 55 | * v4wbi - ARMv4 with write buffer with I TLB flush entry instruction |
@@ -330,7 +327,6 @@ static inline void local_flush_tlb_all(void) | |||
330 | if (tlb_flag(TLB_WB)) | 327 | if (tlb_flag(TLB_WB)) |
331 | dsb(); | 328 | dsb(); |
332 | 329 | ||
333 | tlb_op(TLB_V3_FULL, "c6, c0, 0", zero); | ||
334 | tlb_op(TLB_V4_U_FULL | TLB_V6_U_FULL, "c8, c7, 0", zero); | 330 | tlb_op(TLB_V4_U_FULL | TLB_V6_U_FULL, "c8, c7, 0", zero); |
335 | tlb_op(TLB_V4_D_FULL | TLB_V6_D_FULL, "c8, c6, 0", zero); | 331 | tlb_op(TLB_V4_D_FULL | TLB_V6_D_FULL, "c8, c6, 0", zero); |
336 | tlb_op(TLB_V4_I_FULL | TLB_V6_I_FULL, "c8, c5, 0", zero); | 332 | tlb_op(TLB_V4_I_FULL | TLB_V6_I_FULL, "c8, c5, 0", zero); |
@@ -351,9 +347,8 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm) | |||
351 | if (tlb_flag(TLB_WB)) | 347 | if (tlb_flag(TLB_WB)) |
352 | dsb(); | 348 | dsb(); |
353 | 349 | ||
354 | if (possible_tlb_flags & (TLB_V3_FULL|TLB_V4_U_FULL|TLB_V4_D_FULL|TLB_V4_I_FULL)) { | 350 | if (possible_tlb_flags & (TLB_V4_U_FULL|TLB_V4_D_FULL|TLB_V4_I_FULL)) { |
355 | if (cpumask_test_cpu(get_cpu(), mm_cpumask(mm))) { | 351 | if (cpumask_test_cpu(get_cpu(), mm_cpumask(mm))) { |
356 | tlb_op(TLB_V3_FULL, "c6, c0, 0", zero); | ||
357 | tlb_op(TLB_V4_U_FULL, "c8, c7, 0", zero); | 352 | tlb_op(TLB_V4_U_FULL, "c8, c7, 0", zero); |
358 | tlb_op(TLB_V4_D_FULL, "c8, c6, 0", zero); | 353 | tlb_op(TLB_V4_D_FULL, "c8, c6, 0", zero); |
359 | tlb_op(TLB_V4_I_FULL, "c8, c5, 0", zero); | 354 | tlb_op(TLB_V4_I_FULL, "c8, c5, 0", zero); |
@@ -385,9 +380,8 @@ local_flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr) | |||
385 | if (tlb_flag(TLB_WB)) | 380 | if (tlb_flag(TLB_WB)) |
386 | dsb(); | 381 | dsb(); |
387 | 382 | ||
388 | if (possible_tlb_flags & (TLB_V3_PAGE|TLB_V4_U_PAGE|TLB_V4_D_PAGE|TLB_V4_I_PAGE|TLB_V4_I_FULL) && | 383 | if (possible_tlb_flags & (TLB_V4_U_PAGE|TLB_V4_D_PAGE|TLB_V4_I_PAGE|TLB_V4_I_FULL) && |
389 | cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) { | 384 | cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) { |
390 | tlb_op(TLB_V3_PAGE, "c6, c0, 0", uaddr); | ||
391 | tlb_op(TLB_V4_U_PAGE, "c8, c7, 1", uaddr); | 385 | tlb_op(TLB_V4_U_PAGE, "c8, c7, 1", uaddr); |
392 | tlb_op(TLB_V4_D_PAGE, "c8, c6, 1", uaddr); | 386 | tlb_op(TLB_V4_D_PAGE, "c8, c6, 1", uaddr); |
393 | tlb_op(TLB_V4_I_PAGE, "c8, c5, 1", uaddr); | 387 | tlb_op(TLB_V4_I_PAGE, "c8, c5, 1", uaddr); |
@@ -418,7 +412,6 @@ static inline void local_flush_tlb_kernel_page(unsigned long kaddr) | |||
418 | if (tlb_flag(TLB_WB)) | 412 | if (tlb_flag(TLB_WB)) |
419 | dsb(); | 413 | dsb(); |
420 | 414 | ||
421 | tlb_op(TLB_V3_PAGE, "c6, c0, 0", kaddr); | ||
422 | tlb_op(TLB_V4_U_PAGE, "c8, c7, 1", kaddr); | 415 | tlb_op(TLB_V4_U_PAGE, "c8, c7, 1", kaddr); |
423 | tlb_op(TLB_V4_D_PAGE, "c8, c6, 1", kaddr); | 416 | tlb_op(TLB_V4_D_PAGE, "c8, c6, 1", kaddr); |
424 | tlb_op(TLB_V4_I_PAGE, "c8, c5, 1", kaddr); | 417 | tlb_op(TLB_V4_I_PAGE, "c8, c5, 1", kaddr); |
diff --git a/arch/arm/kernel/early_printk.c b/arch/arm/kernel/early_printk.c index 85aa2b292692..43076536965c 100644 --- a/arch/arm/kernel/early_printk.c +++ b/arch/arm/kernel/early_printk.c | |||
@@ -29,28 +29,17 @@ static void early_console_write(struct console *con, const char *s, unsigned n) | |||
29 | early_write(s, n); | 29 | early_write(s, n); |
30 | } | 30 | } |
31 | 31 | ||
32 | static struct console early_console = { | 32 | static struct console early_console_dev = { |
33 | .name = "earlycon", | 33 | .name = "earlycon", |
34 | .write = early_console_write, | 34 | .write = early_console_write, |
35 | .flags = CON_PRINTBUFFER | CON_BOOT, | 35 | .flags = CON_PRINTBUFFER | CON_BOOT, |
36 | .index = -1, | 36 | .index = -1, |
37 | }; | 37 | }; |
38 | 38 | ||
39 | asmlinkage void early_printk(const char *fmt, ...) | ||
40 | { | ||
41 | char buf[512]; | ||
42 | int n; | ||
43 | va_list ap; | ||
44 | |||
45 | va_start(ap, fmt); | ||
46 | n = vscnprintf(buf, sizeof(buf), fmt, ap); | ||
47 | early_write(buf, n); | ||
48 | va_end(ap); | ||
49 | } | ||
50 | |||
51 | static int __init setup_early_printk(char *buf) | 39 | static int __init setup_early_printk(char *buf) |
52 | { | 40 | { |
53 | register_console(&early_console); | 41 | early_console = &early_console_dev; |
42 | register_console(&early_console_dev); | ||
54 | return 0; | 43 | return 0; |
55 | } | 44 | } |
56 | 45 | ||
diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c index 5dc1aa6f0f7d..1fd749ee4a1b 100644 --- a/arch/arm/kernel/hw_breakpoint.c +++ b/arch/arm/kernel/hw_breakpoint.c | |||
@@ -1043,7 +1043,7 @@ static int dbg_cpu_pm_notify(struct notifier_block *self, unsigned long action, | |||
1043 | return NOTIFY_OK; | 1043 | return NOTIFY_OK; |
1044 | } | 1044 | } |
1045 | 1045 | ||
1046 | static struct notifier_block __cpuinitdata dbg_cpu_pm_nb = { | 1046 | static struct notifier_block dbg_cpu_pm_nb = { |
1047 | .notifier_call = dbg_cpu_pm_notify, | 1047 | .notifier_call = dbg_cpu_pm_notify, |
1048 | }; | 1048 | }; |
1049 | 1049 | ||
diff --git a/arch/arm/kernel/perf_event.c b/arch/arm/kernel/perf_event.c index 146157dfe27c..8c3094d0f7b7 100644 --- a/arch/arm/kernel/perf_event.c +++ b/arch/arm/kernel/perf_event.c | |||
@@ -253,7 +253,10 @@ validate_event(struct pmu_hw_events *hw_events, | |||
253 | struct arm_pmu *armpmu = to_arm_pmu(event->pmu); | 253 | struct arm_pmu *armpmu = to_arm_pmu(event->pmu); |
254 | struct pmu *leader_pmu = event->group_leader->pmu; | 254 | struct pmu *leader_pmu = event->group_leader->pmu; |
255 | 255 | ||
256 | if (event->pmu != leader_pmu || event->state <= PERF_EVENT_STATE_OFF) | 256 | if (event->pmu != leader_pmu || event->state < PERF_EVENT_STATE_OFF) |
257 | return 1; | ||
258 | |||
259 | if (event->state == PERF_EVENT_STATE_OFF && !event->attr.enable_on_exec) | ||
257 | return 1; | 260 | return 1; |
258 | 261 | ||
259 | return armpmu->get_event_idx(hw_events, event) >= 0; | 262 | return armpmu->get_event_idx(hw_events, event) >= 0; |
diff --git a/arch/arm/kernel/sched_clock.c b/arch/arm/kernel/sched_clock.c index bd6f56b9ec21..59d2adb764a9 100644 --- a/arch/arm/kernel/sched_clock.c +++ b/arch/arm/kernel/sched_clock.c | |||
@@ -45,12 +45,12 @@ static u32 notrace jiffy_sched_clock_read(void) | |||
45 | 45 | ||
46 | static u32 __read_mostly (*read_sched_clock)(void) = jiffy_sched_clock_read; | 46 | static u32 __read_mostly (*read_sched_clock)(void) = jiffy_sched_clock_read; |
47 | 47 | ||
48 | static inline u64 cyc_to_ns(u64 cyc, u32 mult, u32 shift) | 48 | static inline u64 notrace cyc_to_ns(u64 cyc, u32 mult, u32 shift) |
49 | { | 49 | { |
50 | return (cyc * mult) >> shift; | 50 | return (cyc * mult) >> shift; |
51 | } | 51 | } |
52 | 52 | ||
53 | static unsigned long long cyc_to_sched_clock(u32 cyc, u32 mask) | 53 | static unsigned long long notrace cyc_to_sched_clock(u32 cyc, u32 mask) |
54 | { | 54 | { |
55 | u64 epoch_ns; | 55 | u64 epoch_ns; |
56 | u32 epoch_cyc; | 56 | u32 epoch_cyc; |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index d343a6c3a6d1..234e339196c0 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -56,7 +56,6 @@ | |||
56 | #include <asm/virt.h> | 56 | #include <asm/virt.h> |
57 | 57 | ||
58 | #include "atags.h" | 58 | #include "atags.h" |
59 | #include "tcm.h" | ||
60 | 59 | ||
61 | 60 | ||
62 | #if defined(CONFIG_FPE_NWFPE) || defined(CONFIG_FPE_FASTFPE) | 61 | #if defined(CONFIG_FPE_NWFPE) || defined(CONFIG_FPE_FASTFPE) |
@@ -798,8 +797,6 @@ void __init setup_arch(char **cmdline_p) | |||
798 | 797 | ||
799 | reserve_crashkernel(); | 798 | reserve_crashkernel(); |
800 | 799 | ||
801 | tcm_init(); | ||
802 | |||
803 | #ifdef CONFIG_MULTI_IRQ_HANDLER | 800 | #ifdef CONFIG_MULTI_IRQ_HANDLER |
804 | handle_arch_irq = mdesc->handle_irq; | 801 | handle_arch_irq = mdesc->handle_irq; |
805 | #endif | 802 | #endif |
diff --git a/arch/arm/kernel/tcm.c b/arch/arm/kernel/tcm.c index 30ae6bb4a310..f50f19e5c138 100644 --- a/arch/arm/kernel/tcm.c +++ b/arch/arm/kernel/tcm.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/mach/map.h> | 17 | #include <asm/mach/map.h> |
18 | #include <asm/memory.h> | 18 | #include <asm/memory.h> |
19 | #include <asm/system_info.h> | 19 | #include <asm/system_info.h> |
20 | #include "tcm.h" | ||
21 | 20 | ||
22 | static struct gen_pool *tcm_pool; | 21 | static struct gen_pool *tcm_pool; |
23 | static bool dtcm_present; | 22 | static bool dtcm_present; |
diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c index 5a936988eb24..c1fe498983ac 100644 --- a/arch/arm/kvm/arm.c +++ b/arch/arm/kvm/arm.c | |||
@@ -201,6 +201,7 @@ int kvm_dev_ioctl_check_extension(long ext) | |||
201 | break; | 201 | break; |
202 | case KVM_CAP_ARM_SET_DEVICE_ADDR: | 202 | case KVM_CAP_ARM_SET_DEVICE_ADDR: |
203 | r = 1; | 203 | r = 1; |
204 | break; | ||
204 | case KVM_CAP_NR_VCPUS: | 205 | case KVM_CAP_NR_VCPUS: |
205 | r = num_online_cpus(); | 206 | r = num_online_cpus(); |
206 | break; | 207 | break; |
diff --git a/arch/arm/kvm/coproc.c b/arch/arm/kvm/coproc.c index 4ea9a982269c..7bed7556077a 100644 --- a/arch/arm/kvm/coproc.c +++ b/arch/arm/kvm/coproc.c | |||
@@ -79,11 +79,11 @@ static bool access_dcsw(struct kvm_vcpu *vcpu, | |||
79 | u32 val; | 79 | u32 val; |
80 | int cpu; | 80 | int cpu; |
81 | 81 | ||
82 | cpu = get_cpu(); | ||
83 | |||
84 | if (!p->is_write) | 82 | if (!p->is_write) |
85 | return read_from_write_only(vcpu, p); | 83 | return read_from_write_only(vcpu, p); |
86 | 84 | ||
85 | cpu = get_cpu(); | ||
86 | |||
87 | cpumask_setall(&vcpu->arch.require_dcache_flush); | 87 | cpumask_setall(&vcpu->arch.require_dcache_flush); |
88 | cpumask_clear_cpu(cpu, &vcpu->arch.require_dcache_flush); | 88 | cpumask_clear_cpu(cpu, &vcpu->arch.require_dcache_flush); |
89 | 89 | ||
diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index b67cd5374117..44199bc2c665 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c | |||
@@ -232,6 +232,8 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
232 | CLKDEV_CON_DEV_ID("t2_clk", "fffdc000.timer", &tc5_clk), | 232 | CLKDEV_CON_DEV_ID("t2_clk", "fffdc000.timer", &tc5_clk), |
233 | CLKDEV_CON_DEV_ID("hclk", "500000.ohci", &ohci_clk), | 233 | CLKDEV_CON_DEV_ID("hclk", "500000.ohci", &ohci_clk), |
234 | CLKDEV_CON_DEV_ID("mci_clk", "fffa8000.mmc", &mmc_clk), | 234 | CLKDEV_CON_DEV_ID("mci_clk", "fffa8000.mmc", &mmc_clk), |
235 | CLKDEV_CON_DEV_ID("spi_clk", "fffc8000.spi", &spi0_clk), | ||
236 | CLKDEV_CON_DEV_ID("spi_clk", "fffcc000.spi", &spi1_clk), | ||
235 | /* fake hclk clock */ | 237 | /* fake hclk clock */ |
236 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), | 238 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), |
237 | CLKDEV_CON_ID("pioA", &pioA_clk), | 239 | CLKDEV_CON_ID("pioA", &pioA_clk), |
diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index d3addee43d8d..2ec5efea3f03 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c | |||
@@ -262,6 +262,8 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
262 | CLKDEV_CON_DEV_ID("mci_clk", "fffd0000.mmc", &mmc1_clk), | 262 | CLKDEV_CON_DEV_ID("mci_clk", "fffd0000.mmc", &mmc1_clk), |
263 | CLKDEV_CON_DEV_ID(NULL, "fff84000.i2c", &twi0_clk), | 263 | CLKDEV_CON_DEV_ID(NULL, "fff84000.i2c", &twi0_clk), |
264 | CLKDEV_CON_DEV_ID(NULL, "fff88000.i2c", &twi1_clk), | 264 | CLKDEV_CON_DEV_ID(NULL, "fff88000.i2c", &twi1_clk), |
265 | CLKDEV_CON_DEV_ID("spi_clk", "fffa4000.spi", &spi0_clk), | ||
266 | CLKDEV_CON_DEV_ID("spi_clk", "fffa8000.spi", &spi1_clk), | ||
265 | /* fake hclk clock */ | 267 | /* fake hclk clock */ |
266 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &uhphs_clk), | 268 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &uhphs_clk), |
267 | CLKDEV_CON_DEV_ID(NULL, "fffff200.gpio", &pioA_clk), | 269 | CLKDEV_CON_DEV_ID(NULL, "fffff200.gpio", &pioA_clk), |
diff --git a/arch/arm/mach-at91/at91sam9n12.c b/arch/arm/mach-at91/at91sam9n12.c index 5dfc8fd87103..ccd078355eed 100644 --- a/arch/arm/mach-at91/at91sam9n12.c +++ b/arch/arm/mach-at91/at91sam9n12.c | |||
@@ -172,6 +172,8 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
172 | CLKDEV_CON_DEV_ID("dma_clk", "ffffec00.dma-controller", &dma_clk), | 172 | CLKDEV_CON_DEV_ID("dma_clk", "ffffec00.dma-controller", &dma_clk), |
173 | CLKDEV_CON_DEV_ID(NULL, "f8010000.i2c", &twi0_clk), | 173 | CLKDEV_CON_DEV_ID(NULL, "f8010000.i2c", &twi0_clk), |
174 | CLKDEV_CON_DEV_ID(NULL, "f8014000.i2c", &twi1_clk), | 174 | CLKDEV_CON_DEV_ID(NULL, "f8014000.i2c", &twi1_clk), |
175 | CLKDEV_CON_DEV_ID("spi_clk", "f0000000.spi", &spi0_clk), | ||
176 | CLKDEV_CON_DEV_ID("spi_clk", "f0004000.spi", &spi1_clk), | ||
175 | CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioAB_clk), | 177 | CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioAB_clk), |
176 | CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioAB_clk), | 178 | CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioAB_clk), |
177 | CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioCD_clk), | 179 | CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioCD_clk), |
diff --git a/arch/arm/mach-at91/at91sam9x5.c b/arch/arm/mach-at91/at91sam9x5.c index 44a9a62dcc13..a200d8a17123 100644 --- a/arch/arm/mach-at91/at91sam9x5.c +++ b/arch/arm/mach-at91/at91sam9x5.c | |||
@@ -237,6 +237,8 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
237 | CLKDEV_CON_DEV_ID(NULL, "f8010000.i2c", &twi0_clk), | 237 | CLKDEV_CON_DEV_ID(NULL, "f8010000.i2c", &twi0_clk), |
238 | CLKDEV_CON_DEV_ID(NULL, "f8014000.i2c", &twi1_clk), | 238 | CLKDEV_CON_DEV_ID(NULL, "f8014000.i2c", &twi1_clk), |
239 | CLKDEV_CON_DEV_ID(NULL, "f8018000.i2c", &twi2_clk), | 239 | CLKDEV_CON_DEV_ID(NULL, "f8018000.i2c", &twi2_clk), |
240 | CLKDEV_CON_DEV_ID("spi_clk", "f0000000.spi", &spi0_clk), | ||
241 | CLKDEV_CON_DEV_ID("spi_clk", "f0004000.spi", &spi1_clk), | ||
240 | CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioAB_clk), | 242 | CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioAB_clk), |
241 | CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioAB_clk), | 243 | CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioAB_clk), |
242 | CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioCD_clk), | 244 | CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioCD_clk), |
diff --git a/arch/arm/mach-exynos/mach-universal_c210.c b/arch/arm/mach-exynos/mach-universal_c210.c index 497fcb793dc1..d28c7fbaba2d 100644 --- a/arch/arm/mach-exynos/mach-universal_c210.c +++ b/arch/arm/mach-exynos/mach-universal_c210.c | |||
@@ -97,6 +97,19 @@ static struct s3c2410_uartcfg universal_uartcfgs[] __initdata = { | |||
97 | static struct regulator_consumer_supply max8952_consumer = | 97 | static struct regulator_consumer_supply max8952_consumer = |
98 | REGULATOR_SUPPLY("vdd_arm", NULL); | 98 | REGULATOR_SUPPLY("vdd_arm", NULL); |
99 | 99 | ||
100 | static struct regulator_init_data universal_max8952_reg_data = { | ||
101 | .constraints = { | ||
102 | .name = "VARM_1.2V", | ||
103 | .min_uV = 770000, | ||
104 | .max_uV = 1400000, | ||
105 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, | ||
106 | .always_on = 1, | ||
107 | .boot_on = 1, | ||
108 | }, | ||
109 | .num_consumer_supplies = 1, | ||
110 | .consumer_supplies = &max8952_consumer, | ||
111 | }; | ||
112 | |||
100 | static struct max8952_platform_data universal_max8952_pdata __initdata = { | 113 | static struct max8952_platform_data universal_max8952_pdata __initdata = { |
101 | .gpio_vid0 = EXYNOS4_GPX0(3), | 114 | .gpio_vid0 = EXYNOS4_GPX0(3), |
102 | .gpio_vid1 = EXYNOS4_GPX0(4), | 115 | .gpio_vid1 = EXYNOS4_GPX0(4), |
@@ -105,19 +118,7 @@ static struct max8952_platform_data universal_max8952_pdata __initdata = { | |||
105 | .dvs_mode = { 48, 32, 28, 18 }, /* 1.25, 1.20, 1.05, 0.95V */ | 118 | .dvs_mode = { 48, 32, 28, 18 }, /* 1.25, 1.20, 1.05, 0.95V */ |
106 | .sync_freq = 0, /* default: fastest */ | 119 | .sync_freq = 0, /* default: fastest */ |
107 | .ramp_speed = 0, /* default: fastest */ | 120 | .ramp_speed = 0, /* default: fastest */ |
108 | 121 | .reg_data = &universal_max8952_reg_data, | |
109 | .reg_data = { | ||
110 | .constraints = { | ||
111 | .name = "VARM_1.2V", | ||
112 | .min_uV = 770000, | ||
113 | .max_uV = 1400000, | ||
114 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, | ||
115 | .always_on = 1, | ||
116 | .boot_on = 1, | ||
117 | }, | ||
118 | .num_consumer_supplies = 1, | ||
119 | .consumer_supplies = &max8952_consumer, | ||
120 | }, | ||
121 | }; | 122 | }; |
122 | 123 | ||
123 | static struct regulator_consumer_supply lp3974_buck1_consumer = | 124 | static struct regulator_consumer_supply lp3974_buck1_consumer = |
diff --git a/arch/arm/mach-exynos/setup-usb-phy.c b/arch/arm/mach-exynos/setup-usb-phy.c index b81cc569a8dd..6af40662a449 100644 --- a/arch/arm/mach-exynos/setup-usb-phy.c +++ b/arch/arm/mach-exynos/setup-usb-phy.c | |||
@@ -204,9 +204,9 @@ static int exynos4210_usb_phy1_exit(struct platform_device *pdev) | |||
204 | 204 | ||
205 | int s5p_usb_phy_init(struct platform_device *pdev, int type) | 205 | int s5p_usb_phy_init(struct platform_device *pdev, int type) |
206 | { | 206 | { |
207 | if (type == S5P_USB_PHY_DEVICE) | 207 | if (type == USB_PHY_TYPE_DEVICE) |
208 | return exynos4210_usb_phy0_init(pdev); | 208 | return exynos4210_usb_phy0_init(pdev); |
209 | else if (type == S5P_USB_PHY_HOST) | 209 | else if (type == USB_PHY_TYPE_HOST) |
210 | return exynos4210_usb_phy1_init(pdev); | 210 | return exynos4210_usb_phy1_init(pdev); |
211 | 211 | ||
212 | return -EINVAL; | 212 | return -EINVAL; |
@@ -214,9 +214,9 @@ int s5p_usb_phy_init(struct platform_device *pdev, int type) | |||
214 | 214 | ||
215 | int s5p_usb_phy_exit(struct platform_device *pdev, int type) | 215 | int s5p_usb_phy_exit(struct platform_device *pdev, int type) |
216 | { | 216 | { |
217 | if (type == S5P_USB_PHY_DEVICE) | 217 | if (type == USB_PHY_TYPE_DEVICE) |
218 | return exynos4210_usb_phy0_exit(pdev); | 218 | return exynos4210_usb_phy0_exit(pdev); |
219 | else if (type == S5P_USB_PHY_HOST) | 219 | else if (type == USB_PHY_TYPE_HOST) |
220 | return exynos4210_usb_phy1_exit(pdev); | 220 | return exynos4210_usb_phy1_exit(pdev); |
221 | 221 | ||
222 | return -EINVAL; | 222 | return -EINVAL; |
diff --git a/arch/arm/mach-highbank/hotplug.c b/arch/arm/mach-highbank/hotplug.c index f30c52843396..890cae23c12a 100644 --- a/arch/arm/mach-highbank/hotplug.c +++ b/arch/arm/mach-highbank/hotplug.c | |||
@@ -28,13 +28,11 @@ extern void secondary_startup(void); | |||
28 | */ | 28 | */ |
29 | void __ref highbank_cpu_die(unsigned int cpu) | 29 | void __ref highbank_cpu_die(unsigned int cpu) |
30 | { | 30 | { |
31 | flush_cache_all(); | ||
32 | |||
33 | highbank_set_cpu_jump(cpu, phys_to_virt(0)); | 31 | highbank_set_cpu_jump(cpu, phys_to_virt(0)); |
34 | highbank_set_core_pwr(); | ||
35 | 32 | ||
36 | cpu_do_idle(); | 33 | flush_cache_louis(); |
34 | highbank_set_core_pwr(); | ||
37 | 35 | ||
38 | /* We should never return from idle */ | 36 | while (1) |
39 | panic("highbank: cpu %d unexpectedly exit from shutdown\n", cpu); | 37 | cpu_do_idle(); |
40 | } | 38 | } |
diff --git a/arch/arm/mach-imx/clk-busy.c b/arch/arm/mach-imx/clk-busy.c index 1ab91b5209e6..85b728cc27ab 100644 --- a/arch/arm/mach-imx/clk-busy.c +++ b/arch/arm/mach-imx/clk-busy.c | |||
@@ -169,7 +169,7 @@ struct clk *imx_clk_busy_mux(const char *name, void __iomem *reg, u8 shift, | |||
169 | 169 | ||
170 | busy->mux.reg = reg; | 170 | busy->mux.reg = reg; |
171 | busy->mux.shift = shift; | 171 | busy->mux.shift = shift; |
172 | busy->mux.width = width; | 172 | busy->mux.mask = BIT(width) - 1; |
173 | busy->mux.lock = &imx_ccm_lock; | 173 | busy->mux.lock = &imx_ccm_lock; |
174 | busy->mux_ops = &clk_mux_ops; | 174 | busy->mux_ops = &clk_mux_ops; |
175 | 175 | ||
diff --git a/arch/arm/mach-imx/clk-imx35.c b/arch/arm/mach-imx/clk-imx35.c index e13a8fa5e62c..2193c834f55c 100644 --- a/arch/arm/mach-imx/clk-imx35.c +++ b/arch/arm/mach-imx/clk-imx35.c | |||
@@ -257,6 +257,7 @@ int __init mx35_clocks_init(void) | |||
257 | clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); | 257 | clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0"); |
258 | clk_register_clkdev(clk[nfc_div], NULL, "imx25-nand.0"); | 258 | clk_register_clkdev(clk[nfc_div], NULL, "imx25-nand.0"); |
259 | clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0"); | 259 | clk_register_clkdev(clk[csi_gate], NULL, "mx3-camera.0"); |
260 | clk_register_clkdev(clk[admux_gate], "audmux", NULL); | ||
260 | 261 | ||
261 | clk_prepare_enable(clk[spba_gate]); | 262 | clk_prepare_enable(clk[spba_gate]); |
262 | clk_prepare_enable(clk[gpio1_gate]); | 263 | clk_prepare_enable(clk[gpio1_gate]); |
@@ -265,6 +266,7 @@ int __init mx35_clocks_init(void) | |||
265 | clk_prepare_enable(clk[iim_gate]); | 266 | clk_prepare_enable(clk[iim_gate]); |
266 | clk_prepare_enable(clk[emi_gate]); | 267 | clk_prepare_enable(clk[emi_gate]); |
267 | clk_prepare_enable(clk[max_gate]); | 268 | clk_prepare_enable(clk[max_gate]); |
269 | clk_prepare_enable(clk[iomuxc_gate]); | ||
268 | 270 | ||
269 | /* | 271 | /* |
270 | * SCC is needed to boot via mmc after a watchdog reset. The clock code | 272 | * SCC is needed to boot via mmc after a watchdog reset. The clock code |
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index 2f9ff93a4e61..d38e54f5b6d7 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
@@ -115,7 +115,7 @@ static const char *gpu2d_core_sels[] = { "axi", "pll3_usb_otg", "pll2_pfd0_352m" | |||
115 | static const char *gpu3d_core_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", }; | 115 | static const char *gpu3d_core_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", }; |
116 | static const char *gpu3d_shader_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd9_720m", }; | 116 | static const char *gpu3d_shader_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd9_720m", }; |
117 | static const char *ipu_sels[] = { "mmdc_ch0_axi", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", }; | 117 | static const char *ipu_sels[] = { "mmdc_ch0_axi", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", }; |
118 | static const char *ldb_di_sels[] = { "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "mmdc_ch1_axi", "pll3_pfd1_540m", }; | 118 | static const char *ldb_di_sels[] = { "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "mmdc_ch1_axi", "pll3_usb_otg", }; |
119 | static const char *ipu_di_pre_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "pll3_pfd1_540m", }; | 119 | static const char *ipu_di_pre_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "pll3_pfd1_540m", }; |
120 | static const char *ipu1_di0_sels[] = { "ipu1_di0_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", }; | 120 | static const char *ipu1_di0_sels[] = { "ipu1_di0_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", }; |
121 | static const char *ipu1_di1_sels[] = { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", }; | 121 | static const char *ipu1_di1_sels[] = { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", }; |
@@ -443,7 +443,6 @@ int __init mx6q_clocks_init(void) | |||
443 | 443 | ||
444 | clk_register_clkdev(clk[gpt_ipg], "ipg", "imx-gpt.0"); | 444 | clk_register_clkdev(clk[gpt_ipg], "ipg", "imx-gpt.0"); |
445 | clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0"); | 445 | clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0"); |
446 | clk_register_clkdev(clk[twd], NULL, "smp_twd"); | ||
447 | clk_register_clkdev(clk[cko1_sel], "cko1_sel", NULL); | 446 | clk_register_clkdev(clk[cko1_sel], "cko1_sel", NULL); |
448 | clk_register_clkdev(clk[ahb], "ahb", NULL); | 447 | clk_register_clkdev(clk[ahb], "ahb", NULL); |
449 | clk_register_clkdev(clk[cko1], "cko1", NULL); | 448 | clk_register_clkdev(clk[cko1], "cko1", NULL); |
diff --git a/arch/arm/mach-kirkwood/board-iomega_ix2_200.c b/arch/arm/mach-kirkwood/board-iomega_ix2_200.c index f655b2637b0e..e5f70415905a 100644 --- a/arch/arm/mach-kirkwood/board-iomega_ix2_200.c +++ b/arch/arm/mach-kirkwood/board-iomega_ix2_200.c | |||
@@ -20,10 +20,15 @@ static struct mv643xx_eth_platform_data iomega_ix2_200_ge00_data = { | |||
20 | .duplex = DUPLEX_FULL, | 20 | .duplex = DUPLEX_FULL, |
21 | }; | 21 | }; |
22 | 22 | ||
23 | static struct mv643xx_eth_platform_data iomega_ix2_200_ge01_data = { | ||
24 | .phy_addr = MV643XX_ETH_PHY_ADDR(11), | ||
25 | }; | ||
26 | |||
23 | void __init iomega_ix2_200_init(void) | 27 | void __init iomega_ix2_200_init(void) |
24 | { | 28 | { |
25 | /* | 29 | /* |
26 | * Basic setup. Needs to be called early. | 30 | * Basic setup. Needs to be called early. |
27 | */ | 31 | */ |
28 | kirkwood_ge01_init(&iomega_ix2_200_ge00_data); | 32 | kirkwood_ge00_init(&iomega_ix2_200_ge00_data); |
33 | kirkwood_ge01_init(&iomega_ix2_200_ge01_data); | ||
29 | } | 34 | } |
diff --git a/arch/arm/mach-mmp/aspenite.c b/arch/arm/mach-mmp/aspenite.c index 9f64d5632e07..76901f4ce611 100644 --- a/arch/arm/mach-mmp/aspenite.c +++ b/arch/arm/mach-mmp/aspenite.c | |||
@@ -223,13 +223,7 @@ static struct pxa27x_keypad_platform_data aspenite_keypad_info __initdata = { | |||
223 | }; | 223 | }; |
224 | 224 | ||
225 | #if defined(CONFIG_USB_EHCI_MV) | 225 | #if defined(CONFIG_USB_EHCI_MV) |
226 | static char *pxa168_sph_clock_name[] = { | ||
227 | [0] = "PXA168-USBCLK", | ||
228 | }; | ||
229 | |||
230 | static struct mv_usb_platform_data pxa168_sph_pdata = { | 226 | static struct mv_usb_platform_data pxa168_sph_pdata = { |
231 | .clknum = 1, | ||
232 | .clkname = pxa168_sph_clock_name, | ||
233 | .mode = MV_USB_MODE_HOST, | 227 | .mode = MV_USB_MODE_HOST, |
234 | .phy_init = pxa_usb_phy_init, | 228 | .phy_init = pxa_usb_phy_init, |
235 | .phy_deinit = pxa_usb_phy_deinit, | 229 | .phy_deinit = pxa_usb_phy_deinit, |
diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c index 22a9058f9f4d..6528a5fa6a26 100644 --- a/arch/arm/mach-mmp/ttc_dkb.c +++ b/arch/arm/mach-mmp/ttc_dkb.c | |||
@@ -162,13 +162,7 @@ static struct i2c_board_info ttc_dkb_i2c_info[] = { | |||
162 | #ifdef CONFIG_USB_SUPPORT | 162 | #ifdef CONFIG_USB_SUPPORT |
163 | #if defined(CONFIG_USB_MV_UDC) || defined(CONFIG_USB_EHCI_MV_U2O) | 163 | #if defined(CONFIG_USB_MV_UDC) || defined(CONFIG_USB_EHCI_MV_U2O) |
164 | 164 | ||
165 | static char *pxa910_usb_clock_name[] = { | ||
166 | [0] = "U2OCLK", | ||
167 | }; | ||
168 | |||
169 | static struct mv_usb_platform_data ttc_usb_pdata = { | 165 | static struct mv_usb_platform_data ttc_usb_pdata = { |
170 | .clknum = 1, | ||
171 | .clkname = pxa910_usb_clock_name, | ||
172 | .vbus = NULL, | 166 | .vbus = NULL, |
173 | .mode = MV_USB_MODE_OTG, | 167 | .mode = MV_USB_MODE_OTG, |
174 | .otg_force_a_bus_req = 1, | 168 | .otg_force_a_bus_req = 1, |
diff --git a/arch/arm/mach-mvebu/irq-armada-370-xp.c b/arch/arm/mach-mvebu/irq-armada-370-xp.c index 6a9195e10579..d5970f5a1e8d 100644 --- a/arch/arm/mach-mvebu/irq-armada-370-xp.c +++ b/arch/arm/mach-mvebu/irq-armada-370-xp.c | |||
@@ -61,7 +61,6 @@ static struct irq_domain *armada_370_xp_mpic_domain; | |||
61 | */ | 61 | */ |
62 | static void armada_370_xp_irq_mask(struct irq_data *d) | 62 | static void armada_370_xp_irq_mask(struct irq_data *d) |
63 | { | 63 | { |
64 | #ifdef CONFIG_SMP | ||
65 | irq_hw_number_t hwirq = irqd_to_hwirq(d); | 64 | irq_hw_number_t hwirq = irqd_to_hwirq(d); |
66 | 65 | ||
67 | if (hwirq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ) | 66 | if (hwirq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ) |
@@ -70,15 +69,10 @@ static void armada_370_xp_irq_mask(struct irq_data *d) | |||
70 | else | 69 | else |
71 | writel(hwirq, per_cpu_int_base + | 70 | writel(hwirq, per_cpu_int_base + |
72 | ARMADA_370_XP_INT_SET_MASK_OFFS); | 71 | ARMADA_370_XP_INT_SET_MASK_OFFS); |
73 | #else | ||
74 | writel(irqd_to_hwirq(d), | ||
75 | per_cpu_int_base + ARMADA_370_XP_INT_SET_MASK_OFFS); | ||
76 | #endif | ||
77 | } | 72 | } |
78 | 73 | ||
79 | static void armada_370_xp_irq_unmask(struct irq_data *d) | 74 | static void armada_370_xp_irq_unmask(struct irq_data *d) |
80 | { | 75 | { |
81 | #ifdef CONFIG_SMP | ||
82 | irq_hw_number_t hwirq = irqd_to_hwirq(d); | 76 | irq_hw_number_t hwirq = irqd_to_hwirq(d); |
83 | 77 | ||
84 | if (hwirq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ) | 78 | if (hwirq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ) |
@@ -87,10 +81,6 @@ static void armada_370_xp_irq_unmask(struct irq_data *d) | |||
87 | else | 81 | else |
88 | writel(hwirq, per_cpu_int_base + | 82 | writel(hwirq, per_cpu_int_base + |
89 | ARMADA_370_XP_INT_CLEAR_MASK_OFFS); | 83 | ARMADA_370_XP_INT_CLEAR_MASK_OFFS); |
90 | #else | ||
91 | writel(irqd_to_hwirq(d), | ||
92 | per_cpu_int_base + ARMADA_370_XP_INT_CLEAR_MASK_OFFS); | ||
93 | #endif | ||
94 | } | 84 | } |
95 | 85 | ||
96 | #ifdef CONFIG_SMP | 86 | #ifdef CONFIG_SMP |
@@ -146,7 +136,11 @@ static int armada_370_xp_mpic_irq_map(struct irq_domain *h, | |||
146 | unsigned int virq, irq_hw_number_t hw) | 136 | unsigned int virq, irq_hw_number_t hw) |
147 | { | 137 | { |
148 | armada_370_xp_irq_mask(irq_get_irq_data(virq)); | 138 | armada_370_xp_irq_mask(irq_get_irq_data(virq)); |
149 | writel(hw, main_int_base + ARMADA_370_XP_INT_SET_ENABLE_OFFS); | 139 | if (hw != ARMADA_370_XP_TIMER0_PER_CPU_IRQ) |
140 | writel(hw, per_cpu_int_base + | ||
141 | ARMADA_370_XP_INT_CLEAR_MASK_OFFS); | ||
142 | else | ||
143 | writel(hw, main_int_base + ARMADA_370_XP_INT_SET_ENABLE_OFFS); | ||
150 | irq_set_status_flags(virq, IRQ_LEVEL); | 144 | irq_set_status_flags(virq, IRQ_LEVEL); |
151 | 145 | ||
152 | if (hw == ARMADA_370_XP_TIMER0_PER_CPU_IRQ) { | 146 | if (hw == ARMADA_370_XP_TIMER0_PER_CPU_IRQ) { |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 9e0576569e07..eaba9dc91a0d 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
@@ -2714,16 +2714,22 @@ static struct omap_ocp2scp_dev ocp2scp_dev_attr[] = { | |||
2714 | { } | 2714 | { } |
2715 | }; | 2715 | }; |
2716 | 2716 | ||
2717 | static struct omap_hwmod_opt_clk ocp2scp_usb_phy_opt_clks[] = { | ||
2718 | { .role = "48mhz", .clk = "ocp2scp_usb_phy_phy_48m" }, | ||
2719 | }; | ||
2720 | |||
2721 | /* ocp2scp_usb_phy */ | 2717 | /* ocp2scp_usb_phy */ |
2722 | static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = { | 2718 | static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = { |
2723 | .name = "ocp2scp_usb_phy", | 2719 | .name = "ocp2scp_usb_phy", |
2724 | .class = &omap44xx_ocp2scp_hwmod_class, | 2720 | .class = &omap44xx_ocp2scp_hwmod_class, |
2725 | .clkdm_name = "l3_init_clkdm", | 2721 | .clkdm_name = "l3_init_clkdm", |
2726 | .main_clk = "func_48m_fclk", | 2722 | /* |
2723 | * ocp2scp_usb_phy_phy_48m is provided by the OMAP4 PRCM IP | ||
2724 | * block as an "optional clock," and normally should never be | ||
2725 | * specified as the main_clk for an OMAP IP block. However it | ||
2726 | * turns out that this clock is actually the main clock for | ||
2727 | * the ocp2scp_usb_phy IP block: | ||
2728 | * http://lists.infradead.org/pipermail/linux-arm-kernel/2012-September/119943.html | ||
2729 | * So listing ocp2scp_usb_phy_phy_48m as a main_clk here seems | ||
2730 | * to be the best workaround. | ||
2731 | */ | ||
2732 | .main_clk = "ocp2scp_usb_phy_phy_48m", | ||
2727 | .prcm = { | 2733 | .prcm = { |
2728 | .omap4 = { | 2734 | .omap4 = { |
2729 | .clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET, | 2735 | .clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET, |
@@ -2732,8 +2738,6 @@ static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = { | |||
2732 | }, | 2738 | }, |
2733 | }, | 2739 | }, |
2734 | .dev_attr = ocp2scp_dev_attr, | 2740 | .dev_attr = ocp2scp_dev_attr, |
2735 | .opt_clks = ocp2scp_usb_phy_opt_clks, | ||
2736 | .opt_clks_cnt = ARRAY_SIZE(ocp2scp_usb_phy_opt_clks), | ||
2737 | }; | 2741 | }; |
2738 | 2742 | ||
2739 | /* | 2743 | /* |
diff --git a/arch/arm/mach-s3c24xx/clock-s3c2440.c b/arch/arm/mach-s3c24xx/clock-s3c2440.c index 04b87ec92537..1069b5680826 100644 --- a/arch/arm/mach-s3c24xx/clock-s3c2440.c +++ b/arch/arm/mach-s3c24xx/clock-s3c2440.c | |||
@@ -123,6 +123,11 @@ static struct clk s3c2440_clk_ac97 = { | |||
123 | .ctrlbit = S3C2440_CLKCON_AC97, | 123 | .ctrlbit = S3C2440_CLKCON_AC97, |
124 | }; | 124 | }; |
125 | 125 | ||
126 | #define S3C24XX_VA_UART0 (S3C_VA_UART) | ||
127 | #define S3C24XX_VA_UART1 (S3C_VA_UART + 0x4000 ) | ||
128 | #define S3C24XX_VA_UART2 (S3C_VA_UART + 0x8000 ) | ||
129 | #define S3C24XX_VA_UART3 (S3C_VA_UART + 0xC000 ) | ||
130 | |||
126 | static unsigned long s3c2440_fclk_n_getrate(struct clk *clk) | 131 | static unsigned long s3c2440_fclk_n_getrate(struct clk *clk) |
127 | { | 132 | { |
128 | unsigned long ucon0, ucon1, ucon2, divisor; | 133 | unsigned long ucon0, ucon1, ucon2, divisor; |
diff --git a/arch/arm/mach-s3c24xx/common.c b/arch/arm/mach-s3c24xx/common.c index 6bcf87f65f9e..92e609440c57 100644 --- a/arch/arm/mach-s3c24xx/common.c +++ b/arch/arm/mach-s3c24xx/common.c | |||
@@ -239,6 +239,11 @@ void __init s3c24xx_init_io(struct map_desc *mach_desc, int size) | |||
239 | 239 | ||
240 | /* Serial port registrations */ | 240 | /* Serial port registrations */ |
241 | 241 | ||
242 | #define S3C2410_PA_UART0 (S3C24XX_PA_UART) | ||
243 | #define S3C2410_PA_UART1 (S3C24XX_PA_UART + 0x4000 ) | ||
244 | #define S3C2410_PA_UART2 (S3C24XX_PA_UART + 0x8000 ) | ||
245 | #define S3C2443_PA_UART3 (S3C24XX_PA_UART + 0xC000 ) | ||
246 | |||
242 | static struct resource s3c2410_uart0_resource[] = { | 247 | static struct resource s3c2410_uart0_resource[] = { |
243 | [0] = DEFINE_RES_MEM(S3C2410_PA_UART0, SZ_16K), | 248 | [0] = DEFINE_RES_MEM(S3C2410_PA_UART0, SZ_16K), |
244 | [1] = DEFINE_RES_NAMED(IRQ_S3CUART_RX0, \ | 249 | [1] = DEFINE_RES_NAMED(IRQ_S3CUART_RX0, \ |
diff --git a/arch/arm/mach-s3c24xx/include/mach/irqs.h b/arch/arm/mach-s3c24xx/include/mach/irqs.h index b7a9f4d469e8..1e73f5fa8659 100644 --- a/arch/arm/mach-s3c24xx/include/mach/irqs.h +++ b/arch/arm/mach-s3c24xx/include/mach/irqs.h | |||
@@ -188,10 +188,8 @@ | |||
188 | 188 | ||
189 | #if defined(CONFIG_CPU_S3C2416) | 189 | #if defined(CONFIG_CPU_S3C2416) |
190 | #define NR_IRQS (IRQ_S3C2416_I2S1 + 1) | 190 | #define NR_IRQS (IRQ_S3C2416_I2S1 + 1) |
191 | #elif defined(CONFIG_CPU_S3C2443) | ||
192 | #define NR_IRQS (IRQ_S3C2443_AC97+1) | ||
193 | #else | 191 | #else |
194 | #define NR_IRQS (IRQ_S3C2440_AC97+1) | 192 | #define NR_IRQS (IRQ_S3C2443_AC97 + 1) |
195 | #endif | 193 | #endif |
196 | 194 | ||
197 | /* compatibility define. */ | 195 | /* compatibility define. */ |
diff --git a/arch/arm/mach-s3c24xx/irq.c b/arch/arm/mach-s3c24xx/irq.c index cb9f5e011e73..d8ba9bee4c7e 100644 --- a/arch/arm/mach-s3c24xx/irq.c +++ b/arch/arm/mach-s3c24xx/irq.c | |||
@@ -500,7 +500,7 @@ struct s3c_irq_intc *s3c24xx_init_intc(struct device_node *np, | |||
500 | base = (void *)0xfd000000; | 500 | base = (void *)0xfd000000; |
501 | 501 | ||
502 | intc->reg_mask = base + 0xa4; | 502 | intc->reg_mask = base + 0xa4; |
503 | intc->reg_pending = base + 0x08; | 503 | intc->reg_pending = base + 0xa8; |
504 | irq_num = 20; | 504 | irq_num = 20; |
505 | irq_start = S3C2410_IRQ(32); | 505 | irq_start = S3C2410_IRQ(32); |
506 | irq_offset = 4; | 506 | irq_offset = 4; |
diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c b/arch/arm/mach-s3c64xx/setup-usb-phy.c index c8174d95339b..ca960bda02fd 100644 --- a/arch/arm/mach-s3c64xx/setup-usb-phy.c +++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c | |||
@@ -76,7 +76,7 @@ static int s3c_usb_otgphy_exit(struct platform_device *pdev) | |||
76 | 76 | ||
77 | int s5p_usb_phy_init(struct platform_device *pdev, int type) | 77 | int s5p_usb_phy_init(struct platform_device *pdev, int type) |
78 | { | 78 | { |
79 | if (type == S5P_USB_PHY_DEVICE) | 79 | if (type == USB_PHY_TYPE_DEVICE) |
80 | return s3c_usb_otgphy_init(pdev); | 80 | return s3c_usb_otgphy_init(pdev); |
81 | 81 | ||
82 | return -EINVAL; | 82 | return -EINVAL; |
@@ -84,7 +84,7 @@ int s5p_usb_phy_init(struct platform_device *pdev, int type) | |||
84 | 84 | ||
85 | int s5p_usb_phy_exit(struct platform_device *pdev, int type) | 85 | int s5p_usb_phy_exit(struct platform_device *pdev, int type) |
86 | { | 86 | { |
87 | if (type == S5P_USB_PHY_DEVICE) | 87 | if (type == USB_PHY_TYPE_DEVICE) |
88 | return s3c_usb_otgphy_exit(pdev); | 88 | return s3c_usb_otgphy_exit(pdev); |
89 | 89 | ||
90 | return -EINVAL; | 90 | return -EINVAL; |
diff --git a/arch/arm/mach-s5pv210/setup-usb-phy.c b/arch/arm/mach-s5pv210/setup-usb-phy.c index 356a0900af03..b2ee5333f89c 100644 --- a/arch/arm/mach-s5pv210/setup-usb-phy.c +++ b/arch/arm/mach-s5pv210/setup-usb-phy.c | |||
@@ -80,7 +80,7 @@ static int s5pv210_usb_otgphy_exit(struct platform_device *pdev) | |||
80 | 80 | ||
81 | int s5p_usb_phy_init(struct platform_device *pdev, int type) | 81 | int s5p_usb_phy_init(struct platform_device *pdev, int type) |
82 | { | 82 | { |
83 | if (type == S5P_USB_PHY_DEVICE) | 83 | if (type == USB_PHY_TYPE_DEVICE) |
84 | return s5pv210_usb_otgphy_init(pdev); | 84 | return s5pv210_usb_otgphy_init(pdev); |
85 | 85 | ||
86 | return -EINVAL; | 86 | return -EINVAL; |
@@ -88,7 +88,7 @@ int s5p_usb_phy_init(struct platform_device *pdev, int type) | |||
88 | 88 | ||
89 | int s5p_usb_phy_exit(struct platform_device *pdev, int type) | 89 | int s5p_usb_phy_exit(struct platform_device *pdev, int type) |
90 | { | 90 | { |
91 | if (type == S5P_USB_PHY_DEVICE) | 91 | if (type == USB_PHY_TYPE_DEVICE) |
92 | return s5pv210_usb_otgphy_exit(pdev); | 92 | return s5pv210_usb_otgphy_exit(pdev); |
93 | 93 | ||
94 | return -EINVAL; | 94 | return -EINVAL; |
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c index f2ec0777cfbe..ff8b7ba9b93c 100644 --- a/arch/arm/mach-shmobile/board-armadillo800eva.c +++ b/arch/arm/mach-shmobile/board-armadillo800eva.c | |||
@@ -169,7 +169,7 @@ static int usbhsf_get_id(struct platform_device *pdev) | |||
169 | return USBHS_GADGET; | 169 | return USBHS_GADGET; |
170 | } | 170 | } |
171 | 171 | ||
172 | static void usbhsf_power_ctrl(struct platform_device *pdev, | 172 | static int usbhsf_power_ctrl(struct platform_device *pdev, |
173 | void __iomem *base, int enable) | 173 | void __iomem *base, int enable) |
174 | { | 174 | { |
175 | struct usbhsf_private *priv = usbhsf_get_priv(pdev); | 175 | struct usbhsf_private *priv = usbhsf_get_priv(pdev); |
@@ -223,6 +223,8 @@ static void usbhsf_power_ctrl(struct platform_device *pdev, | |||
223 | clk_disable(priv->pci); /* usb work around */ | 223 | clk_disable(priv->pci); /* usb work around */ |
224 | clk_disable(priv->usb24); /* usb work around */ | 224 | clk_disable(priv->usb24); /* usb work around */ |
225 | } | 225 | } |
226 | |||
227 | return 0; | ||
226 | } | 228 | } |
227 | 229 | ||
228 | static int usbhsf_get_vbus(struct platform_device *pdev) | 230 | static int usbhsf_get_vbus(struct platform_device *pdev) |
@@ -239,7 +241,7 @@ static irqreturn_t usbhsf_interrupt(int irq, void *data) | |||
239 | return IRQ_HANDLED; | 241 | return IRQ_HANDLED; |
240 | } | 242 | } |
241 | 243 | ||
242 | static void usbhsf_hardware_exit(struct platform_device *pdev) | 244 | static int usbhsf_hardware_exit(struct platform_device *pdev) |
243 | { | 245 | { |
244 | struct usbhsf_private *priv = usbhsf_get_priv(pdev); | 246 | struct usbhsf_private *priv = usbhsf_get_priv(pdev); |
245 | 247 | ||
@@ -264,6 +266,8 @@ static void usbhsf_hardware_exit(struct platform_device *pdev) | |||
264 | priv->usbh_base = NULL; | 266 | priv->usbh_base = NULL; |
265 | 267 | ||
266 | free_irq(IRQ7, pdev); | 268 | free_irq(IRQ7, pdev); |
269 | |||
270 | return 0; | ||
267 | } | 271 | } |
268 | 272 | ||
269 | static int usbhsf_hardware_init(struct platform_device *pdev) | 273 | static int usbhsf_hardware_init(struct platform_device *pdev) |
diff --git a/arch/arm/mach-shmobile/board-kzm9g.c b/arch/arm/mach-shmobile/board-kzm9g.c index 7f3a6b7e7b7c..a385f570bbfc 100644 --- a/arch/arm/mach-shmobile/board-kzm9g.c +++ b/arch/arm/mach-shmobile/board-kzm9g.c | |||
@@ -155,12 +155,14 @@ static int usbhs_get_vbus(struct platform_device *pdev) | |||
155 | return !((1 << 7) & __raw_readw(priv->cr2)); | 155 | return !((1 << 7) & __raw_readw(priv->cr2)); |
156 | } | 156 | } |
157 | 157 | ||
158 | static void usbhs_phy_reset(struct platform_device *pdev) | 158 | static int usbhs_phy_reset(struct platform_device *pdev) |
159 | { | 159 | { |
160 | struct usbhs_private *priv = usbhs_get_priv(pdev); | 160 | struct usbhs_private *priv = usbhs_get_priv(pdev); |
161 | 161 | ||
162 | /* init phy */ | 162 | /* init phy */ |
163 | __raw_writew(0x8a0a, priv->cr2); | 163 | __raw_writew(0x8a0a, priv->cr2); |
164 | |||
165 | return 0; | ||
164 | } | 166 | } |
165 | 167 | ||
166 | static int usbhs_get_id(struct platform_device *pdev) | 168 | static int usbhs_get_id(struct platform_device *pdev) |
@@ -202,7 +204,7 @@ static int usbhs_hardware_init(struct platform_device *pdev) | |||
202 | return 0; | 204 | return 0; |
203 | } | 205 | } |
204 | 206 | ||
205 | static void usbhs_hardware_exit(struct platform_device *pdev) | 207 | static int usbhs_hardware_exit(struct platform_device *pdev) |
206 | { | 208 | { |
207 | struct usbhs_private *priv = usbhs_get_priv(pdev); | 209 | struct usbhs_private *priv = usbhs_get_priv(pdev); |
208 | 210 | ||
@@ -210,6 +212,8 @@ static void usbhs_hardware_exit(struct platform_device *pdev) | |||
210 | __raw_writew(USB_PHY_MODE | USB_PHY_INT_CLR, priv->phy); | 212 | __raw_writew(USB_PHY_MODE | USB_PHY_INT_CLR, priv->phy); |
211 | 213 | ||
212 | free_irq(IRQ15, pdev); | 214 | free_irq(IRQ15, pdev); |
215 | |||
216 | return 0; | ||
213 | } | 217 | } |
214 | 218 | ||
215 | static u32 usbhs_pipe_cfg[] = { | 219 | static u32 usbhs_pipe_cfg[] = { |
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index db968a585ff0..979237c18dad 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c | |||
@@ -596,12 +596,14 @@ static int usbhs_get_vbus(struct platform_device *pdev) | |||
596 | return usbhs_is_connected(usbhs_get_priv(pdev)); | 596 | return usbhs_is_connected(usbhs_get_priv(pdev)); |
597 | } | 597 | } |
598 | 598 | ||
599 | static void usbhs_phy_reset(struct platform_device *pdev) | 599 | static int usbhs_phy_reset(struct platform_device *pdev) |
600 | { | 600 | { |
601 | struct usbhs_private *priv = usbhs_get_priv(pdev); | 601 | struct usbhs_private *priv = usbhs_get_priv(pdev); |
602 | 602 | ||
603 | /* init phy */ | 603 | /* init phy */ |
604 | __raw_writew(0x8a0a, priv->usbcrcaddr); | 604 | __raw_writew(0x8a0a, priv->usbcrcaddr); |
605 | |||
606 | return 0; | ||
605 | } | 607 | } |
606 | 608 | ||
607 | static int usbhs0_get_id(struct platform_device *pdev) | 609 | static int usbhs0_get_id(struct platform_device *pdev) |
@@ -628,11 +630,13 @@ static int usbhs0_hardware_init(struct platform_device *pdev) | |||
628 | return 0; | 630 | return 0; |
629 | } | 631 | } |
630 | 632 | ||
631 | static void usbhs0_hardware_exit(struct platform_device *pdev) | 633 | static int usbhs0_hardware_exit(struct platform_device *pdev) |
632 | { | 634 | { |
633 | struct usbhs_private *priv = usbhs_get_priv(pdev); | 635 | struct usbhs_private *priv = usbhs_get_priv(pdev); |
634 | 636 | ||
635 | cancel_delayed_work_sync(&priv->work); | 637 | cancel_delayed_work_sync(&priv->work); |
638 | |||
639 | return 0; | ||
636 | } | 640 | } |
637 | 641 | ||
638 | static struct usbhs_private usbhs0_private = { | 642 | static struct usbhs_private usbhs0_private = { |
@@ -735,7 +739,7 @@ static int usbhs1_hardware_init(struct platform_device *pdev) | |||
735 | return 0; | 739 | return 0; |
736 | } | 740 | } |
737 | 741 | ||
738 | static void usbhs1_hardware_exit(struct platform_device *pdev) | 742 | static int usbhs1_hardware_exit(struct platform_device *pdev) |
739 | { | 743 | { |
740 | struct usbhs_private *priv = usbhs_get_priv(pdev); | 744 | struct usbhs_private *priv = usbhs_get_priv(pdev); |
741 | 745 | ||
@@ -743,6 +747,8 @@ static void usbhs1_hardware_exit(struct platform_device *pdev) | |||
743 | __raw_writew(USB_PHY_MODE | USB_PHY_INT_CLR, priv->usbphyaddr); | 747 | __raw_writew(USB_PHY_MODE | USB_PHY_INT_CLR, priv->usbphyaddr); |
744 | 748 | ||
745 | free_irq(IRQ8, pdev); | 749 | free_irq(IRQ8, pdev); |
750 | |||
751 | return 0; | ||
746 | } | 752 | } |
747 | 753 | ||
748 | static int usbhs1_get_id(struct platform_device *pdev) | 754 | static int usbhs1_get_id(struct platform_device *pdev) |
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig index d1c4893894ce..dbc653ea851c 100644 --- a/arch/arm/mach-tegra/Kconfig +++ b/arch/arm/mach-tegra/Kconfig | |||
@@ -18,8 +18,8 @@ config ARCH_TEGRA_2x_SOC | |||
18 | select PL310_ERRATA_727915 if CACHE_L2X0 | 18 | select PL310_ERRATA_727915 if CACHE_L2X0 |
19 | select PL310_ERRATA_769419 if CACHE_L2X0 | 19 | select PL310_ERRATA_769419 if CACHE_L2X0 |
20 | select USB_ARCH_HAS_EHCI if USB_SUPPORT | 20 | select USB_ARCH_HAS_EHCI if USB_SUPPORT |
21 | select USB_ULPI if USB | 21 | select USB_ULPI if USB_PHY |
22 | select USB_ULPI_VIEWPORT if USB_SUPPORT | 22 | select USB_ULPI_VIEWPORT if USB_PHY |
23 | help | 23 | help |
24 | Support for NVIDIA Tegra AP20 and T20 processors, based on the | 24 | Support for NVIDIA Tegra AP20 and T20 processors, based on the |
25 | ARM CortexA9MP CPU and the ARM PL310 L2 cache controller | 25 | ARM CortexA9MP CPU and the ARM PL310 L2 cache controller |
@@ -37,8 +37,8 @@ config ARCH_TEGRA_3x_SOC | |||
37 | select PINCTRL_TEGRA30 | 37 | select PINCTRL_TEGRA30 |
38 | select PL310_ERRATA_769419 if CACHE_L2X0 | 38 | select PL310_ERRATA_769419 if CACHE_L2X0 |
39 | select USB_ARCH_HAS_EHCI if USB_SUPPORT | 39 | select USB_ARCH_HAS_EHCI if USB_SUPPORT |
40 | select USB_ULPI if USB | 40 | select USB_ULPI if USB_PHY |
41 | select USB_ULPI_VIEWPORT if USB_SUPPORT | 41 | select USB_ULPI_VIEWPORT if USB_PHY |
42 | help | 42 | help |
43 | Support for NVIDIA Tegra T30 processor family, based on the | 43 | Support for NVIDIA Tegra T30 processor family, based on the |
44 | ARM CortexA9MP CPU and the ARM PL310 L2 cache controller | 44 | ARM CortexA9MP CPU and the ARM PL310 L2 cache controller |
diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c index 2a17bc506cff..ff3c9f016591 100644 --- a/arch/arm/mach-ux500/board-mop500-regulators.c +++ b/arch/arm/mach-ux500/board-mop500-regulators.c | |||
@@ -5,6 +5,7 @@ | |||
5 | * | 5 | * |
6 | * Authors: Sundar Iyer <sundar.iyer@stericsson.com> | 6 | * Authors: Sundar Iyer <sundar.iyer@stericsson.com> |
7 | * Bengt Jonsson <bengt.g.jonsson@stericsson.com> | 7 | * Bengt Jonsson <bengt.g.jonsson@stericsson.com> |
8 | * Daniel Willerud <daniel.willerud@stericsson.com> | ||
8 | * | 9 | * |
9 | * MOP500 board specific initialization for regulators | 10 | * MOP500 board specific initialization for regulators |
10 | */ | 11 | */ |
@@ -12,6 +13,7 @@ | |||
12 | #include <linux/regulator/machine.h> | 13 | #include <linux/regulator/machine.h> |
13 | #include <linux/regulator/ab8500.h> | 14 | #include <linux/regulator/ab8500.h> |
14 | #include "board-mop500-regulators.h" | 15 | #include "board-mop500-regulators.h" |
16 | #include "id.h" | ||
15 | 17 | ||
16 | static struct regulator_consumer_supply gpio_en_3v3_consumers[] = { | 18 | static struct regulator_consumer_supply gpio_en_3v3_consumers[] = { |
17 | REGULATOR_SUPPLY("vdd33a", "smsc911x.0"), | 19 | REGULATOR_SUPPLY("vdd33a", "smsc911x.0"), |
@@ -53,21 +55,37 @@ struct regulator_init_data tps61052_regulator = { | |||
53 | }; | 55 | }; |
54 | 56 | ||
55 | static struct regulator_consumer_supply ab8500_vaux1_consumers[] = { | 57 | static struct regulator_consumer_supply ab8500_vaux1_consumers[] = { |
56 | /* External displays, connector on board 2v5 power supply */ | 58 | /* Main display, u8500 R3 uib */ |
57 | REGULATOR_SUPPLY("vaux12v5", "mcde.0"), | 59 | REGULATOR_SUPPLY("vddi", "mcde_disp_sony_acx424akp.0"), |
60 | /* Main display, u8500 uib and ST uib */ | ||
61 | REGULATOR_SUPPLY("vdd1", "samsung_s6d16d0.0"), | ||
62 | /* Secondary display, ST uib */ | ||
63 | REGULATOR_SUPPLY("vdd1", "samsung_s6d16d0.1"), | ||
58 | /* SFH7741 proximity sensor */ | 64 | /* SFH7741 proximity sensor */ |
59 | REGULATOR_SUPPLY("vcc", "gpio-keys.0"), | 65 | REGULATOR_SUPPLY("vcc", "gpio-keys.0"), |
60 | /* BH1780GLS ambient light sensor */ | 66 | /* BH1780GLS ambient light sensor */ |
61 | REGULATOR_SUPPLY("vcc", "2-0029"), | 67 | REGULATOR_SUPPLY("vcc", "2-0029"), |
62 | /* lsm303dlh accelerometer */ | 68 | /* lsm303dlh accelerometer */ |
63 | REGULATOR_SUPPLY("vdd", "3-0018"), | 69 | REGULATOR_SUPPLY("vdd", "2-0018"), |
70 | /* lsm303dlhc accelerometer */ | ||
71 | REGULATOR_SUPPLY("vdd", "2-0019"), | ||
64 | /* lsm303dlh magnetometer */ | 72 | /* lsm303dlh magnetometer */ |
65 | REGULATOR_SUPPLY("vdd", "3-001e"), | 73 | REGULATOR_SUPPLY("vdd", "2-001e"), |
66 | /* Rohm BU21013 Touchscreen devices */ | 74 | /* Rohm BU21013 Touchscreen devices */ |
67 | REGULATOR_SUPPLY("avdd", "3-005c"), | 75 | REGULATOR_SUPPLY("avdd", "3-005c"), |
68 | REGULATOR_SUPPLY("avdd", "3-005d"), | 76 | REGULATOR_SUPPLY("avdd", "3-005d"), |
69 | /* Synaptics RMI4 Touchscreen device */ | 77 | /* Synaptics RMI4 Touchscreen device */ |
70 | REGULATOR_SUPPLY("vdd", "3-004b"), | 78 | REGULATOR_SUPPLY("vdd", "3-004b"), |
79 | /* L3G4200D Gyroscope device */ | ||
80 | REGULATOR_SUPPLY("vdd", "2-0068"), | ||
81 | /* Ambient light sensor device */ | ||
82 | REGULATOR_SUPPLY("vdd", "3-0029"), | ||
83 | /* Pressure sensor device */ | ||
84 | REGULATOR_SUPPLY("vdd", "2-005c"), | ||
85 | /* Cypress TrueTouch Touchscreen device */ | ||
86 | REGULATOR_SUPPLY("vcpin", "spi8.0"), | ||
87 | /* Camera device */ | ||
88 | REGULATOR_SUPPLY("vaux12v5", "mmio_camera"), | ||
71 | }; | 89 | }; |
72 | 90 | ||
73 | static struct regulator_consumer_supply ab8500_vaux2_consumers[] = { | 91 | static struct regulator_consumer_supply ab8500_vaux2_consumers[] = { |
@@ -75,18 +93,50 @@ static struct regulator_consumer_supply ab8500_vaux2_consumers[] = { | |||
75 | REGULATOR_SUPPLY("vmmc", "sdi4"), | 93 | REGULATOR_SUPPLY("vmmc", "sdi4"), |
76 | /* AB8500 audio codec */ | 94 | /* AB8500 audio codec */ |
77 | REGULATOR_SUPPLY("vcc-N2158", "ab8500-codec.0"), | 95 | REGULATOR_SUPPLY("vcc-N2158", "ab8500-codec.0"), |
96 | /* AB8500 accessory detect 1 */ | ||
97 | REGULATOR_SUPPLY("vcc-N2158", "ab8500-acc-det.0"), | ||
98 | /* AB8500 Tv-out device */ | ||
99 | REGULATOR_SUPPLY("vcc-N2158", "mcde_tv_ab8500.4"), | ||
100 | /* AV8100 HDMI device */ | ||
101 | REGULATOR_SUPPLY("vcc-N2158", "av8100_hdmi.3"), | ||
78 | }; | 102 | }; |
79 | 103 | ||
80 | static struct regulator_consumer_supply ab8500_vaux3_consumers[] = { | 104 | static struct regulator_consumer_supply ab8500_vaux3_consumers[] = { |
105 | REGULATOR_SUPPLY("v-SD-STM", "stm"), | ||
81 | /* External MMC slot power */ | 106 | /* External MMC slot power */ |
82 | REGULATOR_SUPPLY("vmmc", "sdi0"), | 107 | REGULATOR_SUPPLY("vmmc", "sdi0"), |
83 | }; | 108 | }; |
84 | 109 | ||
110 | static struct regulator_consumer_supply ab8505_vaux4_consumers[] = { | ||
111 | }; | ||
112 | |||
113 | static struct regulator_consumer_supply ab8505_vaux5_consumers[] = { | ||
114 | }; | ||
115 | |||
116 | static struct regulator_consumer_supply ab8505_vaux6_consumers[] = { | ||
117 | }; | ||
118 | |||
119 | static struct regulator_consumer_supply ab8505_vaux8_consumers[] = { | ||
120 | /* AB8500 audio codec device */ | ||
121 | REGULATOR_SUPPLY("v-aux8", NULL), | ||
122 | }; | ||
123 | |||
124 | static struct regulator_consumer_supply ab8505_vadc_consumers[] = { | ||
125 | /* Internal general-purpose ADC */ | ||
126 | REGULATOR_SUPPLY("vddadc", "ab8500-gpadc.0"), | ||
127 | /* ADC for charger */ | ||
128 | REGULATOR_SUPPLY("vddadc", "ab8500-charger.0"), | ||
129 | }; | ||
130 | |||
85 | static struct regulator_consumer_supply ab8500_vtvout_consumers[] = { | 131 | static struct regulator_consumer_supply ab8500_vtvout_consumers[] = { |
86 | /* TV-out DENC supply */ | 132 | /* TV-out DENC supply */ |
87 | REGULATOR_SUPPLY("vtvout", "ab8500-denc.0"), | 133 | REGULATOR_SUPPLY("vtvout", "ab8500-denc.0"), |
88 | /* Internal general-purpose ADC */ | 134 | /* Internal general-purpose ADC */ |
89 | REGULATOR_SUPPLY("vddadc", "ab8500-gpadc.0"), | 135 | REGULATOR_SUPPLY("vddadc", "ab8500-gpadc.0"), |
136 | /* ADC for charger */ | ||
137 | REGULATOR_SUPPLY("vddadc", "ab8500-charger.0"), | ||
138 | /* AB8500 Tv-out device */ | ||
139 | REGULATOR_SUPPLY("vtvout", "mcde_tv_ab8500.4"), | ||
90 | }; | 140 | }; |
91 | 141 | ||
92 | static struct regulator_consumer_supply ab8500_vaud_consumers[] = { | 142 | static struct regulator_consumer_supply ab8500_vaud_consumers[] = { |
@@ -114,77 +164,90 @@ static struct regulator_consumer_supply ab8500_vintcore_consumers[] = { | |||
114 | REGULATOR_SUPPLY("v-intcore", NULL), | 164 | REGULATOR_SUPPLY("v-intcore", NULL), |
115 | /* USB Transceiver */ | 165 | /* USB Transceiver */ |
116 | REGULATOR_SUPPLY("vddulpivio18", "ab8500-usb.0"), | 166 | REGULATOR_SUPPLY("vddulpivio18", "ab8500-usb.0"), |
167 | /* Handled by abx500 clk driver */ | ||
168 | REGULATOR_SUPPLY("v-intcore", "abx500-clk.0"), | ||
169 | }; | ||
170 | |||
171 | static struct regulator_consumer_supply ab8505_usb_consumers[] = { | ||
172 | /* HS USB OTG physical interface */ | ||
173 | REGULATOR_SUPPLY("v-ape", NULL), | ||
117 | }; | 174 | }; |
118 | 175 | ||
119 | static struct regulator_consumer_supply ab8500_vana_consumers[] = { | 176 | static struct regulator_consumer_supply ab8500_vana_consumers[] = { |
120 | /* External displays, connector on board, 1v8 power supply */ | 177 | /* DB8500 DSI */ |
121 | REGULATOR_SUPPLY("vsmps2", "mcde.0"), | 178 | REGULATOR_SUPPLY("vdddsi1v2", "mcde"), |
179 | REGULATOR_SUPPLY("vdddsi1v2", "b2r2_core"), | ||
180 | REGULATOR_SUPPLY("vdddsi1v2", "b2r2_1_core"), | ||
181 | REGULATOR_SUPPLY("vdddsi1v2", "dsilink.0"), | ||
182 | REGULATOR_SUPPLY("vdddsi1v2", "dsilink.1"), | ||
183 | REGULATOR_SUPPLY("vdddsi1v2", "dsilink.2"), | ||
184 | /* DB8500 CSI */ | ||
185 | REGULATOR_SUPPLY("vddcsi1v2", "mmio_camera"), | ||
122 | }; | 186 | }; |
123 | 187 | ||
124 | /* ab8500 regulator register initialization */ | 188 | /* ab8500 regulator register initialization */ |
125 | struct ab8500_regulator_reg_init | 189 | static struct ab8500_regulator_reg_init ab8500_reg_init[] = { |
126 | ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = { | ||
127 | /* | 190 | /* |
128 | * VanaRequestCtrl = HP/LP depending on VxRequest | 191 | * VanaRequestCtrl = HP/LP depending on VxRequest |
129 | * VextSupply1RequestCtrl = HP/LP depending on VxRequest | 192 | * VextSupply1RequestCtrl = HP/LP depending on VxRequest |
130 | */ | 193 | */ |
131 | INIT_REGULATOR_REGISTER(AB8500_REGUREQUESTCTRL2, 0x00), | 194 | INIT_REGULATOR_REGISTER(AB8500_REGUREQUESTCTRL2, 0xf0, 0x00), |
132 | /* | 195 | /* |
133 | * VextSupply2RequestCtrl = HP/LP depending on VxRequest | 196 | * VextSupply2RequestCtrl = HP/LP depending on VxRequest |
134 | * VextSupply3RequestCtrl = HP/LP depending on VxRequest | 197 | * VextSupply3RequestCtrl = HP/LP depending on VxRequest |
135 | * Vaux1RequestCtrl = HP/LP depending on VxRequest | 198 | * Vaux1RequestCtrl = HP/LP depending on VxRequest |
136 | * Vaux2RequestCtrl = HP/LP depending on VxRequest | 199 | * Vaux2RequestCtrl = HP/LP depending on VxRequest |
137 | */ | 200 | */ |
138 | INIT_REGULATOR_REGISTER(AB8500_REGUREQUESTCTRL3, 0x00), | 201 | INIT_REGULATOR_REGISTER(AB8500_REGUREQUESTCTRL3, 0xff, 0x00), |
139 | /* | 202 | /* |
140 | * Vaux3RequestCtrl = HP/LP depending on VxRequest | 203 | * Vaux3RequestCtrl = HP/LP depending on VxRequest |
141 | * SwHPReq = Control through SWValid disabled | 204 | * SwHPReq = Control through SWValid disabled |
142 | */ | 205 | */ |
143 | INIT_REGULATOR_REGISTER(AB8500_REGUREQUESTCTRL4, 0x00), | 206 | INIT_REGULATOR_REGISTER(AB8500_REGUREQUESTCTRL4, 0x07, 0x00), |
144 | /* | 207 | /* |
145 | * VanaSysClkReq1HPValid = disabled | 208 | * VanaSysClkReq1HPValid = disabled |
146 | * Vaux1SysClkReq1HPValid = disabled | 209 | * Vaux1SysClkReq1HPValid = disabled |
147 | * Vaux2SysClkReq1HPValid = disabled | 210 | * Vaux2SysClkReq1HPValid = disabled |
148 | * Vaux3SysClkReq1HPValid = disabled | 211 | * Vaux3SysClkReq1HPValid = disabled |
149 | */ | 212 | */ |
150 | INIT_REGULATOR_REGISTER(AB8500_REGUSYSCLKREQ1HPVALID1, 0x00), | 213 | INIT_REGULATOR_REGISTER(AB8500_REGUSYSCLKREQ1HPVALID1, 0xe8, 0x00), |
151 | /* | 214 | /* |
152 | * VextSupply1SysClkReq1HPValid = disabled | 215 | * VextSupply1SysClkReq1HPValid = disabled |
153 | * VextSupply2SysClkReq1HPValid = disabled | 216 | * VextSupply2SysClkReq1HPValid = disabled |
154 | * VextSupply3SysClkReq1HPValid = SysClkReq1 controlled | 217 | * VextSupply3SysClkReq1HPValid = SysClkReq1 controlled |
155 | */ | 218 | */ |
156 | INIT_REGULATOR_REGISTER(AB8500_REGUSYSCLKREQ1HPVALID2, 0x40), | 219 | INIT_REGULATOR_REGISTER(AB8500_REGUSYSCLKREQ1HPVALID2, 0x70, 0x40), |
157 | /* | 220 | /* |
158 | * VanaHwHPReq1Valid = disabled | 221 | * VanaHwHPReq1Valid = disabled |
159 | * Vaux1HwHPreq1Valid = disabled | 222 | * Vaux1HwHPreq1Valid = disabled |
160 | * Vaux2HwHPReq1Valid = disabled | 223 | * Vaux2HwHPReq1Valid = disabled |
161 | * Vaux3HwHPReqValid = disabled | 224 | * Vaux3HwHPReqValid = disabled |
162 | */ | 225 | */ |
163 | INIT_REGULATOR_REGISTER(AB8500_REGUHWHPREQ1VALID1, 0x00), | 226 | INIT_REGULATOR_REGISTER(AB8500_REGUHWHPREQ1VALID1, 0xe8, 0x00), |
164 | /* | 227 | /* |
165 | * VextSupply1HwHPReq1Valid = disabled | 228 | * VextSupply1HwHPReq1Valid = disabled |
166 | * VextSupply2HwHPReq1Valid = disabled | 229 | * VextSupply2HwHPReq1Valid = disabled |
167 | * VextSupply3HwHPReq1Valid = disabled | 230 | * VextSupply3HwHPReq1Valid = disabled |
168 | */ | 231 | */ |
169 | INIT_REGULATOR_REGISTER(AB8500_REGUHWHPREQ1VALID2, 0x00), | 232 | INIT_REGULATOR_REGISTER(AB8500_REGUHWHPREQ1VALID2, 0x07, 0x00), |
170 | /* | 233 | /* |
171 | * VanaHwHPReq2Valid = disabled | 234 | * VanaHwHPReq2Valid = disabled |
172 | * Vaux1HwHPReq2Valid = disabled | 235 | * Vaux1HwHPReq2Valid = disabled |
173 | * Vaux2HwHPReq2Valid = disabled | 236 | * Vaux2HwHPReq2Valid = disabled |
174 | * Vaux3HwHPReq2Valid = disabled | 237 | * Vaux3HwHPReq2Valid = disabled |
175 | */ | 238 | */ |
176 | INIT_REGULATOR_REGISTER(AB8500_REGUHWHPREQ2VALID1, 0x00), | 239 | INIT_REGULATOR_REGISTER(AB8500_REGUHWHPREQ2VALID1, 0xe8, 0x00), |
177 | /* | 240 | /* |
178 | * VextSupply1HwHPReq2Valid = disabled | 241 | * VextSupply1HwHPReq2Valid = disabled |
179 | * VextSupply2HwHPReq2Valid = disabled | 242 | * VextSupply2HwHPReq2Valid = disabled |
180 | * VextSupply3HwHPReq2Valid = HWReq2 controlled | 243 | * VextSupply3HwHPReq2Valid = HWReq2 controlled |
181 | */ | 244 | */ |
182 | INIT_REGULATOR_REGISTER(AB8500_REGUHWHPREQ2VALID2, 0x04), | 245 | INIT_REGULATOR_REGISTER(AB8500_REGUHWHPREQ2VALID2, 0x07, 0x04), |
183 | /* | 246 | /* |
184 | * VanaSwHPReqValid = disabled | 247 | * VanaSwHPReqValid = disabled |
185 | * Vaux1SwHPReqValid = disabled | 248 | * Vaux1SwHPReqValid = disabled |
186 | */ | 249 | */ |
187 | INIT_REGULATOR_REGISTER(AB8500_REGUSWHPREQVALID1, 0x00), | 250 | INIT_REGULATOR_REGISTER(AB8500_REGUSWHPREQVALID1, 0xa0, 0x00), |
188 | /* | 251 | /* |
189 | * Vaux2SwHPReqValid = disabled | 252 | * Vaux2SwHPReqValid = disabled |
190 | * Vaux3SwHPReqValid = disabled | 253 | * Vaux3SwHPReqValid = disabled |
@@ -192,7 +255,7 @@ ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = { | |||
192 | * VextSupply2SwHPReqValid = disabled | 255 | * VextSupply2SwHPReqValid = disabled |
193 | * VextSupply3SwHPReqValid = disabled | 256 | * VextSupply3SwHPReqValid = disabled |
194 | */ | 257 | */ |
195 | INIT_REGULATOR_REGISTER(AB8500_REGUSWHPREQVALID2, 0x00), | 258 | INIT_REGULATOR_REGISTER(AB8500_REGUSWHPREQVALID2, 0x1f, 0x00), |
196 | /* | 259 | /* |
197 | * SysClkReq2Valid1 = SysClkReq2 controlled | 260 | * SysClkReq2Valid1 = SysClkReq2 controlled |
198 | * SysClkReq3Valid1 = disabled | 261 | * SysClkReq3Valid1 = disabled |
@@ -202,7 +265,7 @@ ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = { | |||
202 | * SysClkReq7Valid1 = disabled | 265 | * SysClkReq7Valid1 = disabled |
203 | * SysClkReq8Valid1 = disabled | 266 | * SysClkReq8Valid1 = disabled |
204 | */ | 267 | */ |
205 | INIT_REGULATOR_REGISTER(AB8500_REGUSYSCLKREQVALID1, 0x2a), | 268 | INIT_REGULATOR_REGISTER(AB8500_REGUSYSCLKREQVALID1, 0xfe, 0x2a), |
206 | /* | 269 | /* |
207 | * SysClkReq2Valid2 = disabled | 270 | * SysClkReq2Valid2 = disabled |
208 | * SysClkReq3Valid2 = disabled | 271 | * SysClkReq3Valid2 = disabled |
@@ -212,7 +275,7 @@ ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = { | |||
212 | * SysClkReq7Valid2 = disabled | 275 | * SysClkReq7Valid2 = disabled |
213 | * SysClkReq8Valid2 = disabled | 276 | * SysClkReq8Valid2 = disabled |
214 | */ | 277 | */ |
215 | INIT_REGULATOR_REGISTER(AB8500_REGUSYSCLKREQVALID2, 0x20), | 278 | INIT_REGULATOR_REGISTER(AB8500_REGUSYSCLKREQVALID2, 0xfe, 0x20), |
216 | /* | 279 | /* |
217 | * VTVoutEna = disabled | 280 | * VTVoutEna = disabled |
218 | * Vintcore12Ena = disabled | 281 | * Vintcore12Ena = disabled |
@@ -220,66 +283,62 @@ ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = { | |||
220 | * Vintcore12LP = inactive (HP) | 283 | * Vintcore12LP = inactive (HP) |
221 | * VTVoutLP = inactive (HP) | 284 | * VTVoutLP = inactive (HP) |
222 | */ | 285 | */ |
223 | INIT_REGULATOR_REGISTER(AB8500_REGUMISC1, 0x10), | 286 | INIT_REGULATOR_REGISTER(AB8500_REGUMISC1, 0xfe, 0x10), |
224 | /* | 287 | /* |
225 | * VaudioEna = disabled | 288 | * VaudioEna = disabled |
226 | * VdmicEna = disabled | 289 | * VdmicEna = disabled |
227 | * Vamic1Ena = disabled | 290 | * Vamic1Ena = disabled |
228 | * Vamic2Ena = disabled | 291 | * Vamic2Ena = disabled |
229 | */ | 292 | */ |
230 | INIT_REGULATOR_REGISTER(AB8500_VAUDIOSUPPLY, 0x00), | 293 | INIT_REGULATOR_REGISTER(AB8500_VAUDIOSUPPLY, 0x1e, 0x00), |
231 | /* | 294 | /* |
232 | * Vamic1_dzout = high-Z when Vamic1 is disabled | 295 | * Vamic1_dzout = high-Z when Vamic1 is disabled |
233 | * Vamic2_dzout = high-Z when Vamic2 is disabled | 296 | * Vamic2_dzout = high-Z when Vamic2 is disabled |
234 | */ | 297 | */ |
235 | INIT_REGULATOR_REGISTER(AB8500_REGUCTRL1VAMIC, 0x00), | 298 | INIT_REGULATOR_REGISTER(AB8500_REGUCTRL1VAMIC, 0x03, 0x00), |
236 | /* | 299 | /* |
237 | * VPll = Hw controlled | 300 | * VPll = Hw controlled (NOTE! PRCMU bits) |
238 | * VanaRegu = force off | 301 | * VanaRegu = force off |
239 | */ | 302 | */ |
240 | INIT_REGULATOR_REGISTER(AB8500_VPLLVANAREGU, 0x02), | 303 | INIT_REGULATOR_REGISTER(AB8500_VPLLVANAREGU, 0x0f, 0x02), |
241 | /* | 304 | /* |
242 | * VrefDDREna = disabled | 305 | * VrefDDREna = disabled |
243 | * VrefDDRSleepMode = inactive (no pulldown) | 306 | * VrefDDRSleepMode = inactive (no pulldown) |
244 | */ | 307 | */ |
245 | INIT_REGULATOR_REGISTER(AB8500_VREFDDR, 0x00), | 308 | INIT_REGULATOR_REGISTER(AB8500_VREFDDR, 0x03, 0x00), |
246 | /* | 309 | /* |
247 | * VextSupply1Regu = HW control | 310 | * VextSupply1Regu = force LP |
248 | * VextSupply2Regu = HW control | 311 | * VextSupply2Regu = force OFF |
249 | * VextSupply3Regu = HW control | 312 | * VextSupply3Regu = force HP (-> STBB2=LP and TPS=LP) |
250 | * ExtSupply2Bypass = ExtSupply12LPn ball is 0 when Ena is 0 | 313 | * ExtSupply2Bypass = ExtSupply12LPn ball is 0 when Ena is 0 |
251 | * ExtSupply3Bypass = ExtSupply3LPn ball is 0 when Ena is 0 | 314 | * ExtSupply3Bypass = ExtSupply3LPn ball is 0 when Ena is 0 |
252 | */ | 315 | */ |
253 | INIT_REGULATOR_REGISTER(AB8500_EXTSUPPLYREGU, 0x2a), | 316 | INIT_REGULATOR_REGISTER(AB8500_EXTSUPPLYREGU, 0xff, 0x13), |
254 | /* | 317 | /* |
255 | * Vaux1Regu = force HP | 318 | * Vaux1Regu = force HP |
256 | * Vaux2Regu = force off | 319 | * Vaux2Regu = force off |
257 | */ | 320 | */ |
258 | INIT_REGULATOR_REGISTER(AB8500_VAUX12REGU, 0x01), | 321 | INIT_REGULATOR_REGISTER(AB8500_VAUX12REGU, 0x0f, 0x01), |
259 | /* | 322 | /* |
260 | * Vaux3regu = force off | 323 | * Vaux3Regu = force off |
261 | */ | 324 | */ |
262 | INIT_REGULATOR_REGISTER(AB8500_VRF1VAUX3REGU, 0x00), | 325 | INIT_REGULATOR_REGISTER(AB8500_VRF1VAUX3REGU, 0x03, 0x00), |
263 | /* | 326 | /* |
264 | * Vsmps1 = 1.15V | 327 | * Vaux1Sel = 2.8 V |
265 | */ | 328 | */ |
266 | INIT_REGULATOR_REGISTER(AB8500_VSMPS1SEL1, 0x24), | 329 | INIT_REGULATOR_REGISTER(AB8500_VAUX1SEL, 0x0f, 0x0C), |
267 | /* | ||
268 | * Vaux1Sel = 2.5 V | ||
269 | */ | ||
270 | INIT_REGULATOR_REGISTER(AB8500_VAUX1SEL, 0x08), | ||
271 | /* | 330 | /* |
272 | * Vaux2Sel = 2.9 V | 331 | * Vaux2Sel = 2.9 V |
273 | */ | 332 | */ |
274 | INIT_REGULATOR_REGISTER(AB8500_VAUX2SEL, 0x0d), | 333 | INIT_REGULATOR_REGISTER(AB8500_VAUX2SEL, 0x0f, 0x0d), |
275 | /* | 334 | /* |
276 | * Vaux3Sel = 2.91 V | 335 | * Vaux3Sel = 2.91 V |
277 | */ | 336 | */ |
278 | INIT_REGULATOR_REGISTER(AB8500_VRF1VAUX3SEL, 0x07), | 337 | INIT_REGULATOR_REGISTER(AB8500_VRF1VAUX3SEL, 0x07, 0x07), |
279 | /* | 338 | /* |
280 | * VextSupply12LP = disabled (no LP) | 339 | * VextSupply12LP = disabled (no LP) |
281 | */ | 340 | */ |
282 | INIT_REGULATOR_REGISTER(AB8500_REGUCTRL2SPARE, 0x00), | 341 | INIT_REGULATOR_REGISTER(AB8500_REGUCTRL2SPARE, 0x01, 0x00), |
283 | /* | 342 | /* |
284 | * Vaux1Disch = short discharge time | 343 | * Vaux1Disch = short discharge time |
285 | * Vaux2Disch = short discharge time | 344 | * Vaux2Disch = short discharge time |
@@ -288,33 +347,26 @@ ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS] = { | |||
288 | * VTVoutDisch = short discharge time | 347 | * VTVoutDisch = short discharge time |
289 | * VaudioDisch = short discharge time | 348 | * VaudioDisch = short discharge time |
290 | */ | 349 | */ |
291 | INIT_REGULATOR_REGISTER(AB8500_REGUCTRLDISCH, 0x00), | 350 | INIT_REGULATOR_REGISTER(AB8500_REGUCTRLDISCH, 0xfc, 0x00), |
292 | /* | 351 | /* |
293 | * VanaDisch = short discharge time | 352 | * VanaDisch = short discharge time |
294 | * VdmicPullDownEna = pulldown disabled when Vdmic is disabled | 353 | * VdmicPullDownEna = pulldown disabled when Vdmic is disabled |
295 | * VdmicDisch = short discharge time | 354 | * VdmicDisch = short discharge time |
296 | */ | 355 | */ |
297 | INIT_REGULATOR_REGISTER(AB8500_REGUCTRLDISCH2, 0x00), | 356 | INIT_REGULATOR_REGISTER(AB8500_REGUCTRLDISCH2, 0x16, 0x00), |
298 | }; | 357 | }; |
299 | 358 | ||
300 | /* AB8500 regulators */ | 359 | /* AB8500 regulators */ |
301 | struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = { | 360 | static struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = { |
302 | /* supplies to the display/camera */ | 361 | /* supplies to the display/camera */ |
303 | [AB8500_LDO_AUX1] = { | 362 | [AB8500_LDO_AUX1] = { |
304 | .constraints = { | 363 | .constraints = { |
305 | .name = "V-DISPLAY", | 364 | .name = "V-DISPLAY", |
306 | .min_uV = 2500000, | 365 | .min_uV = 2800000, |
307 | .max_uV = 2900000, | 366 | .max_uV = 3300000, |
308 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | 367 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | |
309 | REGULATOR_CHANGE_STATUS, | 368 | REGULATOR_CHANGE_STATUS, |
310 | .boot_on = 1, /* display is on at boot */ | 369 | .boot_on = 1, /* display is on at boot */ |
311 | /* | ||
312 | * This voltage cannot be disabled right now because | ||
313 | * it is somehow affecting the external MMC | ||
314 | * functionality, though that typically will use | ||
315 | * AUX3. | ||
316 | */ | ||
317 | .always_on = 1, | ||
318 | }, | 370 | }, |
319 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vaux1_consumers), | 371 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vaux1_consumers), |
320 | .consumer_supplies = ab8500_vaux1_consumers, | 372 | .consumer_supplies = ab8500_vaux1_consumers, |
@@ -326,7 +378,10 @@ struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = { | |||
326 | .min_uV = 1100000, | 378 | .min_uV = 1100000, |
327 | .max_uV = 3300000, | 379 | .max_uV = 3300000, |
328 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | 380 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | |
329 | REGULATOR_CHANGE_STATUS, | 381 | REGULATOR_CHANGE_STATUS | |
382 | REGULATOR_CHANGE_MODE, | ||
383 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
384 | REGULATOR_MODE_IDLE, | ||
330 | }, | 385 | }, |
331 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vaux2_consumers), | 386 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vaux2_consumers), |
332 | .consumer_supplies = ab8500_vaux2_consumers, | 387 | .consumer_supplies = ab8500_vaux2_consumers, |
@@ -338,7 +393,10 @@ struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = { | |||
338 | .min_uV = 1100000, | 393 | .min_uV = 1100000, |
339 | .max_uV = 3300000, | 394 | .max_uV = 3300000, |
340 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | 395 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | |
341 | REGULATOR_CHANGE_STATUS, | 396 | REGULATOR_CHANGE_STATUS | |
397 | REGULATOR_CHANGE_MODE, | ||
398 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
399 | REGULATOR_MODE_IDLE, | ||
342 | }, | 400 | }, |
343 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vaux3_consumers), | 401 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vaux3_consumers), |
344 | .consumer_supplies = ab8500_vaux3_consumers, | 402 | .consumer_supplies = ab8500_vaux3_consumers, |
@@ -392,18 +450,614 @@ struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS] = { | |||
392 | [AB8500_LDO_INTCORE] = { | 450 | [AB8500_LDO_INTCORE] = { |
393 | .constraints = { | 451 | .constraints = { |
394 | .name = "V-INTCORE", | 452 | .name = "V-INTCORE", |
395 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | 453 | .min_uV = 1250000, |
454 | .max_uV = 1350000, | ||
455 | .input_uV = 1800000, | ||
456 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | ||
457 | REGULATOR_CHANGE_STATUS | | ||
458 | REGULATOR_CHANGE_MODE | | ||
459 | REGULATOR_CHANGE_DRMS, | ||
460 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
461 | REGULATOR_MODE_IDLE, | ||
396 | }, | 462 | }, |
397 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vintcore_consumers), | 463 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vintcore_consumers), |
398 | .consumer_supplies = ab8500_vintcore_consumers, | 464 | .consumer_supplies = ab8500_vintcore_consumers, |
399 | }, | 465 | }, |
400 | /* supply for U8500 CSI/DSI, VANA LDO */ | 466 | /* supply for U8500 CSI-DSI, VANA LDO */ |
401 | [AB8500_LDO_ANA] = { | 467 | [AB8500_LDO_ANA] = { |
402 | .constraints = { | 468 | .constraints = { |
403 | .name = "V-CSI/DSI", | 469 | .name = "V-CSI-DSI", |
404 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | 470 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, |
405 | }, | 471 | }, |
406 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vana_consumers), | 472 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vana_consumers), |
407 | .consumer_supplies = ab8500_vana_consumers, | 473 | .consumer_supplies = ab8500_vana_consumers, |
408 | }, | 474 | }, |
409 | }; | 475 | }; |
476 | |||
477 | /* supply for VextSupply3 */ | ||
478 | static struct regulator_consumer_supply ab8500_ext_supply3_consumers[] = { | ||
479 | /* SIM supply for 3 V SIM cards */ | ||
480 | REGULATOR_SUPPLY("vinvsim", "sim-detect.0"), | ||
481 | }; | ||
482 | |||
483 | /* extended configuration for VextSupply2, only used for HREFP_V20 boards */ | ||
484 | static struct ab8500_ext_regulator_cfg ab8500_ext_supply2 = { | ||
485 | .hwreq = true, | ||
486 | }; | ||
487 | |||
488 | /* | ||
489 | * AB8500 external regulators | ||
490 | */ | ||
491 | static struct regulator_init_data ab8500_ext_regulators[] = { | ||
492 | /* fixed Vbat supplies VSMPS1_EXT_1V8 */ | ||
493 | [AB8500_EXT_SUPPLY1] = { | ||
494 | .constraints = { | ||
495 | .name = "ab8500-ext-supply1", | ||
496 | .min_uV = 1800000, | ||
497 | .max_uV = 1800000, | ||
498 | .initial_mode = REGULATOR_MODE_IDLE, | ||
499 | .boot_on = 1, | ||
500 | .always_on = 1, | ||
501 | }, | ||
502 | }, | ||
503 | /* fixed Vbat supplies VSMPS2_EXT_1V36 and VSMPS5_EXT_1V15 */ | ||
504 | [AB8500_EXT_SUPPLY2] = { | ||
505 | .constraints = { | ||
506 | .name = "ab8500-ext-supply2", | ||
507 | .min_uV = 1360000, | ||
508 | .max_uV = 1360000, | ||
509 | }, | ||
510 | }, | ||
511 | /* fixed Vbat supplies VSMPS3_EXT_3V4 and VSMPS4_EXT_3V4 */ | ||
512 | [AB8500_EXT_SUPPLY3] = { | ||
513 | .constraints = { | ||
514 | .name = "ab8500-ext-supply3", | ||
515 | .min_uV = 3400000, | ||
516 | .max_uV = 3400000, | ||
517 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
518 | .boot_on = 1, | ||
519 | }, | ||
520 | .num_consumer_supplies = | ||
521 | ARRAY_SIZE(ab8500_ext_supply3_consumers), | ||
522 | .consumer_supplies = ab8500_ext_supply3_consumers, | ||
523 | }, | ||
524 | }; | ||
525 | |||
526 | /* ab8505 regulator register initialization */ | ||
527 | static struct ab8500_regulator_reg_init ab8505_reg_init[] = { | ||
528 | /* | ||
529 | * VarmRequestCtrl | ||
530 | * VsmpsCRequestCtrl | ||
531 | * VsmpsARequestCtrl | ||
532 | * VsmpsBRequestCtrl | ||
533 | */ | ||
534 | INIT_REGULATOR_REGISTER(AB8505_REGUREQUESTCTRL1, 0x00, 0x00), | ||
535 | /* | ||
536 | * VsafeRequestCtrl | ||
537 | * VpllRequestCtrl | ||
538 | * VanaRequestCtrl = HP/LP depending on VxRequest | ||
539 | */ | ||
540 | INIT_REGULATOR_REGISTER(AB8505_REGUREQUESTCTRL2, 0x30, 0x00), | ||
541 | /* | ||
542 | * Vaux1RequestCtrl = HP/LP depending on VxRequest | ||
543 | * Vaux2RequestCtrl = HP/LP depending on VxRequest | ||
544 | */ | ||
545 | INIT_REGULATOR_REGISTER(AB8505_REGUREQUESTCTRL3, 0xf0, 0x00), | ||
546 | /* | ||
547 | * Vaux3RequestCtrl = HP/LP depending on VxRequest | ||
548 | * SwHPReq = Control through SWValid disabled | ||
549 | */ | ||
550 | INIT_REGULATOR_REGISTER(AB8505_REGUREQUESTCTRL4, 0x07, 0x00), | ||
551 | /* | ||
552 | * VsmpsASysClkReq1HPValid | ||
553 | * VsmpsBSysClkReq1HPValid | ||
554 | * VsafeSysClkReq1HPValid | ||
555 | * VanaSysClkReq1HPValid = disabled | ||
556 | * VpllSysClkReq1HPValid | ||
557 | * Vaux1SysClkReq1HPValid = disabled | ||
558 | * Vaux2SysClkReq1HPValid = disabled | ||
559 | * Vaux3SysClkReq1HPValid = disabled | ||
560 | */ | ||
561 | INIT_REGULATOR_REGISTER(AB8505_REGUSYSCLKREQ1HPVALID1, 0xe8, 0x00), | ||
562 | /* | ||
563 | * VsmpsCSysClkReq1HPValid | ||
564 | * VarmSysClkReq1HPValid | ||
565 | * VbbSysClkReq1HPValid | ||
566 | * VsmpsMSysClkReq1HPValid | ||
567 | */ | ||
568 | INIT_REGULATOR_REGISTER(AB8505_REGUSYSCLKREQ1HPVALID2, 0x00, 0x00), | ||
569 | /* | ||
570 | * VsmpsAHwHPReq1Valid | ||
571 | * VsmpsBHwHPReq1Valid | ||
572 | * VsafeHwHPReq1Valid | ||
573 | * VanaHwHPReq1Valid = disabled | ||
574 | * VpllHwHPReq1Valid | ||
575 | * Vaux1HwHPreq1Valid = disabled | ||
576 | * Vaux2HwHPReq1Valid = disabled | ||
577 | * Vaux3HwHPReqValid = disabled | ||
578 | */ | ||
579 | INIT_REGULATOR_REGISTER(AB8505_REGUHWHPREQ1VALID1, 0xe8, 0x00), | ||
580 | /* | ||
581 | * VsmpsMHwHPReq1Valid | ||
582 | */ | ||
583 | INIT_REGULATOR_REGISTER(AB8505_REGUHWHPREQ1VALID2, 0x00, 0x00), | ||
584 | /* | ||
585 | * VsmpsAHwHPReq2Valid | ||
586 | * VsmpsBHwHPReq2Valid | ||
587 | * VsafeHwHPReq2Valid | ||
588 | * VanaHwHPReq2Valid = disabled | ||
589 | * VpllHwHPReq2Valid | ||
590 | * Vaux1HwHPReq2Valid = disabled | ||
591 | * Vaux2HwHPReq2Valid = disabled | ||
592 | * Vaux3HwHPReq2Valid = disabled | ||
593 | */ | ||
594 | INIT_REGULATOR_REGISTER(AB8505_REGUHWHPREQ2VALID1, 0xe8, 0x00), | ||
595 | /* | ||
596 | * VsmpsMHwHPReq2Valid | ||
597 | */ | ||
598 | INIT_REGULATOR_REGISTER(AB8505_REGUHWHPREQ2VALID2, 0x00, 0x00), | ||
599 | /** | ||
600 | * VsmpsCSwHPReqValid | ||
601 | * VarmSwHPReqValid | ||
602 | * VsmpsASwHPReqValid | ||
603 | * VsmpsBSwHPReqValid | ||
604 | * VsafeSwHPReqValid | ||
605 | * VanaSwHPReqValid | ||
606 | * VanaSwHPReqValid = disabled | ||
607 | * VpllSwHPReqValid | ||
608 | * Vaux1SwHPReqValid = disabled | ||
609 | */ | ||
610 | INIT_REGULATOR_REGISTER(AB8505_REGUSWHPREQVALID1, 0xa0, 0x00), | ||
611 | /* | ||
612 | * Vaux2SwHPReqValid = disabled | ||
613 | * Vaux3SwHPReqValid = disabled | ||
614 | * VsmpsMSwHPReqValid | ||
615 | */ | ||
616 | INIT_REGULATOR_REGISTER(AB8505_REGUSWHPREQVALID2, 0x03, 0x00), | ||
617 | /* | ||
618 | * SysClkReq2Valid1 = SysClkReq2 controlled | ||
619 | * SysClkReq3Valid1 = disabled | ||
620 | * SysClkReq4Valid1 = SysClkReq4 controlled | ||
621 | */ | ||
622 | INIT_REGULATOR_REGISTER(AB8505_REGUSYSCLKREQVALID1, 0x0e, 0x0a), | ||
623 | /* | ||
624 | * SysClkReq2Valid2 = disabled | ||
625 | * SysClkReq3Valid2 = disabled | ||
626 | * SysClkReq4Valid2 = disabled | ||
627 | */ | ||
628 | INIT_REGULATOR_REGISTER(AB8505_REGUSYSCLKREQVALID2, 0x0e, 0x00), | ||
629 | /* | ||
630 | * Vaux4SwHPReqValid | ||
631 | * Vaux4HwHPReq2Valid | ||
632 | * Vaux4HwHPReq1Valid | ||
633 | * Vaux4SysClkReq1HPValid | ||
634 | */ | ||
635 | INIT_REGULATOR_REGISTER(AB8505_REGUVAUX4REQVALID, 0x00, 0x00), | ||
636 | /* | ||
637 | * VadcEna = disabled | ||
638 | * VintCore12Ena = disabled | ||
639 | * VintCore12Sel = 1.25 V | ||
640 | * VintCore12LP = inactive (HP) | ||
641 | * VadcLP = inactive (HP) | ||
642 | */ | ||
643 | INIT_REGULATOR_REGISTER(AB8505_REGUMISC1, 0xfe, 0x10), | ||
644 | /* | ||
645 | * VaudioEna = disabled | ||
646 | * Vaux8Ena = disabled | ||
647 | * Vamic1Ena = disabled | ||
648 | * Vamic2Ena = disabled | ||
649 | */ | ||
650 | INIT_REGULATOR_REGISTER(AB8505_VAUDIOSUPPLY, 0x1e, 0x00), | ||
651 | /* | ||
652 | * Vamic1_dzout = high-Z when Vamic1 is disabled | ||
653 | * Vamic2_dzout = high-Z when Vamic2 is disabled | ||
654 | */ | ||
655 | INIT_REGULATOR_REGISTER(AB8505_REGUCTRL1VAMIC, 0x03, 0x00), | ||
656 | /* | ||
657 | * VsmpsARegu | ||
658 | * VsmpsASelCtrl | ||
659 | * VsmpsAAutoMode | ||
660 | * VsmpsAPWMMode | ||
661 | */ | ||
662 | INIT_REGULATOR_REGISTER(AB8505_VSMPSAREGU, 0x00, 0x00), | ||
663 | /* | ||
664 | * VsmpsBRegu | ||
665 | * VsmpsBSelCtrl | ||
666 | * VsmpsBAutoMode | ||
667 | * VsmpsBPWMMode | ||
668 | */ | ||
669 | INIT_REGULATOR_REGISTER(AB8505_VSMPSBREGU, 0x00, 0x00), | ||
670 | /* | ||
671 | * VsafeRegu | ||
672 | * VsafeSelCtrl | ||
673 | * VsafeAutoMode | ||
674 | * VsafePWMMode | ||
675 | */ | ||
676 | INIT_REGULATOR_REGISTER(AB8505_VSAFEREGU, 0x00, 0x00), | ||
677 | /* | ||
678 | * VPll = Hw controlled (NOTE! PRCMU bits) | ||
679 | * VanaRegu = force off | ||
680 | */ | ||
681 | INIT_REGULATOR_REGISTER(AB8505_VPLLVANAREGU, 0x0f, 0x02), | ||
682 | /* | ||
683 | * VextSupply1Regu = force OFF (OTP_ExtSupply12LPnPolarity 1) | ||
684 | * VextSupply2Regu = force OFF (OTP_ExtSupply12LPnPolarity 1) | ||
685 | * VextSupply3Regu = force OFF (OTP_ExtSupply3LPnPolarity 0) | ||
686 | * ExtSupply2Bypass = ExtSupply12LPn ball is 0 when Ena is 0 | ||
687 | * ExtSupply3Bypass = ExtSupply3LPn ball is 0 when Ena is 0 | ||
688 | */ | ||
689 | INIT_REGULATOR_REGISTER(AB8505_EXTSUPPLYREGU, 0xff, 0x30), | ||
690 | /* | ||
691 | * Vaux1Regu = force HP | ||
692 | * Vaux2Regu = force off | ||
693 | */ | ||
694 | INIT_REGULATOR_REGISTER(AB8505_VAUX12REGU, 0x0f, 0x01), | ||
695 | /* | ||
696 | * Vaux3Regu = force off | ||
697 | */ | ||
698 | INIT_REGULATOR_REGISTER(AB8505_VRF1VAUX3REGU, 0x03, 0x00), | ||
699 | /* | ||
700 | * VsmpsASel1 | ||
701 | */ | ||
702 | INIT_REGULATOR_REGISTER(AB8505_VSMPSASEL1, 0x00, 0x00), | ||
703 | /* | ||
704 | * VsmpsASel2 | ||
705 | */ | ||
706 | INIT_REGULATOR_REGISTER(AB8505_VSMPSASEL2, 0x00, 0x00), | ||
707 | /* | ||
708 | * VsmpsASel3 | ||
709 | */ | ||
710 | INIT_REGULATOR_REGISTER(AB8505_VSMPSASEL3, 0x00, 0x00), | ||
711 | /* | ||
712 | * VsmpsBSel1 | ||
713 | */ | ||
714 | INIT_REGULATOR_REGISTER(AB8505_VSMPSBSEL1, 0x00, 0x00), | ||
715 | /* | ||
716 | * VsmpsBSel2 | ||
717 | */ | ||
718 | INIT_REGULATOR_REGISTER(AB8505_VSMPSBSEL2, 0x00, 0x00), | ||
719 | /* | ||
720 | * VsmpsBSel3 | ||
721 | */ | ||
722 | INIT_REGULATOR_REGISTER(AB8505_VSMPSBSEL3, 0x00, 0x00), | ||
723 | /* | ||
724 | * VsafeSel1 | ||
725 | */ | ||
726 | INIT_REGULATOR_REGISTER(AB8505_VSAFESEL1, 0x00, 0x00), | ||
727 | /* | ||
728 | * VsafeSel2 | ||
729 | */ | ||
730 | INIT_REGULATOR_REGISTER(AB8505_VSAFESEL2, 0x00, 0x00), | ||
731 | /* | ||
732 | * VsafeSel3 | ||
733 | */ | ||
734 | INIT_REGULATOR_REGISTER(AB8505_VSAFESEL3, 0x00, 0x00), | ||
735 | /* | ||
736 | * Vaux1Sel = 2.8 V | ||
737 | */ | ||
738 | INIT_REGULATOR_REGISTER(AB8505_VAUX1SEL, 0x0f, 0x0C), | ||
739 | /* | ||
740 | * Vaux2Sel = 2.9 V | ||
741 | */ | ||
742 | INIT_REGULATOR_REGISTER(AB8505_VAUX2SEL, 0x0f, 0x0d), | ||
743 | /* | ||
744 | * Vaux3Sel = 2.91 V | ||
745 | */ | ||
746 | INIT_REGULATOR_REGISTER(AB8505_VRF1VAUX3SEL, 0x07, 0x07), | ||
747 | /* | ||
748 | * Vaux4RequestCtrl | ||
749 | */ | ||
750 | INIT_REGULATOR_REGISTER(AB8505_VAUX4REQCTRL, 0x00, 0x00), | ||
751 | /* | ||
752 | * Vaux4Regu | ||
753 | */ | ||
754 | INIT_REGULATOR_REGISTER(AB8505_VAUX4REGU, 0x00, 0x00), | ||
755 | /* | ||
756 | * Vaux4Sel | ||
757 | */ | ||
758 | INIT_REGULATOR_REGISTER(AB8505_VAUX4SEL, 0x00, 0x00), | ||
759 | /* | ||
760 | * Vaux1Disch = short discharge time | ||
761 | * Vaux2Disch = short discharge time | ||
762 | * Vaux3Disch = short discharge time | ||
763 | * Vintcore12Disch = short discharge time | ||
764 | * VTVoutDisch = short discharge time | ||
765 | * VaudioDisch = short discharge time | ||
766 | */ | ||
767 | INIT_REGULATOR_REGISTER(AB8505_REGUCTRLDISCH, 0xfc, 0x00), | ||
768 | /* | ||
769 | * VanaDisch = short discharge time | ||
770 | * Vaux8PullDownEna = pulldown disabled when Vaux8 is disabled | ||
771 | * Vaux8Disch = short discharge time | ||
772 | */ | ||
773 | INIT_REGULATOR_REGISTER(AB8505_REGUCTRLDISCH2, 0x16, 0x00), | ||
774 | /* | ||
775 | * Vaux4Disch = short discharge time | ||
776 | */ | ||
777 | INIT_REGULATOR_REGISTER(AB8505_REGUCTRLDISCH3, 0x01, 0x00), | ||
778 | /* | ||
779 | * Vaux5Sel | ||
780 | * Vaux5LP | ||
781 | * Vaux5Ena | ||
782 | * Vaux5Disch | ||
783 | * Vaux5DisSfst | ||
784 | * Vaux5DisPulld | ||
785 | */ | ||
786 | INIT_REGULATOR_REGISTER(AB8505_CTRLVAUX5, 0x00, 0x00), | ||
787 | /* | ||
788 | * Vaux6Sel | ||
789 | * Vaux6LP | ||
790 | * Vaux6Ena | ||
791 | * Vaux6DisPulld | ||
792 | */ | ||
793 | INIT_REGULATOR_REGISTER(AB8505_CTRLVAUX6, 0x00, 0x00), | ||
794 | }; | ||
795 | |||
796 | struct regulator_init_data ab8505_regulators[AB8505_NUM_REGULATORS] = { | ||
797 | /* supplies to the display/camera */ | ||
798 | [AB8505_LDO_AUX1] = { | ||
799 | .constraints = { | ||
800 | .name = "V-DISPLAY", | ||
801 | .min_uV = 2800000, | ||
802 | .max_uV = 3300000, | ||
803 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | ||
804 | REGULATOR_CHANGE_STATUS, | ||
805 | .boot_on = 1, /* display is on at boot */ | ||
806 | }, | ||
807 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vaux1_consumers), | ||
808 | .consumer_supplies = ab8500_vaux1_consumers, | ||
809 | }, | ||
810 | /* supplies to the on-board eMMC */ | ||
811 | [AB8505_LDO_AUX2] = { | ||
812 | .constraints = { | ||
813 | .name = "V-eMMC1", | ||
814 | .min_uV = 1100000, | ||
815 | .max_uV = 3300000, | ||
816 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | ||
817 | REGULATOR_CHANGE_STATUS | | ||
818 | REGULATOR_CHANGE_MODE, | ||
819 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
820 | REGULATOR_MODE_IDLE, | ||
821 | }, | ||
822 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vaux2_consumers), | ||
823 | .consumer_supplies = ab8500_vaux2_consumers, | ||
824 | }, | ||
825 | /* supply for VAUX3, supplies to SDcard slots */ | ||
826 | [AB8505_LDO_AUX3] = { | ||
827 | .constraints = { | ||
828 | .name = "V-MMC-SD", | ||
829 | .min_uV = 1100000, | ||
830 | .max_uV = 3300000, | ||
831 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | ||
832 | REGULATOR_CHANGE_STATUS | | ||
833 | REGULATOR_CHANGE_MODE, | ||
834 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
835 | REGULATOR_MODE_IDLE, | ||
836 | }, | ||
837 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vaux3_consumers), | ||
838 | .consumer_supplies = ab8500_vaux3_consumers, | ||
839 | }, | ||
840 | /* supply for VAUX4, supplies to NFC and standalone secure element */ | ||
841 | [AB8505_LDO_AUX4] = { | ||
842 | .constraints = { | ||
843 | .name = "V-NFC-SE", | ||
844 | .min_uV = 1100000, | ||
845 | .max_uV = 3300000, | ||
846 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | ||
847 | REGULATOR_CHANGE_STATUS | | ||
848 | REGULATOR_CHANGE_MODE, | ||
849 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
850 | REGULATOR_MODE_IDLE, | ||
851 | }, | ||
852 | .num_consumer_supplies = ARRAY_SIZE(ab8505_vaux4_consumers), | ||
853 | .consumer_supplies = ab8505_vaux4_consumers, | ||
854 | }, | ||
855 | /* supply for VAUX5, supplies to TBD */ | ||
856 | [AB8505_LDO_AUX5] = { | ||
857 | .constraints = { | ||
858 | .name = "V-AUX5", | ||
859 | .min_uV = 1050000, | ||
860 | .max_uV = 2790000, | ||
861 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | ||
862 | REGULATOR_CHANGE_STATUS | | ||
863 | REGULATOR_CHANGE_MODE, | ||
864 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
865 | REGULATOR_MODE_IDLE, | ||
866 | }, | ||
867 | .num_consumer_supplies = ARRAY_SIZE(ab8505_vaux5_consumers), | ||
868 | .consumer_supplies = ab8505_vaux5_consumers, | ||
869 | }, | ||
870 | /* supply for VAUX6, supplies to TBD */ | ||
871 | [AB8505_LDO_AUX6] = { | ||
872 | .constraints = { | ||
873 | .name = "V-AUX6", | ||
874 | .min_uV = 1050000, | ||
875 | .max_uV = 2790000, | ||
876 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | ||
877 | REGULATOR_CHANGE_STATUS | | ||
878 | REGULATOR_CHANGE_MODE, | ||
879 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
880 | REGULATOR_MODE_IDLE, | ||
881 | }, | ||
882 | .num_consumer_supplies = ARRAY_SIZE(ab8505_vaux6_consumers), | ||
883 | .consumer_supplies = ab8505_vaux6_consumers, | ||
884 | }, | ||
885 | /* supply for gpadc, ADC LDO */ | ||
886 | [AB8505_LDO_ADC] = { | ||
887 | .constraints = { | ||
888 | .name = "V-ADC", | ||
889 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
890 | }, | ||
891 | .num_consumer_supplies = ARRAY_SIZE(ab8505_vadc_consumers), | ||
892 | .consumer_supplies = ab8505_vadc_consumers, | ||
893 | }, | ||
894 | /* supply for ab8500-vaudio, VAUDIO LDO */ | ||
895 | [AB8505_LDO_AUDIO] = { | ||
896 | .constraints = { | ||
897 | .name = "V-AUD", | ||
898 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
899 | }, | ||
900 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vaud_consumers), | ||
901 | .consumer_supplies = ab8500_vaud_consumers, | ||
902 | }, | ||
903 | /* supply for v-anamic1 VAMic1-LDO */ | ||
904 | [AB8505_LDO_ANAMIC1] = { | ||
905 | .constraints = { | ||
906 | .name = "V-AMIC1", | ||
907 | .valid_ops_mask = REGULATOR_CHANGE_STATUS | | ||
908 | REGULATOR_CHANGE_MODE, | ||
909 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
910 | REGULATOR_MODE_IDLE, | ||
911 | }, | ||
912 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vamic1_consumers), | ||
913 | .consumer_supplies = ab8500_vamic1_consumers, | ||
914 | }, | ||
915 | /* supply for v-amic2, VAMIC2 LDO, reuse constants for AMIC1 */ | ||
916 | [AB8505_LDO_ANAMIC2] = { | ||
917 | .constraints = { | ||
918 | .name = "V-AMIC2", | ||
919 | .valid_ops_mask = REGULATOR_CHANGE_STATUS | | ||
920 | REGULATOR_CHANGE_MODE, | ||
921 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
922 | REGULATOR_MODE_IDLE, | ||
923 | }, | ||
924 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vamic2_consumers), | ||
925 | .consumer_supplies = ab8500_vamic2_consumers, | ||
926 | }, | ||
927 | /* supply for v-aux8, VAUX8 LDO */ | ||
928 | [AB8505_LDO_AUX8] = { | ||
929 | .constraints = { | ||
930 | .name = "V-AUX8", | ||
931 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
932 | }, | ||
933 | .num_consumer_supplies = ARRAY_SIZE(ab8505_vaux8_consumers), | ||
934 | .consumer_supplies = ab8505_vaux8_consumers, | ||
935 | }, | ||
936 | /* supply for v-intcore12, VINTCORE12 LDO */ | ||
937 | [AB8505_LDO_INTCORE] = { | ||
938 | .constraints = { | ||
939 | .name = "V-INTCORE", | ||
940 | .min_uV = 1250000, | ||
941 | .max_uV = 1350000, | ||
942 | .input_uV = 1800000, | ||
943 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | | ||
944 | REGULATOR_CHANGE_STATUS | | ||
945 | REGULATOR_CHANGE_MODE | | ||
946 | REGULATOR_CHANGE_DRMS, | ||
947 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
948 | REGULATOR_MODE_IDLE, | ||
949 | }, | ||
950 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vintcore_consumers), | ||
951 | .consumer_supplies = ab8500_vintcore_consumers, | ||
952 | }, | ||
953 | /* supply for LDO USB */ | ||
954 | [AB8505_LDO_USB] = { | ||
955 | .constraints = { | ||
956 | .name = "V-USB", | ||
957 | .valid_ops_mask = REGULATOR_CHANGE_STATUS | | ||
958 | REGULATOR_CHANGE_MODE, | ||
959 | .valid_modes_mask = REGULATOR_MODE_NORMAL | | ||
960 | REGULATOR_MODE_IDLE, | ||
961 | }, | ||
962 | .num_consumer_supplies = ARRAY_SIZE(ab8505_usb_consumers), | ||
963 | .consumer_supplies = ab8505_usb_consumers, | ||
964 | }, | ||
965 | /* supply for U8500 CSI-DSI, VANA LDO */ | ||
966 | [AB8505_LDO_ANA] = { | ||
967 | .constraints = { | ||
968 | .name = "V-CSI-DSI", | ||
969 | .valid_ops_mask = REGULATOR_CHANGE_STATUS, | ||
970 | }, | ||
971 | .num_consumer_supplies = ARRAY_SIZE(ab8500_vana_consumers), | ||
972 | .consumer_supplies = ab8500_vana_consumers, | ||
973 | }, | ||
974 | }; | ||
975 | |||
976 | struct ab8500_regulator_platform_data ab8500_regulator_plat_data = { | ||
977 | .reg_init = ab8500_reg_init, | ||
978 | .num_reg_init = ARRAY_SIZE(ab8500_reg_init), | ||
979 | .regulator = ab8500_regulators, | ||
980 | .num_regulator = ARRAY_SIZE(ab8500_regulators), | ||
981 | .ext_regulator = ab8500_ext_regulators, | ||
982 | .num_ext_regulator = ARRAY_SIZE(ab8500_ext_regulators), | ||
983 | }; | ||
984 | |||
985 | /* Use the AB8500 init settings for AB8505 as they are the same right now */ | ||
986 | struct ab8500_regulator_platform_data ab8505_regulator_plat_data = { | ||
987 | .reg_init = ab8505_reg_init, | ||
988 | .num_reg_init = ARRAY_SIZE(ab8505_reg_init), | ||
989 | .regulator = ab8505_regulators, | ||
990 | .num_regulator = ARRAY_SIZE(ab8505_regulators), | ||
991 | }; | ||
992 | |||
993 | static void ab8500_modify_reg_init(int id, u8 mask, u8 value) | ||
994 | { | ||
995 | int i; | ||
996 | |||
997 | if (cpu_is_u8520()) { | ||
998 | for (i = ARRAY_SIZE(ab8505_reg_init) - 1; i >= 0; i--) { | ||
999 | if (ab8505_reg_init[i].id == id) { | ||
1000 | u8 initval = ab8505_reg_init[i].value; | ||
1001 | initval = (initval & ~mask) | (value & mask); | ||
1002 | ab8505_reg_init[i].value = initval; | ||
1003 | |||
1004 | BUG_ON(mask & ~ab8505_reg_init[i].mask); | ||
1005 | return; | ||
1006 | } | ||
1007 | } | ||
1008 | } else { | ||
1009 | for (i = ARRAY_SIZE(ab8500_reg_init) - 1; i >= 0; i--) { | ||
1010 | if (ab8500_reg_init[i].id == id) { | ||
1011 | u8 initval = ab8500_reg_init[i].value; | ||
1012 | initval = (initval & ~mask) | (value & mask); | ||
1013 | ab8500_reg_init[i].value = initval; | ||
1014 | |||
1015 | BUG_ON(mask & ~ab8500_reg_init[i].mask); | ||
1016 | return; | ||
1017 | } | ||
1018 | } | ||
1019 | } | ||
1020 | |||
1021 | BUG_ON(1); | ||
1022 | } | ||
1023 | |||
1024 | void mop500_regulator_init(void) | ||
1025 | { | ||
1026 | struct regulator_init_data *regulator; | ||
1027 | |||
1028 | /* | ||
1029 | * Temporarily turn on Vaux2 on 8520 machine | ||
1030 | */ | ||
1031 | if (cpu_is_u8520()) { | ||
1032 | /* Vaux2 initialized to be on */ | ||
1033 | ab8500_modify_reg_init(AB8505_VAUX12REGU, 0x0f, 0x05); | ||
1034 | } | ||
1035 | |||
1036 | /* | ||
1037 | * Handle AB8500_EXT_SUPPLY2 on HREFP_V20_V50 boards (do it for | ||
1038 | * all HREFP_V20 boards) | ||
1039 | */ | ||
1040 | if (cpu_is_u8500v20()) { | ||
1041 | /* VextSupply2RequestCtrl = HP/OFF depending on VxRequest */ | ||
1042 | ab8500_modify_reg_init(AB8500_REGUREQUESTCTRL3, 0x01, 0x01); | ||
1043 | |||
1044 | /* VextSupply2SysClkReq1HPValid = SysClkReq1 controlled */ | ||
1045 | ab8500_modify_reg_init(AB8500_REGUSYSCLKREQ1HPVALID2, | ||
1046 | 0x20, 0x20); | ||
1047 | |||
1048 | /* VextSupply2 = force HP at initialization */ | ||
1049 | ab8500_modify_reg_init(AB8500_EXTSUPPLYREGU, 0x0c, 0x04); | ||
1050 | |||
1051 | /* enable VextSupply2 during platform active */ | ||
1052 | regulator = &ab8500_ext_regulators[AB8500_EXT_SUPPLY2]; | ||
1053 | regulator->constraints.always_on = 1; | ||
1054 | |||
1055 | /* disable VextSupply2 in suspend */ | ||
1056 | regulator = &ab8500_ext_regulators[AB8500_EXT_SUPPLY2]; | ||
1057 | regulator->constraints.state_mem.disabled = 1; | ||
1058 | regulator->constraints.state_standby.disabled = 1; | ||
1059 | |||
1060 | /* enable VextSupply2 HW control (used in suspend) */ | ||
1061 | regulator->driver_data = (void *)&ab8500_ext_supply2; | ||
1062 | } | ||
1063 | } | ||
diff --git a/arch/arm/mach-ux500/board-mop500-regulators.h b/arch/arm/mach-ux500/board-mop500-regulators.h index 78a0642a2206..9bece38fe933 100644 --- a/arch/arm/mach-ux500/board-mop500-regulators.h +++ b/arch/arm/mach-ux500/board-mop500-regulators.h | |||
@@ -14,10 +14,11 @@ | |||
14 | #include <linux/regulator/machine.h> | 14 | #include <linux/regulator/machine.h> |
15 | #include <linux/regulator/ab8500.h> | 15 | #include <linux/regulator/ab8500.h> |
16 | 16 | ||
17 | extern struct ab8500_regulator_reg_init | 17 | extern struct ab8500_regulator_platform_data ab8500_regulator_plat_data; |
18 | ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS]; | 18 | extern struct ab8500_regulator_platform_data ab8505_regulator_plat_data; |
19 | extern struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS]; | ||
20 | extern struct regulator_init_data tps61052_regulator; | 19 | extern struct regulator_init_data tps61052_regulator; |
21 | extern struct regulator_init_data gpio_en_3v3_regulator; | 20 | extern struct regulator_init_data gpio_en_3v3_regulator; |
22 | 21 | ||
22 | void mop500_regulator_init(void); | ||
23 | |||
23 | #endif | 24 | #endif |
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 87d2d7b38ce9..ce672378a830 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -199,10 +199,7 @@ static struct platform_device snowball_sbnet_dev = { | |||
199 | 199 | ||
200 | struct ab8500_platform_data ab8500_platdata = { | 200 | struct ab8500_platform_data ab8500_platdata = { |
201 | .irq_base = MOP500_AB8500_IRQ_BASE, | 201 | .irq_base = MOP500_AB8500_IRQ_BASE, |
202 | .regulator_reg_init = ab8500_regulator_reg_init, | 202 | .regulator = &ab8500_regulator_plat_data, |
203 | .num_regulator_reg_init = ARRAY_SIZE(ab8500_regulator_reg_init), | ||
204 | .regulator = ab8500_regulators, | ||
205 | .num_regulator = ARRAY_SIZE(ab8500_regulators), | ||
206 | .gpio = &ab8500_gpio_pdata, | 203 | .gpio = &ab8500_gpio_pdata, |
207 | .codec = &ab8500_codec_pdata, | 204 | .codec = &ab8500_codec_pdata, |
208 | }; | 205 | }; |
diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c index 915683cb67d6..c5e20b52e3b7 100644 --- a/arch/arm/mach-vexpress/v2m.c +++ b/arch/arm/mach-vexpress/v2m.c | |||
@@ -21,6 +21,8 @@ | |||
21 | #include <linux/regulator/fixed.h> | 21 | #include <linux/regulator/fixed.h> |
22 | #include <linux/regulator/machine.h> | 22 | #include <linux/regulator/machine.h> |
23 | #include <linux/vexpress.h> | 23 | #include <linux/vexpress.h> |
24 | #include <linux/clk-provider.h> | ||
25 | #include <linux/clkdev.h> | ||
24 | 26 | ||
25 | #include <asm/arch_timer.h> | 27 | #include <asm/arch_timer.h> |
26 | #include <asm/mach-types.h> | 28 | #include <asm/mach-types.h> |
@@ -433,7 +435,7 @@ static void __init v2m_dt_timer_init(void) | |||
433 | { | 435 | { |
434 | struct device_node *node = NULL; | 436 | struct device_node *node = NULL; |
435 | 437 | ||
436 | vexpress_clk_of_init(); | 438 | of_clk_init(NULL); |
437 | 439 | ||
438 | do { | 440 | do { |
439 | node = of_find_compatible_node(node, NULL, "arm,sp804"); | 441 | node = of_find_compatible_node(node, NULL, "arm,sp804"); |
@@ -441,6 +443,10 @@ static void __init v2m_dt_timer_init(void) | |||
441 | if (node) { | 443 | if (node) { |
442 | pr_info("Using SP804 '%s' as a clock & events source\n", | 444 | pr_info("Using SP804 '%s' as a clock & events source\n", |
443 | node->full_name); | 445 | node->full_name); |
446 | WARN_ON(clk_register_clkdev(of_clk_get_by_name(node, | ||
447 | "timclken1"), "v2m-timer0", "sp804")); | ||
448 | WARN_ON(clk_register_clkdev(of_clk_get_by_name(node, | ||
449 | "timclken2"), "v2m-timer1", "sp804")); | ||
444 | v2m_sp804_init(of_iomap(node, 0), | 450 | v2m_sp804_init(of_iomap(node, 0), |
445 | irq_of_parse_and_map(node, 0)); | 451 | irq_of_parse_and_map(node, 0)); |
446 | } | 452 | } |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 025d17328730..4045c4931a30 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -43,7 +43,7 @@ config CPU_ARM740T | |||
43 | depends on !MMU | 43 | depends on !MMU |
44 | select CPU_32v4T | 44 | select CPU_32v4T |
45 | select CPU_ABRT_LV4T | 45 | select CPU_ABRT_LV4T |
46 | select CPU_CACHE_V3 # although the core is v4t | 46 | select CPU_CACHE_V4 |
47 | select CPU_CP15_MPU | 47 | select CPU_CP15_MPU |
48 | select CPU_PABRT_LEGACY | 48 | select CPU_PABRT_LEGACY |
49 | help | 49 | help |
@@ -469,9 +469,6 @@ config CPU_PABRT_V7 | |||
469 | bool | 469 | bool |
470 | 470 | ||
471 | # The cache model | 471 | # The cache model |
472 | config CPU_CACHE_V3 | ||
473 | bool | ||
474 | |||
475 | config CPU_CACHE_V4 | 472 | config CPU_CACHE_V4 |
476 | bool | 473 | bool |
477 | 474 | ||
diff --git a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile index 4e333fa2756f..9e51be96f635 100644 --- a/arch/arm/mm/Makefile +++ b/arch/arm/mm/Makefile | |||
@@ -33,7 +33,6 @@ obj-$(CONFIG_CPU_PABRT_LEGACY) += pabort-legacy.o | |||
33 | obj-$(CONFIG_CPU_PABRT_V6) += pabort-v6.o | 33 | obj-$(CONFIG_CPU_PABRT_V6) += pabort-v6.o |
34 | obj-$(CONFIG_CPU_PABRT_V7) += pabort-v7.o | 34 | obj-$(CONFIG_CPU_PABRT_V7) += pabort-v7.o |
35 | 35 | ||
36 | obj-$(CONFIG_CPU_CACHE_V3) += cache-v3.o | ||
37 | obj-$(CONFIG_CPU_CACHE_V4) += cache-v4.o | 36 | obj-$(CONFIG_CPU_CACHE_V4) += cache-v4.o |
38 | obj-$(CONFIG_CPU_CACHE_V4WT) += cache-v4wt.o | 37 | obj-$(CONFIG_CPU_CACHE_V4WT) += cache-v4wt.o |
39 | obj-$(CONFIG_CPU_CACHE_V4WB) += cache-v4wb.o | 38 | obj-$(CONFIG_CPU_CACHE_V4WB) += cache-v4wb.o |
diff --git a/arch/arm/mm/cache-feroceon-l2.c b/arch/arm/mm/cache-feroceon-l2.c index dd3d59122cc3..48bc3c0a87ce 100644 --- a/arch/arm/mm/cache-feroceon-l2.c +++ b/arch/arm/mm/cache-feroceon-l2.c | |||
@@ -343,6 +343,7 @@ void __init feroceon_l2_init(int __l2_wt_override) | |||
343 | outer_cache.inv_range = feroceon_l2_inv_range; | 343 | outer_cache.inv_range = feroceon_l2_inv_range; |
344 | outer_cache.clean_range = feroceon_l2_clean_range; | 344 | outer_cache.clean_range = feroceon_l2_clean_range; |
345 | outer_cache.flush_range = feroceon_l2_flush_range; | 345 | outer_cache.flush_range = feroceon_l2_flush_range; |
346 | outer_cache.inv_all = l2_inv_all; | ||
346 | 347 | ||
347 | enable_l2(); | 348 | enable_l2(); |
348 | 349 | ||
diff --git a/arch/arm/mm/cache-v3.S b/arch/arm/mm/cache-v3.S deleted file mode 100644 index 8a3fadece8d3..000000000000 --- a/arch/arm/mm/cache-v3.S +++ /dev/null | |||
@@ -1,137 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mm/cache-v3.S | ||
3 | * | ||
4 | * Copyright (C) 1997-2002 Russell king | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #include <linux/linkage.h> | ||
11 | #include <linux/init.h> | ||
12 | #include <asm/page.h> | ||
13 | #include "proc-macros.S" | ||
14 | |||
15 | /* | ||
16 | * flush_icache_all() | ||
17 | * | ||
18 | * Unconditionally clean and invalidate the entire icache. | ||
19 | */ | ||
20 | ENTRY(v3_flush_icache_all) | ||
21 | mov pc, lr | ||
22 | ENDPROC(v3_flush_icache_all) | ||
23 | |||
24 | /* | ||
25 | * flush_user_cache_all() | ||
26 | * | ||
27 | * Invalidate all cache entries in a particular address | ||
28 | * space. | ||
29 | * | ||
30 | * - mm - mm_struct describing address space | ||
31 | */ | ||
32 | ENTRY(v3_flush_user_cache_all) | ||
33 | /* FALLTHROUGH */ | ||
34 | /* | ||
35 | * flush_kern_cache_all() | ||
36 | * | ||
37 | * Clean and invalidate the entire cache. | ||
38 | */ | ||
39 | ENTRY(v3_flush_kern_cache_all) | ||
40 | /* FALLTHROUGH */ | ||
41 | |||
42 | /* | ||
43 | * flush_user_cache_range(start, end, flags) | ||
44 | * | ||
45 | * Invalidate a range of cache entries in the specified | ||
46 | * address space. | ||
47 | * | ||
48 | * - start - start address (may not be aligned) | ||
49 | * - end - end address (exclusive, may not be aligned) | ||
50 | * - flags - vma_area_struct flags describing address space | ||
51 | */ | ||
52 | ENTRY(v3_flush_user_cache_range) | ||
53 | mov ip, #0 | ||
54 | mcreq p15, 0, ip, c7, c0, 0 @ flush ID cache | ||
55 | mov pc, lr | ||
56 | |||
57 | /* | ||
58 | * coherent_kern_range(start, end) | ||
59 | * | ||
60 | * Ensure coherency between the Icache and the Dcache in the | ||
61 | * region described by start. If you have non-snooping | ||
62 | * Harvard caches, you need to implement this function. | ||
63 | * | ||
64 | * - start - virtual start address | ||
65 | * - end - virtual end address | ||
66 | */ | ||
67 | ENTRY(v3_coherent_kern_range) | ||
68 | /* FALLTHROUGH */ | ||
69 | |||
70 | /* | ||
71 | * coherent_user_range(start, end) | ||
72 | * | ||
73 | * Ensure coherency between the Icache and the Dcache in the | ||
74 | * region described by start. If you have non-snooping | ||
75 | * Harvard caches, you need to implement this function. | ||
76 | * | ||
77 | * - start - virtual start address | ||
78 | * - end - virtual end address | ||
79 | */ | ||
80 | ENTRY(v3_coherent_user_range) | ||
81 | mov r0, #0 | ||
82 | mov pc, lr | ||
83 | |||
84 | /* | ||
85 | * flush_kern_dcache_area(void *page, size_t size) | ||
86 | * | ||
87 | * Ensure no D cache aliasing occurs, either with itself or | ||
88 | * the I cache | ||
89 | * | ||
90 | * - addr - kernel address | ||
91 | * - size - region size | ||
92 | */ | ||
93 | ENTRY(v3_flush_kern_dcache_area) | ||
94 | /* FALLTHROUGH */ | ||
95 | |||
96 | /* | ||
97 | * dma_flush_range(start, end) | ||
98 | * | ||
99 | * Clean and invalidate the specified virtual address range. | ||
100 | * | ||
101 | * - start - virtual start address | ||
102 | * - end - virtual end address | ||
103 | */ | ||
104 | ENTRY(v3_dma_flush_range) | ||
105 | mov r0, #0 | ||
106 | mcr p15, 0, r0, c7, c0, 0 @ flush ID cache | ||
107 | mov pc, lr | ||
108 | |||
109 | /* | ||
110 | * dma_unmap_area(start, size, dir) | ||
111 | * - start - kernel virtual start address | ||
112 | * - size - size of region | ||
113 | * - dir - DMA direction | ||
114 | */ | ||
115 | ENTRY(v3_dma_unmap_area) | ||
116 | teq r2, #DMA_TO_DEVICE | ||
117 | bne v3_dma_flush_range | ||
118 | /* FALLTHROUGH */ | ||
119 | |||
120 | /* | ||
121 | * dma_map_area(start, size, dir) | ||
122 | * - start - kernel virtual start address | ||
123 | * - size - size of region | ||
124 | * - dir - DMA direction | ||
125 | */ | ||
126 | ENTRY(v3_dma_map_area) | ||
127 | mov pc, lr | ||
128 | ENDPROC(v3_dma_unmap_area) | ||
129 | ENDPROC(v3_dma_map_area) | ||
130 | |||
131 | .globl v3_flush_kern_cache_louis | ||
132 | .equ v3_flush_kern_cache_louis, v3_flush_kern_cache_all | ||
133 | |||
134 | __INITDATA | ||
135 | |||
136 | @ define struct cpu_cache_fns (see <asm/cacheflush.h> and proc-macros.S) | ||
137 | define_cache_functions v3 | ||
diff --git a/arch/arm/mm/cache-v4.S b/arch/arm/mm/cache-v4.S index 43e5d77be677..a7ba68f59f0c 100644 --- a/arch/arm/mm/cache-v4.S +++ b/arch/arm/mm/cache-v4.S | |||
@@ -58,7 +58,7 @@ ENTRY(v4_flush_kern_cache_all) | |||
58 | ENTRY(v4_flush_user_cache_range) | 58 | ENTRY(v4_flush_user_cache_range) |
59 | #ifdef CONFIG_CPU_CP15 | 59 | #ifdef CONFIG_CPU_CP15 |
60 | mov ip, #0 | 60 | mov ip, #0 |
61 | mcreq p15, 0, ip, c7, c7, 0 @ flush ID cache | 61 | mcr p15, 0, ip, c7, c7, 0 @ flush ID cache |
62 | mov pc, lr | 62 | mov pc, lr |
63 | #else | 63 | #else |
64 | /* FALLTHROUGH */ | 64 | /* FALLTHROUGH */ |
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index ad722f1208a5..9a5cdc01fcdf 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c | |||
@@ -99,6 +99,9 @@ void show_mem(unsigned int filter) | |||
99 | printk("Mem-info:\n"); | 99 | printk("Mem-info:\n"); |
100 | show_free_areas(filter); | 100 | show_free_areas(filter); |
101 | 101 | ||
102 | if (filter & SHOW_MEM_FILTER_PAGE_COUNT) | ||
103 | return; | ||
104 | |||
102 | for_each_bank (i, mi) { | 105 | for_each_bank (i, mi) { |
103 | struct membank *bank = &mi->bank[i]; | 106 | struct membank *bank = &mi->bank[i]; |
104 | unsigned int pfn1, pfn2; | 107 | unsigned int pfn1, pfn2; |
@@ -424,24 +427,6 @@ void __init bootmem_init(void) | |||
424 | max_pfn = max_high - PHYS_PFN_OFFSET; | 427 | max_pfn = max_high - PHYS_PFN_OFFSET; |
425 | } | 428 | } |
426 | 429 | ||
427 | static inline int free_area(unsigned long pfn, unsigned long end, char *s) | ||
428 | { | ||
429 | unsigned int pages = 0, size = (end - pfn) << (PAGE_SHIFT - 10); | ||
430 | |||
431 | for (; pfn < end; pfn++) { | ||
432 | struct page *page = pfn_to_page(pfn); | ||
433 | ClearPageReserved(page); | ||
434 | init_page_count(page); | ||
435 | __free_page(page); | ||
436 | pages++; | ||
437 | } | ||
438 | |||
439 | if (size && s) | ||
440 | printk(KERN_INFO "Freeing %s memory: %dK\n", s, size); | ||
441 | |||
442 | return pages; | ||
443 | } | ||
444 | |||
445 | /* | 430 | /* |
446 | * Poison init memory with an undefined instruction (ARM) or a branch to an | 431 | * Poison init memory with an undefined instruction (ARM) or a branch to an |
447 | * undefined instruction (Thumb). | 432 | * undefined instruction (Thumb). |
@@ -534,6 +519,14 @@ static void __init free_unused_memmap(struct meminfo *mi) | |||
534 | #endif | 519 | #endif |
535 | } | 520 | } |
536 | 521 | ||
522 | #ifdef CONFIG_HIGHMEM | ||
523 | static inline void free_area_high(unsigned long pfn, unsigned long end) | ||
524 | { | ||
525 | for (; pfn < end; pfn++) | ||
526 | free_highmem_page(pfn_to_page(pfn)); | ||
527 | } | ||
528 | #endif | ||
529 | |||
537 | static void __init free_highpages(void) | 530 | static void __init free_highpages(void) |
538 | { | 531 | { |
539 | #ifdef CONFIG_HIGHMEM | 532 | #ifdef CONFIG_HIGHMEM |
@@ -569,8 +562,7 @@ static void __init free_highpages(void) | |||
569 | if (res_end > end) | 562 | if (res_end > end) |
570 | res_end = end; | 563 | res_end = end; |
571 | if (res_start != start) | 564 | if (res_start != start) |
572 | totalhigh_pages += free_area(start, res_start, | 565 | free_area_high(start, res_start); |
573 | NULL); | ||
574 | start = res_end; | 566 | start = res_end; |
575 | if (start == end) | 567 | if (start == end) |
576 | break; | 568 | break; |
@@ -578,9 +570,8 @@ static void __init free_highpages(void) | |||
578 | 570 | ||
579 | /* And now free anything which remains */ | 571 | /* And now free anything which remains */ |
580 | if (start < end) | 572 | if (start < end) |
581 | totalhigh_pages += free_area(start, end, NULL); | 573 | free_area_high(start, end); |
582 | } | 574 | } |
583 | totalram_pages += totalhigh_pages; | ||
584 | #endif | 575 | #endif |
585 | } | 576 | } |
586 | 577 | ||
@@ -609,8 +600,7 @@ void __init mem_init(void) | |||
609 | 600 | ||
610 | #ifdef CONFIG_SA1111 | 601 | #ifdef CONFIG_SA1111 |
611 | /* now that our DMA memory is actually so designated, we can free it */ | 602 | /* now that our DMA memory is actually so designated, we can free it */ |
612 | totalram_pages += free_area(PHYS_PFN_OFFSET, | 603 | free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL); |
613 | __phys_to_pfn(__pa(swapper_pg_dir)), NULL); | ||
614 | #endif | 604 | #endif |
615 | 605 | ||
616 | free_highpages(); | 606 | free_highpages(); |
@@ -738,16 +728,12 @@ void free_initmem(void) | |||
738 | extern char __tcm_start, __tcm_end; | 728 | extern char __tcm_start, __tcm_end; |
739 | 729 | ||
740 | poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start); | 730 | poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start); |
741 | totalram_pages += free_area(__phys_to_pfn(__pa(&__tcm_start)), | 731 | free_reserved_area(&__tcm_start, &__tcm_end, 0, "TCM link"); |
742 | __phys_to_pfn(__pa(&__tcm_end)), | ||
743 | "TCM link"); | ||
744 | #endif | 732 | #endif |
745 | 733 | ||
746 | poison_init_mem(__init_begin, __init_end - __init_begin); | 734 | poison_init_mem(__init_begin, __init_end - __init_begin); |
747 | if (!machine_is_integrator() && !machine_is_cintegrator()) | 735 | if (!machine_is_integrator() && !machine_is_cintegrator()) |
748 | totalram_pages += free_area(__phys_to_pfn(__pa(__init_begin)), | 736 | free_initmem_default(0); |
749 | __phys_to_pfn(__pa(__init_end)), | ||
750 | "init"); | ||
751 | } | 737 | } |
752 | 738 | ||
753 | #ifdef CONFIG_BLK_DEV_INITRD | 739 | #ifdef CONFIG_BLK_DEV_INITRD |
@@ -758,9 +744,7 @@ void free_initrd_mem(unsigned long start, unsigned long end) | |||
758 | { | 744 | { |
759 | if (!keep_initrd) { | 745 | if (!keep_initrd) { |
760 | poison_init_mem((void *)start, PAGE_ALIGN(end) - start); | 746 | poison_init_mem((void *)start, PAGE_ALIGN(end) - start); |
761 | totalram_pages += free_area(__phys_to_pfn(__pa(start)), | 747 | free_reserved_area(start, end, 0, "initrd"); |
762 | __phys_to_pfn(__pa(end)), | ||
763 | "initrd"); | ||
764 | } | 748 | } |
765 | } | 749 | } |
766 | 750 | ||
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 78978945492a..a84ff763ac39 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <asm/mach/pci.h> | 34 | #include <asm/mach/pci.h> |
35 | 35 | ||
36 | #include "mm.h" | 36 | #include "mm.h" |
37 | #include "tcm.h" | ||
37 | 38 | ||
38 | /* | 39 | /* |
39 | * empty_zero_page is a special page that is used for | 40 | * empty_zero_page is a special page that is used for |
@@ -1277,6 +1278,7 @@ void __init paging_init(struct machine_desc *mdesc) | |||
1277 | dma_contiguous_remap(); | 1278 | dma_contiguous_remap(); |
1278 | devicemaps_init(mdesc); | 1279 | devicemaps_init(mdesc); |
1279 | kmap_init(); | 1280 | kmap_init(); |
1281 | tcm_init(); | ||
1280 | 1282 | ||
1281 | top_pmd = pmd_off_k(0xffff0000); | 1283 | top_pmd = pmd_off_k(0xffff0000); |
1282 | 1284 | ||
diff --git a/arch/arm/mm/proc-arm740.S b/arch/arm/mm/proc-arm740.S index dc5de5d53f20..fde2d2a794cf 100644 --- a/arch/arm/mm/proc-arm740.S +++ b/arch/arm/mm/proc-arm740.S | |||
@@ -77,24 +77,27 @@ __arm740_setup: | |||
77 | mcr p15, 0, r0, c6, c0 @ set area 0, default | 77 | mcr p15, 0, r0, c6, c0 @ set area 0, default |
78 | 78 | ||
79 | ldr r0, =(CONFIG_DRAM_BASE & 0xFFFFF000) @ base[31:12] of RAM | 79 | ldr r0, =(CONFIG_DRAM_BASE & 0xFFFFF000) @ base[31:12] of RAM |
80 | ldr r1, =(CONFIG_DRAM_SIZE >> 12) @ size of RAM (must be >= 4KB) | 80 | ldr r3, =(CONFIG_DRAM_SIZE >> 12) @ size of RAM (must be >= 4KB) |
81 | mov r2, #10 @ 11 is the minimum (4KB) | 81 | mov r4, #10 @ 11 is the minimum (4KB) |
82 | 1: add r2, r2, #1 @ area size *= 2 | 82 | 1: add r4, r4, #1 @ area size *= 2 |
83 | mov r1, r1, lsr #1 | 83 | movs r3, r3, lsr #1 |
84 | bne 1b @ count not zero r-shift | 84 | bne 1b @ count not zero r-shift |
85 | orr r0, r0, r2, lsl #1 @ the area register value | 85 | orr r0, r0, r4, lsl #1 @ the area register value |
86 | orr r0, r0, #1 @ set enable bit | 86 | orr r0, r0, #1 @ set enable bit |
87 | mcr p15, 0, r0, c6, c1 @ set area 1, RAM | 87 | mcr p15, 0, r0, c6, c1 @ set area 1, RAM |
88 | 88 | ||
89 | ldr r0, =(CONFIG_FLASH_MEM_BASE & 0xFFFFF000) @ base[31:12] of FLASH | 89 | ldr r0, =(CONFIG_FLASH_MEM_BASE & 0xFFFFF000) @ base[31:12] of FLASH |
90 | ldr r1, =(CONFIG_FLASH_SIZE >> 12) @ size of FLASH (must be >= 4KB) | 90 | ldr r3, =(CONFIG_FLASH_SIZE >> 12) @ size of FLASH (must be >= 4KB) |
91 | mov r2, #10 @ 11 is the minimum (4KB) | 91 | cmp r3, #0 |
92 | 1: add r2, r2, #1 @ area size *= 2 | 92 | moveq r0, #0 |
93 | mov r1, r1, lsr #1 | 93 | beq 2f |
94 | mov r4, #10 @ 11 is the minimum (4KB) | ||
95 | 1: add r4, r4, #1 @ area size *= 2 | ||
96 | movs r3, r3, lsr #1 | ||
94 | bne 1b @ count not zero r-shift | 97 | bne 1b @ count not zero r-shift |
95 | orr r0, r0, r2, lsl #1 @ the area register value | 98 | orr r0, r0, r4, lsl #1 @ the area register value |
96 | orr r0, r0, #1 @ set enable bit | 99 | orr r0, r0, #1 @ set enable bit |
97 | mcr p15, 0, r0, c6, c2 @ set area 2, ROM/FLASH | 100 | 2: mcr p15, 0, r0, c6, c2 @ set area 2, ROM/FLASH |
98 | 101 | ||
99 | mov r0, #0x06 | 102 | mov r0, #0x06 |
100 | mcr p15, 0, r0, c2, c0 @ Region 1&2 cacheable | 103 | mcr p15, 0, r0, c2, c0 @ Region 1&2 cacheable |
@@ -137,13 +140,14 @@ __arm740_proc_info: | |||
137 | .long 0x41807400 | 140 | .long 0x41807400 |
138 | .long 0xfffffff0 | 141 | .long 0xfffffff0 |
139 | .long 0 | 142 | .long 0 |
143 | .long 0 | ||
140 | b __arm740_setup | 144 | b __arm740_setup |
141 | .long cpu_arch_name | 145 | .long cpu_arch_name |
142 | .long cpu_elf_name | 146 | .long cpu_elf_name |
143 | .long HWCAP_SWP | HWCAP_HALF | HWCAP_26BIT | 147 | .long HWCAP_SWP | HWCAP_HALF | HWCAP_THUMB | HWCAP_26BIT |
144 | .long cpu_arm740_name | 148 | .long cpu_arm740_name |
145 | .long arm740_processor_functions | 149 | .long arm740_processor_functions |
146 | .long 0 | 150 | .long 0 |
147 | .long 0 | 151 | .long 0 |
148 | .long v3_cache_fns @ cache model | 152 | .long v4_cache_fns @ cache model |
149 | .size __arm740_proc_info, . - __arm740_proc_info | 153 | .size __arm740_proc_info, . - __arm740_proc_info |
diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S index 2c3b9421ab5e..2556cf1c2da1 100644 --- a/arch/arm/mm/proc-arm920.S +++ b/arch/arm/mm/proc-arm920.S | |||
@@ -387,7 +387,7 @@ ENTRY(cpu_arm920_set_pte_ext) | |||
387 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ | 387 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ |
388 | .globl cpu_arm920_suspend_size | 388 | .globl cpu_arm920_suspend_size |
389 | .equ cpu_arm920_suspend_size, 4 * 3 | 389 | .equ cpu_arm920_suspend_size, 4 * 3 |
390 | #ifdef CONFIG_PM_SLEEP | 390 | #ifdef CONFIG_ARM_CPU_SUSPEND |
391 | ENTRY(cpu_arm920_do_suspend) | 391 | ENTRY(cpu_arm920_do_suspend) |
392 | stmfd sp!, {r4 - r6, lr} | 392 | stmfd sp!, {r4 - r6, lr} |
393 | mrc p15, 0, r4, c13, c0, 0 @ PID | 393 | mrc p15, 0, r4, c13, c0, 0 @ PID |
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S index f1803f7e2972..344c8a548cc0 100644 --- a/arch/arm/mm/proc-arm926.S +++ b/arch/arm/mm/proc-arm926.S | |||
@@ -402,7 +402,7 @@ ENTRY(cpu_arm926_set_pte_ext) | |||
402 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ | 402 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ |
403 | .globl cpu_arm926_suspend_size | 403 | .globl cpu_arm926_suspend_size |
404 | .equ cpu_arm926_suspend_size, 4 * 3 | 404 | .equ cpu_arm926_suspend_size, 4 * 3 |
405 | #ifdef CONFIG_PM_SLEEP | 405 | #ifdef CONFIG_ARM_CPU_SUSPEND |
406 | ENTRY(cpu_arm926_do_suspend) | 406 | ENTRY(cpu_arm926_do_suspend) |
407 | stmfd sp!, {r4 - r6, lr} | 407 | stmfd sp!, {r4 - r6, lr} |
408 | mrc p15, 0, r4, c13, c0, 0 @ PID | 408 | mrc p15, 0, r4, c13, c0, 0 @ PID |
diff --git a/arch/arm/mm/proc-mohawk.S b/arch/arm/mm/proc-mohawk.S index 82f9cdc751d6..0b60dd3d742a 100644 --- a/arch/arm/mm/proc-mohawk.S +++ b/arch/arm/mm/proc-mohawk.S | |||
@@ -350,7 +350,7 @@ ENTRY(cpu_mohawk_set_pte_ext) | |||
350 | 350 | ||
351 | .globl cpu_mohawk_suspend_size | 351 | .globl cpu_mohawk_suspend_size |
352 | .equ cpu_mohawk_suspend_size, 4 * 6 | 352 | .equ cpu_mohawk_suspend_size, 4 * 6 |
353 | #ifdef CONFIG_PM_SLEEP | 353 | #ifdef CONFIG_ARM_CPU_SUSPEND |
354 | ENTRY(cpu_mohawk_do_suspend) | 354 | ENTRY(cpu_mohawk_do_suspend) |
355 | stmfd sp!, {r4 - r9, lr} | 355 | stmfd sp!, {r4 - r9, lr} |
356 | mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode | 356 | mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode |
diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S index 3aa0da11fd84..d92dfd081429 100644 --- a/arch/arm/mm/proc-sa1100.S +++ b/arch/arm/mm/proc-sa1100.S | |||
@@ -172,7 +172,7 @@ ENTRY(cpu_sa1100_set_pte_ext) | |||
172 | 172 | ||
173 | .globl cpu_sa1100_suspend_size | 173 | .globl cpu_sa1100_suspend_size |
174 | .equ cpu_sa1100_suspend_size, 4 * 3 | 174 | .equ cpu_sa1100_suspend_size, 4 * 3 |
175 | #ifdef CONFIG_PM_SLEEP | 175 | #ifdef CONFIG_ARM_CPU_SUSPEND |
176 | ENTRY(cpu_sa1100_do_suspend) | 176 | ENTRY(cpu_sa1100_do_suspend) |
177 | stmfd sp!, {r4 - r6, lr} | 177 | stmfd sp!, {r4 - r6, lr} |
178 | mrc p15, 0, r4, c3, c0, 0 @ domain ID | 178 | mrc p15, 0, r4, c3, c0, 0 @ domain ID |
diff --git a/arch/arm/mm/proc-syms.c b/arch/arm/mm/proc-syms.c index 3e6210b4d6d4..054b491ff764 100644 --- a/arch/arm/mm/proc-syms.c +++ b/arch/arm/mm/proc-syms.c | |||
@@ -17,7 +17,9 @@ | |||
17 | 17 | ||
18 | #ifndef MULTI_CPU | 18 | #ifndef MULTI_CPU |
19 | EXPORT_SYMBOL(cpu_dcache_clean_area); | 19 | EXPORT_SYMBOL(cpu_dcache_clean_area); |
20 | #ifdef CONFIG_MMU | ||
20 | EXPORT_SYMBOL(cpu_set_pte_ext); | 21 | EXPORT_SYMBOL(cpu_set_pte_ext); |
22 | #endif | ||
21 | #else | 23 | #else |
22 | EXPORT_SYMBOL(processor); | 24 | EXPORT_SYMBOL(processor); |
23 | #endif | 25 | #endif |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index bcaaa8de9325..5c07ee4fe3eb 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
@@ -138,7 +138,7 @@ ENTRY(cpu_v6_set_pte_ext) | |||
138 | /* Suspend/resume support: taken from arch/arm/mach-s3c64xx/sleep.S */ | 138 | /* Suspend/resume support: taken from arch/arm/mach-s3c64xx/sleep.S */ |
139 | .globl cpu_v6_suspend_size | 139 | .globl cpu_v6_suspend_size |
140 | .equ cpu_v6_suspend_size, 4 * 6 | 140 | .equ cpu_v6_suspend_size, 4 * 6 |
141 | #ifdef CONFIG_PM_SLEEP | 141 | #ifdef CONFIG_ARM_CPU_SUSPEND |
142 | ENTRY(cpu_v6_do_suspend) | 142 | ENTRY(cpu_v6_do_suspend) |
143 | stmfd sp!, {r4 - r9, lr} | 143 | stmfd sp!, {r4 - r9, lr} |
144 | mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID | 144 | mrc p15, 0, r4, c13, c0, 0 @ FCSE/PID |
diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S index eb93d6487f35..e8efd83b6f25 100644 --- a/arch/arm/mm/proc-xsc3.S +++ b/arch/arm/mm/proc-xsc3.S | |||
@@ -413,7 +413,7 @@ ENTRY(cpu_xsc3_set_pte_ext) | |||
413 | 413 | ||
414 | .globl cpu_xsc3_suspend_size | 414 | .globl cpu_xsc3_suspend_size |
415 | .equ cpu_xsc3_suspend_size, 4 * 6 | 415 | .equ cpu_xsc3_suspend_size, 4 * 6 |
416 | #ifdef CONFIG_PM_SLEEP | 416 | #ifdef CONFIG_ARM_CPU_SUSPEND |
417 | ENTRY(cpu_xsc3_do_suspend) | 417 | ENTRY(cpu_xsc3_do_suspend) |
418 | stmfd sp!, {r4 - r9, lr} | 418 | stmfd sp!, {r4 - r9, lr} |
419 | mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode | 419 | mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode |
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S index 25510361aa18..e766f889bfd6 100644 --- a/arch/arm/mm/proc-xscale.S +++ b/arch/arm/mm/proc-xscale.S | |||
@@ -528,7 +528,7 @@ ENTRY(cpu_xscale_set_pte_ext) | |||
528 | 528 | ||
529 | .globl cpu_xscale_suspend_size | 529 | .globl cpu_xscale_suspend_size |
530 | .equ cpu_xscale_suspend_size, 4 * 6 | 530 | .equ cpu_xscale_suspend_size, 4 * 6 |
531 | #ifdef CONFIG_PM_SLEEP | 531 | #ifdef CONFIG_ARM_CPU_SUSPEND |
532 | ENTRY(cpu_xscale_do_suspend) | 532 | ENTRY(cpu_xscale_do_suspend) |
533 | stmfd sp!, {r4 - r9, lr} | 533 | stmfd sp!, {r4 - r9, lr} |
534 | mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode | 534 | mrc p14, 0, r4, c6, c0, 0 @ clock configuration, for turbo mode |
diff --git a/arch/arm/kernel/tcm.h b/arch/arm/mm/tcm.h index 8015ad434a40..8015ad434a40 100644 --- a/arch/arm/kernel/tcm.h +++ b/arch/arm/mm/tcm.h | |||
diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c index 51afedda9ab6..03db14d8ace9 100644 --- a/arch/arm/plat-samsung/devs.c +++ b/arch/arm/plat-samsung/devs.c | |||
@@ -10,6 +10,7 @@ | |||
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/amba/pl330.h> | ||
13 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
14 | #include <linux/types.h> | 15 | #include <linux/types.h> |
15 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
@@ -1552,6 +1553,9 @@ void __init s3c64xx_spi0_set_platdata(int (*cfg_gpio)(void), int src_clk_nr, | |||
1552 | pd.num_cs = num_cs; | 1553 | pd.num_cs = num_cs; |
1553 | pd.src_clk_nr = src_clk_nr; | 1554 | pd.src_clk_nr = src_clk_nr; |
1554 | pd.cfg_gpio = (cfg_gpio) ? cfg_gpio : s3c64xx_spi0_cfg_gpio; | 1555 | pd.cfg_gpio = (cfg_gpio) ? cfg_gpio : s3c64xx_spi0_cfg_gpio; |
1556 | #ifdef CONFIG_PL330_DMA | ||
1557 | pd.filter = pl330_filter; | ||
1558 | #endif | ||
1555 | 1559 | ||
1556 | s3c_set_platdata(&pd, sizeof(pd), &s3c64xx_device_spi0); | 1560 | s3c_set_platdata(&pd, sizeof(pd), &s3c64xx_device_spi0); |
1557 | } | 1561 | } |
@@ -1590,6 +1594,9 @@ void __init s3c64xx_spi1_set_platdata(int (*cfg_gpio)(void), int src_clk_nr, | |||
1590 | pd.num_cs = num_cs; | 1594 | pd.num_cs = num_cs; |
1591 | pd.src_clk_nr = src_clk_nr; | 1595 | pd.src_clk_nr = src_clk_nr; |
1592 | pd.cfg_gpio = (cfg_gpio) ? cfg_gpio : s3c64xx_spi1_cfg_gpio; | 1596 | pd.cfg_gpio = (cfg_gpio) ? cfg_gpio : s3c64xx_spi1_cfg_gpio; |
1597 | #ifdef CONFIG_PL330_DMA | ||
1598 | pd.filter = pl330_filter; | ||
1599 | #endif | ||
1593 | 1600 | ||
1594 | s3c_set_platdata(&pd, sizeof(pd), &s3c64xx_device_spi1); | 1601 | s3c_set_platdata(&pd, sizeof(pd), &s3c64xx_device_spi1); |
1595 | } | 1602 | } |
@@ -1628,6 +1635,9 @@ void __init s3c64xx_spi2_set_platdata(int (*cfg_gpio)(void), int src_clk_nr, | |||
1628 | pd.num_cs = num_cs; | 1635 | pd.num_cs = num_cs; |
1629 | pd.src_clk_nr = src_clk_nr; | 1636 | pd.src_clk_nr = src_clk_nr; |
1630 | pd.cfg_gpio = (cfg_gpio) ? cfg_gpio : s3c64xx_spi2_cfg_gpio; | 1637 | pd.cfg_gpio = (cfg_gpio) ? cfg_gpio : s3c64xx_spi2_cfg_gpio; |
1638 | #ifdef CONFIG_PL330_DMA | ||
1639 | pd.filter = pl330_filter; | ||
1640 | #endif | ||
1631 | 1641 | ||
1632 | s3c_set_platdata(&pd, sizeof(pd), &s3c64xx_device_spi2); | 1642 | s3c_set_platdata(&pd, sizeof(pd), &s3c64xx_device_spi2); |
1633 | } | 1643 | } |
diff --git a/arch/arm/plat-samsung/include/plat/fb.h b/arch/arm/plat-samsung/include/plat/fb.h index b885322717a1..9ae507270785 100644 --- a/arch/arm/plat-samsung/include/plat/fb.h +++ b/arch/arm/plat-samsung/include/plat/fb.h | |||
@@ -15,55 +15,7 @@ | |||
15 | #ifndef __PLAT_S3C_FB_H | 15 | #ifndef __PLAT_S3C_FB_H |
16 | #define __PLAT_S3C_FB_H __FILE__ | 16 | #define __PLAT_S3C_FB_H __FILE__ |
17 | 17 | ||
18 | /* S3C_FB_MAX_WIN | 18 | #include <linux/platform_data/video_s3c.h> |
19 | * Set to the maximum number of windows that any of the supported hardware | ||
20 | * can use. Since the platform data uses this for an array size, having it | ||
21 | * set to the maximum of any version of the hardware can do is safe. | ||
22 | */ | ||
23 | #define S3C_FB_MAX_WIN (5) | ||
24 | |||
25 | /** | ||
26 | * struct s3c_fb_pd_win - per window setup data | ||
27 | * @xres : The window X size. | ||
28 | * @yres : The window Y size. | ||
29 | * @virtual_x: The virtual X size. | ||
30 | * @virtual_y: The virtual Y size. | ||
31 | */ | ||
32 | struct s3c_fb_pd_win { | ||
33 | unsigned short default_bpp; | ||
34 | unsigned short max_bpp; | ||
35 | unsigned short xres; | ||
36 | unsigned short yres; | ||
37 | unsigned short virtual_x; | ||
38 | unsigned short virtual_y; | ||
39 | }; | ||
40 | |||
41 | /** | ||
42 | * struct s3c_fb_platdata - S3C driver platform specific information | ||
43 | * @setup_gpio: Setup the external GPIO pins to the right state to transfer | ||
44 | * the data from the display system to the connected display | ||
45 | * device. | ||
46 | * @vidcon0: The base vidcon0 values to control the panel data format. | ||
47 | * @vidcon1: The base vidcon1 values to control the panel data output. | ||
48 | * @vtiming: Video timing when connected to a RGB type panel. | ||
49 | * @win: The setup data for each hardware window, or NULL for unused. | ||
50 | * @display_mode: The LCD output display mode. | ||
51 | * | ||
52 | * The platform data supplies the video driver with all the information | ||
53 | * it requires to work with the display(s) attached to the machine. It | ||
54 | * controls the initial mode, the number of display windows (0 is always | ||
55 | * the base framebuffer) that are initialised etc. | ||
56 | * | ||
57 | */ | ||
58 | struct s3c_fb_platdata { | ||
59 | void (*setup_gpio)(void); | ||
60 | |||
61 | struct s3c_fb_pd_win *win[S3C_FB_MAX_WIN]; | ||
62 | struct fb_videomode *vtiming; | ||
63 | |||
64 | u32 vidcon0; | ||
65 | u32 vidcon1; | ||
66 | }; | ||
67 | 19 | ||
68 | /** | 20 | /** |
69 | * s3c_fb_set_platdata() - Setup the FB device with platform data. | 21 | * s3c_fb_set_platdata() - Setup the FB device with platform data. |
diff --git a/arch/arm/plat-samsung/include/plat/regs-serial.h b/arch/arm/plat-samsung/include/plat/regs-serial.h index 29c26a818842..f05f2afa440d 100644 --- a/arch/arm/plat-samsung/include/plat/regs-serial.h +++ b/arch/arm/plat-samsung/include/plat/regs-serial.h | |||
@@ -1,281 +1 @@ | |||
1 | /* arch/arm/plat-samsung/include/plat/regs-serial.h | #include <linux/serial_s3c.h> | |
2 | * | ||
3 | * From linux/include/asm-arm/hardware/serial_s3c2410.h | ||
4 | * | ||
5 | * Internal header file for Samsung S3C2410 serial ports (UART0-2) | ||
6 | * | ||
7 | * Copyright (C) 2002 Shane Nay (shane@minirl.com) | ||
8 | * | ||
9 | * Additional defines, Copyright 2003 Simtec Electronics (linux@simtec.co.uk) | ||
10 | * | ||
11 | * Adapted from: | ||
12 | * | ||
13 | * Internal header file for MX1ADS serial ports (UART1 & 2) | ||
14 | * | ||
15 | * Copyright (C) 2002 Shane Nay (shane@minirl.com) | ||
16 | * | ||
17 | * This program is free software; you can redistribute it and/or modify | ||
18 | * it under the terms of the GNU General Public License as published by | ||
19 | * the Free Software Foundation; either version 2 of the License, or | ||
20 | * (at your option) any later version. | ||
21 | * | ||
22 | * This program is distributed in the hope that it will be useful, | ||
23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
25 | * GNU General Public License for more details. | ||
26 | * | ||
27 | * You should have received a copy of the GNU General Public License | ||
28 | * along with this program; if not, write to the Free Software | ||
29 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
30 | */ | ||
31 | |||
32 | #ifndef __ASM_ARM_REGS_SERIAL_H | ||
33 | #define __ASM_ARM_REGS_SERIAL_H | ||
34 | |||
35 | #define S3C24XX_VA_UART0 (S3C_VA_UART) | ||
36 | #define S3C24XX_VA_UART1 (S3C_VA_UART + 0x4000 ) | ||
37 | #define S3C24XX_VA_UART2 (S3C_VA_UART + 0x8000 ) | ||
38 | #define S3C24XX_VA_UART3 (S3C_VA_UART + 0xC000 ) | ||
39 | |||
40 | #define S3C2410_PA_UART0 (S3C24XX_PA_UART) | ||
41 | #define S3C2410_PA_UART1 (S3C24XX_PA_UART + 0x4000 ) | ||
42 | #define S3C2410_PA_UART2 (S3C24XX_PA_UART + 0x8000 ) | ||
43 | #define S3C2443_PA_UART3 (S3C24XX_PA_UART + 0xC000 ) | ||
44 | |||
45 | #define S3C2410_URXH (0x24) | ||
46 | #define S3C2410_UTXH (0x20) | ||
47 | #define S3C2410_ULCON (0x00) | ||
48 | #define S3C2410_UCON (0x04) | ||
49 | #define S3C2410_UFCON (0x08) | ||
50 | #define S3C2410_UMCON (0x0C) | ||
51 | #define S3C2410_UBRDIV (0x28) | ||
52 | #define S3C2410_UTRSTAT (0x10) | ||
53 | #define S3C2410_UERSTAT (0x14) | ||
54 | #define S3C2410_UFSTAT (0x18) | ||
55 | #define S3C2410_UMSTAT (0x1C) | ||
56 | |||
57 | #define S3C2410_LCON_CFGMASK ((0xF<<3)|(0x3)) | ||
58 | |||
59 | #define S3C2410_LCON_CS5 (0x0) | ||
60 | #define S3C2410_LCON_CS6 (0x1) | ||
61 | #define S3C2410_LCON_CS7 (0x2) | ||
62 | #define S3C2410_LCON_CS8 (0x3) | ||
63 | #define S3C2410_LCON_CSMASK (0x3) | ||
64 | |||
65 | #define S3C2410_LCON_PNONE (0x0) | ||
66 | #define S3C2410_LCON_PEVEN (0x5 << 3) | ||
67 | #define S3C2410_LCON_PODD (0x4 << 3) | ||
68 | #define S3C2410_LCON_PMASK (0x7 << 3) | ||
69 | |||
70 | #define S3C2410_LCON_STOPB (1<<2) | ||
71 | #define S3C2410_LCON_IRM (1<<6) | ||
72 | |||
73 | #define S3C2440_UCON_CLKMASK (3<<10) | ||
74 | #define S3C2440_UCON_CLKSHIFT (10) | ||
75 | #define S3C2440_UCON_PCLK (0<<10) | ||
76 | #define S3C2440_UCON_UCLK (1<<10) | ||
77 | #define S3C2440_UCON_PCLK2 (2<<10) | ||
78 | #define S3C2440_UCON_FCLK (3<<10) | ||
79 | #define S3C2443_UCON_EPLL (3<<10) | ||
80 | |||
81 | #define S3C6400_UCON_CLKMASK (3<<10) | ||
82 | #define S3C6400_UCON_CLKSHIFT (10) | ||
83 | #define S3C6400_UCON_PCLK (0<<10) | ||
84 | #define S3C6400_UCON_PCLK2 (2<<10) | ||
85 | #define S3C6400_UCON_UCLK0 (1<<10) | ||
86 | #define S3C6400_UCON_UCLK1 (3<<10) | ||
87 | |||
88 | #define S3C2440_UCON2_FCLK_EN (1<<15) | ||
89 | #define S3C2440_UCON0_DIVMASK (15 << 12) | ||
90 | #define S3C2440_UCON1_DIVMASK (15 << 12) | ||
91 | #define S3C2440_UCON2_DIVMASK (7 << 12) | ||
92 | #define S3C2440_UCON_DIVSHIFT (12) | ||
93 | |||
94 | #define S3C2412_UCON_CLKMASK (3<<10) | ||
95 | #define S3C2412_UCON_CLKSHIFT (10) | ||
96 | #define S3C2412_UCON_UCLK (1<<10) | ||
97 | #define S3C2412_UCON_USYSCLK (3<<10) | ||
98 | #define S3C2412_UCON_PCLK (0<<10) | ||
99 | #define S3C2412_UCON_PCLK2 (2<<10) | ||
100 | |||
101 | #define S3C2410_UCON_CLKMASK (1 << 10) | ||
102 | #define S3C2410_UCON_CLKSHIFT (10) | ||
103 | #define S3C2410_UCON_UCLK (1<<10) | ||
104 | #define S3C2410_UCON_SBREAK (1<<4) | ||
105 | |||
106 | #define S3C2410_UCON_TXILEVEL (1<<9) | ||
107 | #define S3C2410_UCON_RXILEVEL (1<<8) | ||
108 | #define S3C2410_UCON_TXIRQMODE (1<<2) | ||
109 | #define S3C2410_UCON_RXIRQMODE (1<<0) | ||
110 | #define S3C2410_UCON_RXFIFO_TOI (1<<7) | ||
111 | #define S3C2443_UCON_RXERR_IRQEN (1<<6) | ||
112 | #define S3C2443_UCON_LOOPBACK (1<<5) | ||
113 | |||
114 | #define S3C2410_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \ | ||
115 | S3C2410_UCON_RXILEVEL | \ | ||
116 | S3C2410_UCON_TXIRQMODE | \ | ||
117 | S3C2410_UCON_RXIRQMODE | \ | ||
118 | S3C2410_UCON_RXFIFO_TOI) | ||
119 | |||
120 | #define S3C2410_UFCON_FIFOMODE (1<<0) | ||
121 | #define S3C2410_UFCON_TXTRIG0 (0<<6) | ||
122 | #define S3C2410_UFCON_RXTRIG8 (1<<4) | ||
123 | #define S3C2410_UFCON_RXTRIG12 (2<<4) | ||
124 | |||
125 | /* S3C2440 FIFO trigger levels */ | ||
126 | #define S3C2440_UFCON_RXTRIG1 (0<<4) | ||
127 | #define S3C2440_UFCON_RXTRIG8 (1<<4) | ||
128 | #define S3C2440_UFCON_RXTRIG16 (2<<4) | ||
129 | #define S3C2440_UFCON_RXTRIG32 (3<<4) | ||
130 | |||
131 | #define S3C2440_UFCON_TXTRIG0 (0<<6) | ||
132 | #define S3C2440_UFCON_TXTRIG16 (1<<6) | ||
133 | #define S3C2440_UFCON_TXTRIG32 (2<<6) | ||
134 | #define S3C2440_UFCON_TXTRIG48 (3<<6) | ||
135 | |||
136 | #define S3C2410_UFCON_RESETBOTH (3<<1) | ||
137 | #define S3C2410_UFCON_RESETTX (1<<2) | ||
138 | #define S3C2410_UFCON_RESETRX (1<<1) | ||
139 | |||
140 | #define S3C2410_UFCON_DEFAULT (S3C2410_UFCON_FIFOMODE | \ | ||
141 | S3C2410_UFCON_TXTRIG0 | \ | ||
142 | S3C2410_UFCON_RXTRIG8 ) | ||
143 | |||
144 | #define S3C2410_UMCOM_AFC (1<<4) | ||
145 | #define S3C2410_UMCOM_RTS_LOW (1<<0) | ||
146 | |||
147 | #define S3C2412_UMCON_AFC_63 (0<<5) /* same as s3c2443 */ | ||
148 | #define S3C2412_UMCON_AFC_56 (1<<5) | ||
149 | #define S3C2412_UMCON_AFC_48 (2<<5) | ||
150 | #define S3C2412_UMCON_AFC_40 (3<<5) | ||
151 | #define S3C2412_UMCON_AFC_32 (4<<5) | ||
152 | #define S3C2412_UMCON_AFC_24 (5<<5) | ||
153 | #define S3C2412_UMCON_AFC_16 (6<<5) | ||
154 | #define S3C2412_UMCON_AFC_8 (7<<5) | ||
155 | |||
156 | #define S3C2410_UFSTAT_TXFULL (1<<9) | ||
157 | #define S3C2410_UFSTAT_RXFULL (1<<8) | ||
158 | #define S3C2410_UFSTAT_TXMASK (15<<4) | ||
159 | #define S3C2410_UFSTAT_TXSHIFT (4) | ||
160 | #define S3C2410_UFSTAT_RXMASK (15<<0) | ||
161 | #define S3C2410_UFSTAT_RXSHIFT (0) | ||
162 | |||
163 | /* UFSTAT S3C2443 same as S3C2440 */ | ||
164 | #define S3C2440_UFSTAT_TXFULL (1<<14) | ||
165 | #define S3C2440_UFSTAT_RXFULL (1<<6) | ||
166 | #define S3C2440_UFSTAT_TXSHIFT (8) | ||
167 | #define S3C2440_UFSTAT_RXSHIFT (0) | ||
168 | #define S3C2440_UFSTAT_TXMASK (63<<8) | ||
169 | #define S3C2440_UFSTAT_RXMASK (63) | ||
170 | |||
171 | #define S3C2410_UTRSTAT_TXE (1<<2) | ||
172 | #define S3C2410_UTRSTAT_TXFE (1<<1) | ||
173 | #define S3C2410_UTRSTAT_RXDR (1<<0) | ||
174 | |||
175 | #define S3C2410_UERSTAT_OVERRUN (1<<0) | ||
176 | #define S3C2410_UERSTAT_FRAME (1<<2) | ||
177 | #define S3C2410_UERSTAT_BREAK (1<<3) | ||
178 | #define S3C2443_UERSTAT_PARITY (1<<1) | ||
179 | |||
180 | #define S3C2410_UERSTAT_ANY (S3C2410_UERSTAT_OVERRUN | \ | ||
181 | S3C2410_UERSTAT_FRAME | \ | ||
182 | S3C2410_UERSTAT_BREAK) | ||
183 | |||
184 | #define S3C2410_UMSTAT_CTS (1<<0) | ||
185 | #define S3C2410_UMSTAT_DeltaCTS (1<<2) | ||
186 | |||
187 | #define S3C2443_DIVSLOT (0x2C) | ||
188 | |||
189 | /* S3C64XX interrupt registers. */ | ||
190 | #define S3C64XX_UINTP 0x30 | ||
191 | #define S3C64XX_UINTSP 0x34 | ||
192 | #define S3C64XX_UINTM 0x38 | ||
193 | |||
194 | #define S3C64XX_UINTM_RXD (0) | ||
195 | #define S3C64XX_UINTM_TXD (2) | ||
196 | #define S3C64XX_UINTM_RXD_MSK (1 << S3C64XX_UINTM_RXD) | ||
197 | #define S3C64XX_UINTM_TXD_MSK (1 << S3C64XX_UINTM_TXD) | ||
198 | |||
199 | /* Following are specific to S5PV210 */ | ||
200 | #define S5PV210_UCON_CLKMASK (1<<10) | ||
201 | #define S5PV210_UCON_CLKSHIFT (10) | ||
202 | #define S5PV210_UCON_PCLK (0<<10) | ||
203 | #define S5PV210_UCON_UCLK (1<<10) | ||
204 | |||
205 | #define S5PV210_UFCON_TXTRIG0 (0<<8) | ||
206 | #define S5PV210_UFCON_TXTRIG4 (1<<8) | ||
207 | #define S5PV210_UFCON_TXTRIG8 (2<<8) | ||
208 | #define S5PV210_UFCON_TXTRIG16 (3<<8) | ||
209 | #define S5PV210_UFCON_TXTRIG32 (4<<8) | ||
210 | #define S5PV210_UFCON_TXTRIG64 (5<<8) | ||
211 | #define S5PV210_UFCON_TXTRIG128 (6<<8) | ||
212 | #define S5PV210_UFCON_TXTRIG256 (7<<8) | ||
213 | |||
214 | #define S5PV210_UFCON_RXTRIG1 (0<<4) | ||
215 | #define S5PV210_UFCON_RXTRIG4 (1<<4) | ||
216 | #define S5PV210_UFCON_RXTRIG8 (2<<4) | ||
217 | #define S5PV210_UFCON_RXTRIG16 (3<<4) | ||
218 | #define S5PV210_UFCON_RXTRIG32 (4<<4) | ||
219 | #define S5PV210_UFCON_RXTRIG64 (5<<4) | ||
220 | #define S5PV210_UFCON_RXTRIG128 (6<<4) | ||
221 | #define S5PV210_UFCON_RXTRIG256 (7<<4) | ||
222 | |||
223 | #define S5PV210_UFSTAT_TXFULL (1<<24) | ||
224 | #define S5PV210_UFSTAT_RXFULL (1<<8) | ||
225 | #define S5PV210_UFSTAT_TXMASK (255<<16) | ||
226 | #define S5PV210_UFSTAT_TXSHIFT (16) | ||
227 | #define S5PV210_UFSTAT_RXMASK (255<<0) | ||
228 | #define S5PV210_UFSTAT_RXSHIFT (0) | ||
229 | |||
230 | #define S3C2410_UCON_CLKSEL0 (1 << 0) | ||
231 | #define S3C2410_UCON_CLKSEL1 (1 << 1) | ||
232 | #define S3C2410_UCON_CLKSEL2 (1 << 2) | ||
233 | #define S3C2410_UCON_CLKSEL3 (1 << 3) | ||
234 | |||
235 | /* Default values for s5pv210 UCON and UFCON uart registers */ | ||
236 | #define S5PV210_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \ | ||
237 | S3C2410_UCON_RXILEVEL | \ | ||
238 | S3C2410_UCON_TXIRQMODE | \ | ||
239 | S3C2410_UCON_RXIRQMODE | \ | ||
240 | S3C2410_UCON_RXFIFO_TOI | \ | ||
241 | S3C2443_UCON_RXERR_IRQEN) | ||
242 | |||
243 | #define S5PV210_UFCON_DEFAULT (S3C2410_UFCON_FIFOMODE | \ | ||
244 | S5PV210_UFCON_TXTRIG4 | \ | ||
245 | S5PV210_UFCON_RXTRIG4) | ||
246 | |||
247 | #ifndef __ASSEMBLY__ | ||
248 | |||
249 | /* configuration structure for per-machine configurations for the | ||
250 | * serial port | ||
251 | * | ||
252 | * the pointer is setup by the machine specific initialisation from the | ||
253 | * arch/arm/mach-s3c2410/ directory. | ||
254 | */ | ||
255 | |||
256 | struct s3c2410_uartcfg { | ||
257 | unsigned char hwport; /* hardware port number */ | ||
258 | unsigned char unused; | ||
259 | unsigned short flags; | ||
260 | upf_t uart_flags; /* default uart flags */ | ||
261 | unsigned int clk_sel; | ||
262 | |||
263 | unsigned int has_fracval; | ||
264 | |||
265 | unsigned long ucon; /* value of ucon for port */ | ||
266 | unsigned long ulcon; /* value of ulcon for port */ | ||
267 | unsigned long ufcon; /* value of ufcon for port */ | ||
268 | }; | ||
269 | |||
270 | /* s3c24xx_uart_devs | ||
271 | * | ||
272 | * this is exported from the core as we cannot use driver_register(), | ||
273 | * or platform_add_device() before the console_initcall() | ||
274 | */ | ||
275 | |||
276 | extern struct platform_device *s3c24xx_uart_devs[4]; | ||
277 | |||
278 | #endif /* __ASSEMBLY__ */ | ||
279 | |||
280 | #endif /* __ASM_ARM_REGS_SERIAL_H */ | ||
281 | |||
diff --git a/arch/arm/plat-samsung/include/plat/usb-phy.h b/arch/arm/plat-samsung/include/plat/usb-phy.h index 959bcdb03a25..ab34dfadb7f9 100644 --- a/arch/arm/plat-samsung/include/plat/usb-phy.h +++ b/arch/arm/plat-samsung/include/plat/usb-phy.h | |||
@@ -11,10 +11,7 @@ | |||
11 | #ifndef __PLAT_SAMSUNG_USB_PHY_H | 11 | #ifndef __PLAT_SAMSUNG_USB_PHY_H |
12 | #define __PLAT_SAMSUNG_USB_PHY_H __FILE__ | 12 | #define __PLAT_SAMSUNG_USB_PHY_H __FILE__ |
13 | 13 | ||
14 | enum s5p_usb_phy_type { | 14 | #include <linux/usb/samsung_usb_phy.h> |
15 | S5P_USB_PHY_DEVICE, | ||
16 | S5P_USB_PHY_HOST, | ||
17 | }; | ||
18 | 15 | ||
19 | extern int s5p_usb_phy_init(struct platform_device *pdev, int type); | 16 | extern int s5p_usb_phy_init(struct platform_device *pdev, int type); |
20 | extern int s5p_usb_phy_exit(struct platform_device *pdev, int type); | 17 | extern int s5p_usb_phy_exit(struct platform_device *pdev, int type); |