diff options
author | Olof Johansson <olof@lixom.net> | 2012-09-16 21:24:19 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-09-16 21:24:19 -0400 |
commit | afdeeccbb7df712d554073c91ff9ad07ed27cbbd (patch) | |
tree | ae71c2a51081c46e7cbfe67a52d9ee026982f814 | |
parent | d6530016ed9a2457be89dfeed02714dfa52d46b1 (diff) | |
parent | be972c3272c354b323afcb7e9552a9b04e675a8b (diff) |
Merge tag 'tegra-for-3.7-board-removal' of git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra into next/cleanup
From Stephen Warren:
ARM: tegra: remove board files
This branch removes all remaining board files for Tegra; booting is
now through device tree only.
Related, the Harmony DT is augmented with regulators, since this allows
removal of board-harmony-power.c; no other boards had regulator support.
This change depends on an enhancement to the TPS6586x regulator driver,
hence the dependency mentioned below.
* tag 'tegra-for-3.7-board-removal' of git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra:
ARM: dt: tegra: harmony: configure power off
ARM: dt: tegra: harmony: add regulators
ARM: tegra: remove board (but not DT) support for Harmony
ARM: tegra: remove board (but not DT) support for Paz00
ARM: tegra: remove board (but not DT) support for TrimSlice
-rw-r--r-- | arch/arm/boot/dts/tegra20-harmony.dts | 220 | ||||
-rw-r--r-- | arch/arm/mach-tegra/Kconfig | 19 | ||||
-rw-r--r-- | arch/arm/mach-tegra/Makefile | 11 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-dt-tegra20.c | 23 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-harmony-pcie.c | 49 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-harmony-pinmux.c | 156 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-harmony-power.c | 156 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-harmony.c | 197 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-harmony.h | 41 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-paz00-pinmux.c | 156 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-paz00.c | 192 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-paz00.h | 17 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-trimslice-pinmux.c | 155 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-trimslice.c | 183 | ||||
-rw-r--r-- | arch/arm/mach-tegra/board-trimslice.h | 30 |
15 files changed, 257 insertions, 1348 deletions
diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts index f146dbf6f7f8..b98a1b36e694 100644 --- a/arch/arm/boot/dts/tegra20-harmony.dts +++ b/arch/arm/boot/dts/tegra20-harmony.dts | |||
@@ -275,6 +275,160 @@ | |||
275 | i2c@7000d000 { | 275 | i2c@7000d000 { |
276 | status = "okay"; | 276 | status = "okay"; |
277 | clock-frequency = <400000>; | 277 | clock-frequency = <400000>; |
278 | |||
279 | pmic: tps6586x@34 { | ||
280 | compatible = "ti,tps6586x"; | ||
281 | reg = <0x34>; | ||
282 | interrupts = <0 86 0x4>; | ||
283 | |||
284 | ti,system-power-controller; | ||
285 | |||
286 | #gpio-cells = <2>; | ||
287 | gpio-controller; | ||
288 | |||
289 | sys-supply = <&vdd_5v0_reg>; | ||
290 | vin-sm0-supply = <&sys_reg>; | ||
291 | vin-sm1-supply = <&sys_reg>; | ||
292 | vin-sm2-supply = <&sys_reg>; | ||
293 | vinldo01-supply = <&sm2_reg>; | ||
294 | vinldo23-supply = <&sm2_reg>; | ||
295 | vinldo4-supply = <&sm2_reg>; | ||
296 | vinldo678-supply = <&sm2_reg>; | ||
297 | vinldo9-supply = <&sm2_reg>; | ||
298 | |||
299 | regulators { | ||
300 | #address-cells = <1>; | ||
301 | #size-cells = <0>; | ||
302 | |||
303 | sys_reg: regulator@0 { | ||
304 | reg = <0>; | ||
305 | regulator-compatible = "sys"; | ||
306 | regulator-name = "vdd_sys"; | ||
307 | regulator-always-on; | ||
308 | }; | ||
309 | |||
310 | regulator@1 { | ||
311 | reg = <1>; | ||
312 | regulator-compatible = "sm0"; | ||
313 | regulator-name = "vdd_sm0,vdd_core"; | ||
314 | regulator-min-microvolt = <1200000>; | ||
315 | regulator-max-microvolt = <1200000>; | ||
316 | regulator-always-on; | ||
317 | }; | ||
318 | |||
319 | regulator@2 { | ||
320 | reg = <2>; | ||
321 | regulator-compatible = "sm1"; | ||
322 | regulator-name = "vdd_sm1,vdd_cpu"; | ||
323 | regulator-min-microvolt = <1000000>; | ||
324 | regulator-max-microvolt = <1000000>; | ||
325 | regulator-always-on; | ||
326 | }; | ||
327 | |||
328 | sm2_reg: regulator@3 { | ||
329 | reg = <3>; | ||
330 | regulator-compatible = "sm2"; | ||
331 | regulator-name = "vdd_sm2,vin_ldo*"; | ||
332 | regulator-min-microvolt = <3700000>; | ||
333 | regulator-max-microvolt = <3700000>; | ||
334 | regulator-always-on; | ||
335 | }; | ||
336 | |||
337 | regulator@4 { | ||
338 | reg = <4>; | ||
339 | regulator-compatible = "ldo0"; | ||
340 | regulator-name = "vdd_ldo0,vddio_pex_clk"; | ||
341 | regulator-min-microvolt = <3300000>; | ||
342 | regulator-max-microvolt = <3300000>; | ||
343 | }; | ||
344 | |||
345 | regulator@5 { | ||
346 | reg = <5>; | ||
347 | regulator-compatible = "ldo1"; | ||
348 | regulator-name = "vdd_ldo1,avdd_pll*"; | ||
349 | regulator-min-microvolt = <1100000>; | ||
350 | regulator-max-microvolt = <1100000>; | ||
351 | regulator-always-on; | ||
352 | }; | ||
353 | |||
354 | regulator@6 { | ||
355 | reg = <6>; | ||
356 | regulator-compatible = "ldo2"; | ||
357 | regulator-name = "vdd_ldo2,vdd_rtc"; | ||
358 | regulator-min-microvolt = <1200000>; | ||
359 | regulator-max-microvolt = <1200000>; | ||
360 | }; | ||
361 | |||
362 | regulator@7 { | ||
363 | reg = <7>; | ||
364 | regulator-compatible = "ldo3"; | ||
365 | regulator-name = "vdd_ldo3,avdd_usb*"; | ||
366 | regulator-min-microvolt = <3300000>; | ||
367 | regulator-max-microvolt = <3300000>; | ||
368 | regulator-always-on; | ||
369 | }; | ||
370 | |||
371 | regulator@8 { | ||
372 | reg = <8>; | ||
373 | regulator-compatible = "ldo4"; | ||
374 | regulator-name = "vdd_ldo4,avdd_osc,vddio_sys"; | ||
375 | regulator-min-microvolt = <1800000>; | ||
376 | regulator-max-microvolt = <1800000>; | ||
377 | regulator-always-on; | ||
378 | }; | ||
379 | |||
380 | regulator@9 { | ||
381 | reg = <9>; | ||
382 | regulator-compatible = "ldo5"; | ||
383 | regulator-name = "vdd_ldo5,vcore_mmc"; | ||
384 | regulator-min-microvolt = <2850000>; | ||
385 | regulator-max-microvolt = <2850000>; | ||
386 | regulator-always-on; | ||
387 | }; | ||
388 | |||
389 | regulator@10 { | ||
390 | reg = <10>; | ||
391 | regulator-compatible = "ldo6"; | ||
392 | regulator-name = "vdd_ldo6,avdd_vdac"; | ||
393 | regulator-min-microvolt = <1800000>; | ||
394 | regulator-max-microvolt = <1800000>; | ||
395 | }; | ||
396 | |||
397 | regulator@11 { | ||
398 | reg = <11>; | ||
399 | regulator-compatible = "ldo7"; | ||
400 | regulator-name = "vdd_ldo7,avdd_hdmi,vdd_fuse"; | ||
401 | regulator-min-microvolt = <3300000>; | ||
402 | regulator-max-microvolt = <3300000>; | ||
403 | }; | ||
404 | |||
405 | regulator@12 { | ||
406 | reg = <12>; | ||
407 | regulator-compatible = "ldo8"; | ||
408 | regulator-name = "vdd_ldo8,avdd_hdmi_pll"; | ||
409 | regulator-min-microvolt = <1800000>; | ||
410 | regulator-max-microvolt = <1800000>; | ||
411 | }; | ||
412 | |||
413 | regulator@13 { | ||
414 | reg = <13>; | ||
415 | regulator-compatible = "ldo9"; | ||
416 | regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx"; | ||
417 | regulator-min-microvolt = <2850000>; | ||
418 | regulator-max-microvolt = <2850000>; | ||
419 | regulator-always-on; | ||
420 | }; | ||
421 | |||
422 | regulator@14 { | ||
423 | reg = <14>; | ||
424 | regulator-compatible = "ldo_rtc"; | ||
425 | regulator-name = "vdd_rtc_out,vdd_cell"; | ||
426 | regulator-min-microvolt = <3300000>; | ||
427 | regulator-max-microvolt = <3300000>; | ||
428 | regulator-always-on; | ||
429 | }; | ||
430 | }; | ||
431 | }; | ||
278 | }; | 432 | }; |
279 | 433 | ||
280 | pmc { | 434 | pmc { |
@@ -310,6 +464,72 @@ | |||
310 | bus-width = <8>; | 464 | bus-width = <8>; |
311 | }; | 465 | }; |
312 | 466 | ||
467 | regulators { | ||
468 | compatible = "simple-bus"; | ||
469 | #address-cells = <1>; | ||
470 | #size-cells = <0>; | ||
471 | |||
472 | vdd_5v0_reg: regulator@0 { | ||
473 | compatible = "regulator-fixed"; | ||
474 | reg = <0>; | ||
475 | regulator-name = "vdd_5v0"; | ||
476 | regulator-min-microvolt = <5000000>; | ||
477 | regulator-max-microvolt = <5000000>; | ||
478 | regulator-always-on; | ||
479 | }; | ||
480 | |||
481 | regulator@1 { | ||
482 | compatible = "regulator-fixed"; | ||
483 | reg = <1>; | ||
484 | regulator-name = "vdd_1v5"; | ||
485 | regulator-min-microvolt = <1500000>; | ||
486 | regulator-max-microvolt = <1500000>; | ||
487 | gpio = <&pmic 0 0>; | ||
488 | }; | ||
489 | |||
490 | regulator@2 { | ||
491 | compatible = "regulator-fixed"; | ||
492 | reg = <2>; | ||
493 | regulator-name = "vdd_1v2"; | ||
494 | regulator-min-microvolt = <1200000>; | ||
495 | regulator-max-microvolt = <1200000>; | ||
496 | gpio = <&pmic 1 0>; | ||
497 | enable-active-high; | ||
498 | }; | ||
499 | |||
500 | regulator@3 { | ||
501 | compatible = "regulator-fixed"; | ||
502 | reg = <3>; | ||
503 | regulator-name = "vdd_1v05"; | ||
504 | regulator-min-microvolt = <1050000>; | ||
505 | regulator-max-microvolt = <1050000>; | ||
506 | gpio = <&pmic 2 0>; | ||
507 | enable-active-high; | ||
508 | /* Hack until board-harmony-pcie.c is removed */ | ||
509 | status = "disabled"; | ||
510 | }; | ||
511 | |||
512 | regulator@4 { | ||
513 | compatible = "regulator-fixed"; | ||
514 | reg = <4>; | ||
515 | regulator-name = "vdd_pnl"; | ||
516 | regulator-min-microvolt = <2800000>; | ||
517 | regulator-max-microvolt = <2800000>; | ||
518 | gpio = <&gpio 22 0>; /* gpio PC6 */ | ||
519 | enable-active-high; | ||
520 | }; | ||
521 | |||
522 | regulator@5 { | ||
523 | compatible = "regulator-fixed"; | ||
524 | reg = <5>; | ||
525 | regulator-name = "vdd_bl"; | ||
526 | regulator-min-microvolt = <2800000>; | ||
527 | regulator-max-microvolt = <2800000>; | ||
528 | gpio = <&gpio 176 0>; /* gpio PW0 */ | ||
529 | enable-active-high; | ||
530 | }; | ||
531 | }; | ||
532 | |||
313 | sound { | 533 | sound { |
314 | compatible = "nvidia,tegra-audio-wm8903-harmony", | 534 | compatible = "nvidia,tegra-audio-wm8903-harmony", |
315 | "nvidia,tegra-audio-wm8903"; | 535 | "nvidia,tegra-audio-wm8903"; |
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig index cce4bb07b575..b3226f80c985 100644 --- a/arch/arm/mach-tegra/Kconfig +++ b/arch/arm/mach-tegra/Kconfig | |||
@@ -59,25 +59,6 @@ config TEGRA_AHB | |||
59 | 59 | ||
60 | comment "Tegra board type" | 60 | comment "Tegra board type" |
61 | 61 | ||
62 | config MACH_HARMONY | ||
63 | bool "Harmony board" | ||
64 | depends on ARCH_TEGRA_2x_SOC | ||
65 | help | ||
66 | Support for nVidia Harmony development platform | ||
67 | |||
68 | config MACH_PAZ00 | ||
69 | bool "Paz00 board" | ||
70 | depends on ARCH_TEGRA_2x_SOC | ||
71 | help | ||
72 | Support for the Toshiba AC100/Dynabook AZ netbook | ||
73 | |||
74 | config MACH_TRIMSLICE | ||
75 | bool "TrimSlice board" | ||
76 | depends on ARCH_TEGRA_2x_SOC | ||
77 | select TEGRA_PCI | ||
78 | help | ||
79 | Support for CompuLab TrimSlice platform | ||
80 | |||
81 | choice | 62 | choice |
82 | prompt "Default low-level debug console UART" | 63 | prompt "Default low-level debug console UART" |
83 | default TEGRA_DEBUG_UART_NONE | 64 | default TEGRA_DEBUG_UART_NONE |
diff --git a/arch/arm/mach-tegra/Makefile b/arch/arm/mach-tegra/Makefile index c3d7303b9ac8..56065acbd816 100644 --- a/arch/arm/mach-tegra/Makefile +++ b/arch/arm/mach-tegra/Makefile | |||
@@ -26,13 +26,6 @@ obj-$(CONFIG_USB_SUPPORT) += usb_phy.o | |||
26 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += board-dt-tegra20.o | 26 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += board-dt-tegra20.o |
27 | obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += board-dt-tegra30.o | 27 | obj-$(CONFIG_ARCH_TEGRA_3x_SOC) += board-dt-tegra30.o |
28 | 28 | ||
29 | obj-$(CONFIG_MACH_HARMONY) += board-harmony.o | 29 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += board-harmony-pcie.o |
30 | obj-$(CONFIG_MACH_HARMONY) += board-harmony-pinmux.o | ||
31 | obj-$(CONFIG_MACH_HARMONY) += board-harmony-pcie.o | ||
32 | obj-$(CONFIG_MACH_HARMONY) += board-harmony-power.o | ||
33 | 30 | ||
34 | obj-$(CONFIG_MACH_PAZ00) += board-paz00.o | 31 | obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += board-paz00.o |
35 | obj-$(CONFIG_MACH_PAZ00) += board-paz00-pinmux.o | ||
36 | |||
37 | obj-$(CONFIG_MACH_TRIMSLICE) += board-trimslice.o | ||
38 | obj-$(CONFIG_MACH_TRIMSLICE) += board-trimslice-pinmux.o | ||
diff --git a/arch/arm/mach-tegra/board-dt-tegra20.c b/arch/arm/mach-tegra/board-dt-tegra20.c index c0999633a9ab..37007d60bc37 100644 --- a/arch/arm/mach-tegra/board-dt-tegra20.c +++ b/arch/arm/mach-tegra/board-dt-tegra20.c | |||
@@ -42,7 +42,6 @@ | |||
42 | #include <mach/irqs.h> | 42 | #include <mach/irqs.h> |
43 | 43 | ||
44 | #include "board.h" | 44 | #include "board.h" |
45 | #include "board-harmony.h" | ||
46 | #include "clock.h" | 45 | #include "clock.h" |
47 | #include "devices.h" | 46 | #include "devices.h" |
48 | 47 | ||
@@ -95,54 +94,40 @@ static void __init tegra_dt_init(void) | |||
95 | tegra20_auxdata_lookup, NULL); | 94 | tegra20_auxdata_lookup, NULL); |
96 | } | 95 | } |
97 | 96 | ||
98 | #ifdef CONFIG_MACH_TRIMSLICE | ||
99 | static void __init trimslice_init(void) | 97 | static void __init trimslice_init(void) |
100 | { | 98 | { |
99 | #ifdef CONFIG_TEGRA_PCI | ||
101 | int ret; | 100 | int ret; |
102 | 101 | ||
103 | ret = tegra_pcie_init(true, true); | 102 | ret = tegra_pcie_init(true, true); |
104 | if (ret) | 103 | if (ret) |
105 | pr_err("tegra_pci_init() failed: %d\n", ret); | 104 | pr_err("tegra_pci_init() failed: %d\n", ret); |
106 | } | ||
107 | #endif | 105 | #endif |
106 | } | ||
108 | 107 | ||
109 | #ifdef CONFIG_MACH_HARMONY | ||
110 | static void __init harmony_init(void) | 108 | static void __init harmony_init(void) |
111 | { | 109 | { |
110 | #ifdef CONFIG_TEGRA_PCI | ||
112 | int ret; | 111 | int ret; |
113 | 112 | ||
114 | ret = harmony_regulator_init(); | ||
115 | if (ret) { | ||
116 | pr_err("harmony_regulator_init() failed: %d\n", ret); | ||
117 | return; | ||
118 | } | ||
119 | |||
120 | ret = harmony_pcie_init(); | 113 | ret = harmony_pcie_init(); |
121 | if (ret) | 114 | if (ret) |
122 | pr_err("harmony_pcie_init() failed: %d\n", ret); | 115 | pr_err("harmony_pcie_init() failed: %d\n", ret); |
123 | } | ||
124 | #endif | 116 | #endif |
117 | } | ||
125 | 118 | ||
126 | #ifdef CONFIG_MACH_PAZ00 | ||
127 | static void __init paz00_init(void) | 119 | static void __init paz00_init(void) |
128 | { | 120 | { |
129 | tegra_paz00_wifikill_init(); | 121 | tegra_paz00_wifikill_init(); |
130 | } | 122 | } |
131 | #endif | ||
132 | 123 | ||
133 | static struct { | 124 | static struct { |
134 | char *machine; | 125 | char *machine; |
135 | void (*init)(void); | 126 | void (*init)(void); |
136 | } board_init_funcs[] = { | 127 | } board_init_funcs[] = { |
137 | #ifdef CONFIG_MACH_TRIMSLICE | ||
138 | { "compulab,trimslice", trimslice_init }, | 128 | { "compulab,trimslice", trimslice_init }, |
139 | #endif | ||
140 | #ifdef CONFIG_MACH_HARMONY | ||
141 | { "nvidia,harmony", harmony_init }, | 129 | { "nvidia,harmony", harmony_init }, |
142 | #endif | ||
143 | #ifdef CONFIG_MACH_PAZ00 | ||
144 | { "compal,paz00", paz00_init }, | 130 | { "compal,paz00", paz00_init }, |
145 | #endif | ||
146 | }; | 131 | }; |
147 | 132 | ||
148 | static void __init tegra_dt_init_late(void) | 133 | static void __init tegra_dt_init_late(void) |
diff --git a/arch/arm/mach-tegra/board-harmony-pcie.c b/arch/arm/mach-tegra/board-harmony-pcie.c index e8c3fda9bec2..3cdc1bb8254c 100644 --- a/arch/arm/mach-tegra/board-harmony-pcie.c +++ b/arch/arm/mach-tegra/board-harmony-pcie.c | |||
@@ -18,35 +18,57 @@ | |||
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/gpio.h> | 19 | #include <linux/gpio.h> |
20 | #include <linux/err.h> | 20 | #include <linux/err.h> |
21 | #include <linux/of_gpio.h> | ||
21 | #include <linux/regulator/consumer.h> | 22 | #include <linux/regulator/consumer.h> |
22 | 23 | ||
23 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
24 | 25 | ||
25 | #include "board.h" | 26 | #include "board.h" |
26 | #include "board-harmony.h" | ||
27 | 27 | ||
28 | #ifdef CONFIG_TEGRA_PCI | 28 | #ifdef CONFIG_TEGRA_PCI |
29 | 29 | ||
30 | int __init harmony_pcie_init(void) | 30 | int __init harmony_pcie_init(void) |
31 | { | 31 | { |
32 | struct device_node *np; | ||
33 | int en_vdd_1v05; | ||
32 | struct regulator *regulator = NULL; | 34 | struct regulator *regulator = NULL; |
33 | int err; | 35 | int err; |
34 | 36 | ||
35 | err = gpio_request(TEGRA_GPIO_EN_VDD_1V05_GPIO, "EN_VDD_1V05"); | 37 | np = of_find_node_by_path("/regulators/regulator@3"); |
36 | if (err) | 38 | if (!np) { |
39 | pr_err("%s: of_find_node_by_path failed\n", __func__); | ||
40 | return -ENODEV; | ||
41 | } | ||
42 | |||
43 | en_vdd_1v05 = of_get_named_gpio(np, "gpio", 0); | ||
44 | if (en_vdd_1v05 < 0) { | ||
45 | pr_err("%s: of_get_named_gpio failed: %d\n", __func__, | ||
46 | en_vdd_1v05); | ||
47 | return en_vdd_1v05; | ||
48 | } | ||
49 | |||
50 | err = gpio_request(en_vdd_1v05, "EN_VDD_1V05"); | ||
51 | if (err) { | ||
52 | pr_err("%s: gpio_request failed: %d\n", __func__, err); | ||
37 | return err; | 53 | return err; |
54 | } | ||
38 | 55 | ||
39 | gpio_direction_output(TEGRA_GPIO_EN_VDD_1V05_GPIO, 1); | 56 | gpio_direction_output(en_vdd_1v05, 1); |
40 | 57 | ||
41 | regulator = regulator_get(NULL, "pex_clk"); | 58 | regulator = regulator_get(NULL, "vdd_ldo0,vddio_pex_clk"); |
42 | if (IS_ERR_OR_NULL(regulator)) | 59 | if (IS_ERR_OR_NULL(regulator)) { |
60 | pr_err("%s: regulator_get failed: %d\n", __func__, | ||
61 | (int)PTR_ERR(regulator)); | ||
43 | goto err_reg; | 62 | goto err_reg; |
63 | } | ||
44 | 64 | ||
45 | regulator_enable(regulator); | 65 | regulator_enable(regulator); |
46 | 66 | ||
47 | err = tegra_pcie_init(true, true); | 67 | err = tegra_pcie_init(true, true); |
48 | if (err) | 68 | if (err) { |
69 | pr_err("%s: tegra_pcie_init failed: %d\n", __func__, err); | ||
49 | goto err_pcie; | 70 | goto err_pcie; |
71 | } | ||
50 | 72 | ||
51 | return 0; | 73 | return 0; |
52 | 74 | ||
@@ -54,20 +76,9 @@ err_pcie: | |||
54 | regulator_disable(regulator); | 76 | regulator_disable(regulator); |
55 | regulator_put(regulator); | 77 | regulator_put(regulator); |
56 | err_reg: | 78 | err_reg: |
57 | gpio_free(TEGRA_GPIO_EN_VDD_1V05_GPIO); | 79 | gpio_free(en_vdd_1v05); |
58 | 80 | ||
59 | return err; | 81 | return err; |
60 | } | 82 | } |
61 | 83 | ||
62 | static int __init harmony_pcie_initcall(void) | ||
63 | { | ||
64 | if (!machine_is_harmony()) | ||
65 | return 0; | ||
66 | |||
67 | return harmony_pcie_init(); | ||
68 | } | ||
69 | |||
70 | /* PCI should be initialized after I2C, mfd and regulators */ | ||
71 | subsys_initcall_sync(harmony_pcie_initcall); | ||
72 | |||
73 | #endif | 84 | #endif |
diff --git a/arch/arm/mach-tegra/board-harmony-pinmux.c b/arch/arm/mach-tegra/board-harmony-pinmux.c deleted file mode 100644 index 83d420fbc58c..000000000000 --- a/arch/arm/mach-tegra/board-harmony-pinmux.c +++ /dev/null | |||
@@ -1,156 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/board-harmony-pinmux.c | ||
3 | * | ||
4 | * Copyright (C) 2010 Google, Inc. | ||
5 | * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. | ||
6 | * | ||
7 | * This software is licensed under the terms of the GNU General Public | ||
8 | * License version 2, as published by the Free Software Foundation, and | ||
9 | * may be copied, distributed, and modified under those terms. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #include <linux/kernel.h> | ||
19 | |||
20 | #include "board-harmony.h" | ||
21 | #include "board-pinmux.h" | ||
22 | |||
23 | static struct pinctrl_map harmony_map[] = { | ||
24 | TEGRA_MAP_MUXCONF("ata", "ide", none, driven), | ||
25 | TEGRA_MAP_MUXCONF("atb", "sdio4", none, driven), | ||
26 | TEGRA_MAP_MUXCONF("atc", "nand", none, driven), | ||
27 | TEGRA_MAP_MUXCONF("atd", "gmi", none, driven), | ||
28 | TEGRA_MAP_MUXCONF("ate", "gmi", none, driven), | ||
29 | TEGRA_MAP_MUXCONF("cdev1", "plla_out", none, driven), | ||
30 | TEGRA_MAP_MUXCONF("cdev2", "pllp_out4", down, tristate), | ||
31 | TEGRA_MAP_MUXCONF("crtp", "crt", none, tristate), | ||
32 | TEGRA_MAP_MUXCONF("csus", "vi_sensor_clk", down, tristate), | ||
33 | TEGRA_MAP_MUXCONF("dap1", "dap1", none, driven), | ||
34 | TEGRA_MAP_MUXCONF("dap2", "dap2", none, tristate), | ||
35 | TEGRA_MAP_MUXCONF("dap3", "dap3", none, tristate), | ||
36 | TEGRA_MAP_MUXCONF("dap4", "dap4", none, tristate), | ||
37 | TEGRA_MAP_MUXCONF("ddc", "i2c2", up, driven), | ||
38 | TEGRA_MAP_MUXCONF("dta", "sdio2", up, driven), | ||
39 | TEGRA_MAP_MUXCONF("dtb", "rsvd1", none, driven), | ||
40 | TEGRA_MAP_MUXCONF("dtc", "rsvd1", none, tristate), | ||
41 | TEGRA_MAP_MUXCONF("dtd", "sdio2", up, driven), | ||
42 | TEGRA_MAP_MUXCONF("dte", "rsvd1", none, tristate), | ||
43 | TEGRA_MAP_MUXCONF("dtf", "i2c3", none, tristate), | ||
44 | TEGRA_MAP_MUXCONF("gma", "sdio4", none, driven), | ||
45 | TEGRA_MAP_MUXCONF("gmb", "gmi", none, driven), | ||
46 | TEGRA_MAP_MUXCONF("gmc", "uartd", none, driven), | ||
47 | TEGRA_MAP_MUXCONF("gmd", "gmi", none, driven), | ||
48 | TEGRA_MAP_MUXCONF("gme", "sdio4", none, driven), | ||
49 | TEGRA_MAP_MUXCONF("gpu", "gmi", none, tristate), | ||
50 | TEGRA_MAP_MUXCONF("gpu7", "rtck", none, driven), | ||
51 | TEGRA_MAP_MUXCONF("gpv", "pcie", none, driven), | ||
52 | TEGRA_MAP_MUXCONF("hdint", "hdmi", na, tristate), | ||
53 | TEGRA_MAP_MUXCONF("i2cp", "i2cp", none, driven), | ||
54 | TEGRA_MAP_MUXCONF("irrx", "uarta", up, tristate), | ||
55 | TEGRA_MAP_MUXCONF("irtx", "uarta", up, tristate), | ||
56 | TEGRA_MAP_MUXCONF("kbca", "kbc", up, driven), | ||
57 | TEGRA_MAP_MUXCONF("kbcb", "kbc", up, driven), | ||
58 | TEGRA_MAP_MUXCONF("kbcc", "kbc", up, driven), | ||
59 | TEGRA_MAP_MUXCONF("kbcd", "kbc", up, driven), | ||
60 | TEGRA_MAP_MUXCONF("kbce", "kbc", up, driven), | ||
61 | TEGRA_MAP_MUXCONF("kbcf", "kbc", up, driven), | ||
62 | TEGRA_MAP_MUXCONF("lcsn", "displaya", na, tristate), | ||
63 | TEGRA_MAP_MUXCONF("ld0", "displaya", na, driven), | ||
64 | TEGRA_MAP_MUXCONF("ld1", "displaya", na, driven), | ||
65 | TEGRA_MAP_MUXCONF("ld10", "displaya", na, driven), | ||
66 | TEGRA_MAP_MUXCONF("ld11", "displaya", na, driven), | ||
67 | TEGRA_MAP_MUXCONF("ld12", "displaya", na, driven), | ||
68 | TEGRA_MAP_MUXCONF("ld13", "displaya", na, driven), | ||
69 | TEGRA_MAP_MUXCONF("ld14", "displaya", na, driven), | ||
70 | TEGRA_MAP_MUXCONF("ld15", "displaya", na, driven), | ||
71 | TEGRA_MAP_MUXCONF("ld16", "displaya", na, driven), | ||
72 | TEGRA_MAP_MUXCONF("ld17", "displaya", na, driven), | ||
73 | TEGRA_MAP_MUXCONF("ld2", "displaya", na, driven), | ||
74 | TEGRA_MAP_MUXCONF("ld3", "displaya", na, driven), | ||
75 | TEGRA_MAP_MUXCONF("ld4", "displaya", na, driven), | ||
76 | TEGRA_MAP_MUXCONF("ld5", "displaya", na, driven), | ||
77 | TEGRA_MAP_MUXCONF("ld6", "displaya", na, driven), | ||
78 | TEGRA_MAP_MUXCONF("ld7", "displaya", na, driven), | ||
79 | TEGRA_MAP_MUXCONF("ld8", "displaya", na, driven), | ||
80 | TEGRA_MAP_MUXCONF("ld9", "displaya", na, driven), | ||
81 | TEGRA_MAP_MUXCONF("ldc", "displaya", na, tristate), | ||
82 | TEGRA_MAP_MUXCONF("ldi", "displaya", na, driven), | ||
83 | TEGRA_MAP_MUXCONF("lhp0", "displaya", na, driven), | ||
84 | TEGRA_MAP_MUXCONF("lhp1", "displaya", na, driven), | ||
85 | TEGRA_MAP_MUXCONF("lhp2", "displaya", na, driven), | ||
86 | TEGRA_MAP_MUXCONF("lhs", "displaya", na, driven), | ||
87 | TEGRA_MAP_MUXCONF("lm0", "displaya", na, driven), | ||
88 | TEGRA_MAP_MUXCONF("lm1", "displaya", na, tristate), | ||
89 | TEGRA_MAP_MUXCONF("lpp", "displaya", na, driven), | ||
90 | TEGRA_MAP_MUXCONF("lpw0", "displaya", na, driven), | ||
91 | TEGRA_MAP_MUXCONF("lpw1", "displaya", na, tristate), | ||
92 | TEGRA_MAP_MUXCONF("lpw2", "displaya", na, driven), | ||
93 | TEGRA_MAP_MUXCONF("lsc0", "displaya", na, driven), | ||
94 | TEGRA_MAP_MUXCONF("lsc1", "displaya", na, tristate), | ||
95 | TEGRA_MAP_MUXCONF("lsck", "displaya", na, tristate), | ||
96 | TEGRA_MAP_MUXCONF("lsda", "displaya", na, tristate), | ||
97 | TEGRA_MAP_MUXCONF("lsdi", "displaya", na, tristate), | ||
98 | TEGRA_MAP_MUXCONF("lspi", "displaya", na, driven), | ||
99 | TEGRA_MAP_MUXCONF("lvp0", "displaya", na, tristate), | ||
100 | TEGRA_MAP_MUXCONF("lvp1", "displaya", na, driven), | ||
101 | TEGRA_MAP_MUXCONF("lvs", "displaya", na, driven), | ||
102 | TEGRA_MAP_MUXCONF("owc", "rsvd2", na, tristate), | ||
103 | TEGRA_MAP_MUXCONF("pmc", "pwr_on", na, driven), | ||
104 | TEGRA_MAP_MUXCONF("pta", "hdmi", none, driven), | ||
105 | TEGRA_MAP_MUXCONF("rm", "i2c1", none, driven), | ||
106 | TEGRA_MAP_MUXCONF("sdb", "pwm", na, tristate), | ||
107 | TEGRA_MAP_MUXCONF("sdc", "pwm", up, driven), | ||
108 | TEGRA_MAP_MUXCONF("sdd", "pwm", up, tristate), | ||
109 | TEGRA_MAP_MUXCONF("sdio1", "sdio1", none, tristate), | ||
110 | TEGRA_MAP_MUXCONF("slxa", "pcie", none, driven), | ||
111 | TEGRA_MAP_MUXCONF("slxc", "spdif", none, tristate), | ||
112 | TEGRA_MAP_MUXCONF("slxd", "spdif", none, tristate), | ||
113 | TEGRA_MAP_MUXCONF("slxk", "pcie", none, driven), | ||
114 | TEGRA_MAP_MUXCONF("spdi", "rsvd2", none, tristate), | ||
115 | TEGRA_MAP_MUXCONF("spdo", "rsvd2", none, tristate), | ||
116 | TEGRA_MAP_MUXCONF("spia", "gmi", none, driven), | ||
117 | TEGRA_MAP_MUXCONF("spib", "gmi", none, driven), | ||
118 | TEGRA_MAP_MUXCONF("spic", "gmi", up, tristate), | ||
119 | TEGRA_MAP_MUXCONF("spid", "spi1", down, tristate), | ||
120 | TEGRA_MAP_MUXCONF("spie", "spi1", up, tristate), | ||
121 | TEGRA_MAP_MUXCONF("spif", "spi1", down, tristate), | ||
122 | TEGRA_MAP_MUXCONF("spig", "spi2_alt", none, tristate), | ||
123 | TEGRA_MAP_MUXCONF("spih", "spi2_alt", up, tristate), | ||
124 | TEGRA_MAP_MUXCONF("uaa", "ulpi", up, tristate), | ||
125 | TEGRA_MAP_MUXCONF("uab", "ulpi", up, tristate), | ||
126 | TEGRA_MAP_MUXCONF("uac", "rsvd2", none, tristate), | ||
127 | TEGRA_MAP_MUXCONF("uad", "irda", up, tristate), | ||
128 | TEGRA_MAP_MUXCONF("uca", "uartc", up, tristate), | ||
129 | TEGRA_MAP_MUXCONF("ucb", "uartc", up, tristate), | ||
130 | TEGRA_MAP_MUXCONF("uda", "ulpi", none, tristate), | ||
131 | TEGRA_MAP_CONF("ck32", none, na), | ||
132 | TEGRA_MAP_CONF("ddrc", none, na), | ||
133 | TEGRA_MAP_CONF("pmca", none, na), | ||
134 | TEGRA_MAP_CONF("pmcb", none, na), | ||
135 | TEGRA_MAP_CONF("pmcc", none, na), | ||
136 | TEGRA_MAP_CONF("pmcd", none, na), | ||
137 | TEGRA_MAP_CONF("pmce", none, na), | ||
138 | TEGRA_MAP_CONF("xm2c", none, na), | ||
139 | TEGRA_MAP_CONF("xm2d", none, na), | ||
140 | TEGRA_MAP_CONF("ls", up, na), | ||
141 | TEGRA_MAP_CONF("lc", up, na), | ||
142 | TEGRA_MAP_CONF("ld17_0", down, na), | ||
143 | TEGRA_MAP_CONF("ld19_18", down, na), | ||
144 | TEGRA_MAP_CONF("ld21_20", down, na), | ||
145 | TEGRA_MAP_CONF("ld23_22", down, na), | ||
146 | }; | ||
147 | |||
148 | static struct tegra_board_pinmux_conf conf = { | ||
149 | .maps = harmony_map, | ||
150 | .map_count = ARRAY_SIZE(harmony_map), | ||
151 | }; | ||
152 | |||
153 | void harmony_pinmux_init(void) | ||
154 | { | ||
155 | tegra_board_pinmux_init(&conf, NULL); | ||
156 | } | ||
diff --git a/arch/arm/mach-tegra/board-harmony-power.c b/arch/arm/mach-tegra/board-harmony-power.c deleted file mode 100644 index 94486e7e9dfd..000000000000 --- a/arch/arm/mach-tegra/board-harmony-power.c +++ /dev/null | |||
@@ -1,156 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2010 NVIDIA, Inc. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program; if not, write to the Free Software | ||
15 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||
16 | * 02111-1307, USA | ||
17 | */ | ||
18 | #include <linux/i2c.h> | ||
19 | #include <linux/platform_device.h> | ||
20 | #include <linux/gpio.h> | ||
21 | #include <linux/regulator/machine.h> | ||
22 | #include <linux/regulator/fixed.h> | ||
23 | #include <linux/mfd/tps6586x.h> | ||
24 | #include <linux/of.h> | ||
25 | #include <linux/of_i2c.h> | ||
26 | |||
27 | #include <asm/mach-types.h> | ||
28 | |||
29 | #include <mach/irqs.h> | ||
30 | |||
31 | #include "board-harmony.h" | ||
32 | |||
33 | static struct regulator_consumer_supply tps658621_ldo0_supply[] = { | ||
34 | REGULATOR_SUPPLY("pex_clk", NULL), | ||
35 | }; | ||
36 | |||
37 | static struct regulator_init_data ldo0_data = { | ||
38 | .supply_regulator = "vdd_sm2", | ||
39 | .constraints = { | ||
40 | .name = "vdd_ldo0", | ||
41 | .min_uV = 3300 * 1000, | ||
42 | .max_uV = 3300 * 1000, | ||
43 | .valid_modes_mask = (REGULATOR_MODE_NORMAL | | ||
44 | REGULATOR_MODE_STANDBY), | ||
45 | .valid_ops_mask = (REGULATOR_CHANGE_MODE | | ||
46 | REGULATOR_CHANGE_STATUS | | ||
47 | REGULATOR_CHANGE_VOLTAGE), | ||
48 | .apply_uV = 1, | ||
49 | }, | ||
50 | .num_consumer_supplies = ARRAY_SIZE(tps658621_ldo0_supply), | ||
51 | .consumer_supplies = tps658621_ldo0_supply, | ||
52 | }; | ||
53 | |||
54 | #define HARMONY_REGULATOR_INIT(_id, _name, _supply, _minmv, _maxmv, _on)\ | ||
55 | static struct regulator_init_data _id##_data = { \ | ||
56 | .supply_regulator = _supply, \ | ||
57 | .constraints = { \ | ||
58 | .name = _name, \ | ||
59 | .min_uV = (_minmv)*1000, \ | ||
60 | .max_uV = (_maxmv)*1000, \ | ||
61 | .valid_modes_mask = (REGULATOR_MODE_NORMAL | \ | ||
62 | REGULATOR_MODE_STANDBY), \ | ||
63 | .valid_ops_mask = (REGULATOR_CHANGE_MODE | \ | ||
64 | REGULATOR_CHANGE_STATUS | \ | ||
65 | REGULATOR_CHANGE_VOLTAGE), \ | ||
66 | .always_on = _on, \ | ||
67 | }, \ | ||
68 | } | ||
69 | |||
70 | static struct regulator_init_data sys_data = { | ||
71 | .supply_regulator = "vdd_5v0", | ||
72 | .constraints = { | ||
73 | .name = "vdd_sys", | ||
74 | }, | ||
75 | }; | ||
76 | |||
77 | HARMONY_REGULATOR_INIT(sm0, "vdd_sm0", "vdd_sys", 725, 1500, 1); | ||
78 | HARMONY_REGULATOR_INIT(sm1, "vdd_sm1", "vdd_sys", 725, 1500, 1); | ||
79 | HARMONY_REGULATOR_INIT(sm2, "vdd_sm2", "vdd_sys", 3000, 4550, 1); | ||
80 | HARMONY_REGULATOR_INIT(ldo1, "vdd_ldo1", "vdd_sm2", 725, 1500, 1); | ||
81 | HARMONY_REGULATOR_INIT(ldo2, "vdd_ldo2", "vdd_sm2", 725, 1500, 0); | ||
82 | HARMONY_REGULATOR_INIT(ldo3, "vdd_ldo3", "vdd_sm2", 1250, 3300, 1); | ||
83 | HARMONY_REGULATOR_INIT(ldo4, "vdd_ldo4", "vdd_sm2", 1700, 2475, 1); | ||
84 | HARMONY_REGULATOR_INIT(ldo5, "vdd_ldo5", "vdd_sys", 1250, 3300, 1); | ||
85 | HARMONY_REGULATOR_INIT(ldo6, "vdd_ldo6", "vdd_sm2", 1250, 3300, 0); | ||
86 | HARMONY_REGULATOR_INIT(ldo7, "vdd_ldo7", "vdd_sm2", 1250, 3300, 0); | ||
87 | HARMONY_REGULATOR_INIT(ldo8, "vdd_ldo8", "vdd_sm2", 1250, 3300, 0); | ||
88 | HARMONY_REGULATOR_INIT(ldo9, "vdd_ldo9", "vdd_sm2", 1250, 3300, 1); | ||
89 | |||
90 | #define TPS_REG(_id, _data) \ | ||
91 | { \ | ||
92 | .id = TPS6586X_ID_##_id, \ | ||
93 | .name = "tps6586x-regulator", \ | ||
94 | .platform_data = _data, \ | ||
95 | } | ||
96 | |||
97 | static struct tps6586x_subdev_info tps_devs[] = { | ||
98 | TPS_REG(SYS, &sys_data), | ||
99 | TPS_REG(SM_0, &sm0_data), | ||
100 | TPS_REG(SM_1, &sm1_data), | ||
101 | TPS_REG(SM_2, &sm2_data), | ||
102 | TPS_REG(LDO_0, &ldo0_data), | ||
103 | TPS_REG(LDO_1, &ldo1_data), | ||
104 | TPS_REG(LDO_2, &ldo2_data), | ||
105 | TPS_REG(LDO_3, &ldo3_data), | ||
106 | TPS_REG(LDO_4, &ldo4_data), | ||
107 | TPS_REG(LDO_5, &ldo5_data), | ||
108 | TPS_REG(LDO_6, &ldo6_data), | ||
109 | TPS_REG(LDO_7, &ldo7_data), | ||
110 | TPS_REG(LDO_8, &ldo8_data), | ||
111 | TPS_REG(LDO_9, &ldo9_data), | ||
112 | }; | ||
113 | |||
114 | static struct tps6586x_platform_data tps_platform = { | ||
115 | .irq_base = TEGRA_NR_IRQS, | ||
116 | .num_subdevs = ARRAY_SIZE(tps_devs), | ||
117 | .subdevs = tps_devs, | ||
118 | .gpio_base = HARMONY_GPIO_TPS6586X(0), | ||
119 | }; | ||
120 | |||
121 | static struct i2c_board_info __initdata harmony_regulators[] = { | ||
122 | { | ||
123 | I2C_BOARD_INFO("tps6586x", 0x34), | ||
124 | .irq = INT_EXTERNAL_PMU, | ||
125 | .platform_data = &tps_platform, | ||
126 | }, | ||
127 | }; | ||
128 | |||
129 | int __init harmony_regulator_init(void) | ||
130 | { | ||
131 | regulator_register_always_on(0, "vdd_5v0", | ||
132 | NULL, 0, 5000000); | ||
133 | |||
134 | if (machine_is_harmony()) { | ||
135 | i2c_register_board_info(3, harmony_regulators, 1); | ||
136 | } else { /* Harmony, booted using device tree */ | ||
137 | struct device_node *np; | ||
138 | struct i2c_adapter *adapter; | ||
139 | |||
140 | np = of_find_node_by_path("/i2c@7000d000"); | ||
141 | if (np == NULL) { | ||
142 | pr_err("Could not find device_node for DVC I2C\n"); | ||
143 | return -ENODEV; | ||
144 | } | ||
145 | |||
146 | adapter = of_find_i2c_adapter_by_node(np); | ||
147 | if (!adapter) { | ||
148 | pr_err("Could not find i2c_adapter for DVC I2C\n"); | ||
149 | return -ENODEV; | ||
150 | } | ||
151 | |||
152 | i2c_new_device(adapter, harmony_regulators); | ||
153 | } | ||
154 | |||
155 | return 0; | ||
156 | } | ||
diff --git a/arch/arm/mach-tegra/board-harmony.c b/arch/arm/mach-tegra/board-harmony.c deleted file mode 100644 index e65e837f4013..000000000000 --- a/arch/arm/mach-tegra/board-harmony.c +++ /dev/null | |||
@@ -1,197 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/board-harmony.c | ||
3 | * | ||
4 | * Copyright (C) 2010 Google, Inc. | ||
5 | * Copyright (C) 2011 NVIDIA, Inc. | ||
6 | * | ||
7 | * This software is licensed under the terms of the GNU General Public | ||
8 | * License version 2, as published by the Free Software Foundation, and | ||
9 | * may be copied, distributed, and modified under those terms. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #include <linux/kernel.h> | ||
19 | #include <linux/init.h> | ||
20 | #include <linux/platform_device.h> | ||
21 | #include <linux/serial_8250.h> | ||
22 | #include <linux/of_serial.h> | ||
23 | #include <linux/clk.h> | ||
24 | #include <linux/dma-mapping.h> | ||
25 | #include <linux/pda_power.h> | ||
26 | #include <linux/io.h> | ||
27 | #include <linux/gpio.h> | ||
28 | #include <linux/i2c.h> | ||
29 | |||
30 | #include <sound/wm8903.h> | ||
31 | |||
32 | #include <asm/mach-types.h> | ||
33 | #include <asm/mach/arch.h> | ||
34 | #include <asm/mach/time.h> | ||
35 | #include <asm/hardware/gic.h> | ||
36 | #include <asm/setup.h> | ||
37 | |||
38 | #include <mach/tegra_wm8903_pdata.h> | ||
39 | #include <mach/iomap.h> | ||
40 | #include <mach/irqs.h> | ||
41 | #include <mach/sdhci.h> | ||
42 | |||
43 | #include "board.h" | ||
44 | #include "board-harmony.h" | ||
45 | #include "clock.h" | ||
46 | #include "devices.h" | ||
47 | #include "gpio-names.h" | ||
48 | |||
49 | static struct plat_serial8250_port debug_uart_platform_data[] = { | ||
50 | { | ||
51 | .membase = IO_ADDRESS(TEGRA_UARTD_BASE), | ||
52 | .mapbase = TEGRA_UARTD_BASE, | ||
53 | .irq = INT_UARTD, | ||
54 | .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE, | ||
55 | .type = PORT_TEGRA, | ||
56 | .handle_break = tegra_serial_handle_break, | ||
57 | .iotype = UPIO_MEM, | ||
58 | .regshift = 2, | ||
59 | .uartclk = 216000000, | ||
60 | }, { | ||
61 | .flags = 0 | ||
62 | } | ||
63 | }; | ||
64 | |||
65 | static struct platform_device debug_uart = { | ||
66 | .name = "serial8250", | ||
67 | .id = PLAT8250_DEV_PLATFORM, | ||
68 | .dev = { | ||
69 | .platform_data = debug_uart_platform_data, | ||
70 | }, | ||
71 | }; | ||
72 | |||
73 | static struct tegra_wm8903_platform_data harmony_audio_pdata = { | ||
74 | .gpio_spkr_en = TEGRA_GPIO_SPKR_EN, | ||
75 | .gpio_hp_det = TEGRA_GPIO_HP_DET, | ||
76 | .gpio_hp_mute = -1, | ||
77 | .gpio_int_mic_en = TEGRA_GPIO_INT_MIC_EN, | ||
78 | .gpio_ext_mic_en = TEGRA_GPIO_EXT_MIC_EN, | ||
79 | }; | ||
80 | |||
81 | static struct platform_device harmony_audio_device = { | ||
82 | .name = "tegra-snd-wm8903", | ||
83 | .id = 0, | ||
84 | .dev = { | ||
85 | .platform_data = &harmony_audio_pdata, | ||
86 | }, | ||
87 | }; | ||
88 | |||
89 | static struct wm8903_platform_data harmony_wm8903_pdata = { | ||
90 | .irq_active_low = 0, | ||
91 | .micdet_cfg = 0, | ||
92 | .micdet_delay = 100, | ||
93 | .gpio_base = HARMONY_GPIO_WM8903(0), | ||
94 | .gpio_cfg = { | ||
95 | 0, | ||
96 | 0, | ||
97 | WM8903_GPIO_CONFIG_ZERO, | ||
98 | 0, | ||
99 | 0, | ||
100 | }, | ||
101 | }; | ||
102 | |||
103 | static struct i2c_board_info __initdata wm8903_board_info = { | ||
104 | I2C_BOARD_INFO("wm8903", 0x1a), | ||
105 | .platform_data = &harmony_wm8903_pdata, | ||
106 | }; | ||
107 | |||
108 | static void __init harmony_i2c_init(void) | ||
109 | { | ||
110 | platform_device_register(&tegra_i2c_device1); | ||
111 | platform_device_register(&tegra_i2c_device2); | ||
112 | platform_device_register(&tegra_i2c_device3); | ||
113 | platform_device_register(&tegra_i2c_device4); | ||
114 | |||
115 | wm8903_board_info.irq = gpio_to_irq(TEGRA_GPIO_CDC_IRQ); | ||
116 | i2c_register_board_info(0, &wm8903_board_info, 1); | ||
117 | } | ||
118 | |||
119 | static struct platform_device *harmony_devices[] __initdata = { | ||
120 | &debug_uart, | ||
121 | &tegra_sdhci_device1, | ||
122 | &tegra_sdhci_device2, | ||
123 | &tegra_sdhci_device4, | ||
124 | &tegra_ehci3_device, | ||
125 | &tegra_i2s_device1, | ||
126 | &tegra_das_device, | ||
127 | &harmony_audio_device, | ||
128 | }; | ||
129 | |||
130 | static void __init tegra_harmony_fixup(struct tag *tags, char **cmdline, | ||
131 | struct meminfo *mi) | ||
132 | { | ||
133 | mi->nr_banks = 2; | ||
134 | mi->bank[0].start = PHYS_OFFSET; | ||
135 | mi->bank[0].size = 448 * SZ_1M; | ||
136 | mi->bank[1].start = SZ_512M; | ||
137 | mi->bank[1].size = SZ_512M; | ||
138 | } | ||
139 | |||
140 | static __initdata struct tegra_clk_init_table harmony_clk_init_table[] = { | ||
141 | /* name parent rate enabled */ | ||
142 | { "uartd", "pll_p", 216000000, true }, | ||
143 | { "pll_a", "pll_p_out1", 56448000, true }, | ||
144 | { "pll_a_out0", "pll_a", 11289600, true }, | ||
145 | { "cdev1", NULL, 0, true }, | ||
146 | { "i2s1", "pll_a_out0", 11289600, false}, | ||
147 | { "usb3", "clk_m", 12000000, true }, | ||
148 | { NULL, NULL, 0, 0}, | ||
149 | }; | ||
150 | |||
151 | |||
152 | static struct tegra_sdhci_platform_data sdhci_pdata1 = { | ||
153 | .cd_gpio = -1, | ||
154 | .wp_gpio = -1, | ||
155 | .power_gpio = -1, | ||
156 | }; | ||
157 | |||
158 | static struct tegra_sdhci_platform_data sdhci_pdata2 = { | ||
159 | .cd_gpio = TEGRA_GPIO_SD2_CD, | ||
160 | .wp_gpio = TEGRA_GPIO_SD2_WP, | ||
161 | .power_gpio = TEGRA_GPIO_SD2_POWER, | ||
162 | }; | ||
163 | |||
164 | static struct tegra_sdhci_platform_data sdhci_pdata4 = { | ||
165 | .cd_gpio = TEGRA_GPIO_SD4_CD, | ||
166 | .wp_gpio = TEGRA_GPIO_SD4_WP, | ||
167 | .power_gpio = TEGRA_GPIO_SD4_POWER, | ||
168 | .is_8bit = 1, | ||
169 | }; | ||
170 | |||
171 | static void __init tegra_harmony_init(void) | ||
172 | { | ||
173 | tegra_clk_init_from_table(harmony_clk_init_table); | ||
174 | |||
175 | harmony_pinmux_init(); | ||
176 | |||
177 | tegra_sdhci_device1.dev.platform_data = &sdhci_pdata1; | ||
178 | tegra_sdhci_device2.dev.platform_data = &sdhci_pdata2; | ||
179 | tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4; | ||
180 | |||
181 | platform_add_devices(harmony_devices, ARRAY_SIZE(harmony_devices)); | ||
182 | harmony_i2c_init(); | ||
183 | harmony_regulator_init(); | ||
184 | } | ||
185 | |||
186 | MACHINE_START(HARMONY, "harmony") | ||
187 | .atag_offset = 0x100, | ||
188 | .fixup = tegra_harmony_fixup, | ||
189 | .map_io = tegra_map_common_io, | ||
190 | .init_early = tegra20_init_early, | ||
191 | .init_irq = tegra_init_irq, | ||
192 | .handle_irq = gic_handle_irq, | ||
193 | .timer = &tegra_timer, | ||
194 | .init_machine = tegra_harmony_init, | ||
195 | .init_late = tegra_init_late, | ||
196 | .restart = tegra_assert_system_reset, | ||
197 | MACHINE_END | ||
diff --git a/arch/arm/mach-tegra/board-harmony.h b/arch/arm/mach-tegra/board-harmony.h deleted file mode 100644 index 139d96c93843..000000000000 --- a/arch/arm/mach-tegra/board-harmony.h +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/board-harmony.h | ||
3 | * | ||
4 | * Copyright (C) 2010 Google, Inc. | ||
5 | * | ||
6 | * This software is licensed under the terms of the GNU General Public | ||
7 | * License version 2, as published by the Free Software Foundation, and | ||
8 | * may be copied, distributed, and modified under those terms. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | */ | ||
16 | |||
17 | #ifndef _MACH_TEGRA_BOARD_HARMONY_H | ||
18 | #define _MACH_TEGRA_BOARD_HARMONY_H | ||
19 | |||
20 | #include <mach/gpio-tegra.h> | ||
21 | |||
22 | #define HARMONY_GPIO_TPS6586X(_x_) (TEGRA_NR_GPIOS + (_x_)) | ||
23 | #define HARMONY_GPIO_WM8903(_x_) (HARMONY_GPIO_TPS6586X(4) + (_x_)) | ||
24 | |||
25 | #define TEGRA_GPIO_SD2_CD TEGRA_GPIO_PI5 | ||
26 | #define TEGRA_GPIO_SD2_WP TEGRA_GPIO_PH1 | ||
27 | #define TEGRA_GPIO_SD2_POWER TEGRA_GPIO_PT3 | ||
28 | #define TEGRA_GPIO_SD4_CD TEGRA_GPIO_PH2 | ||
29 | #define TEGRA_GPIO_SD4_WP TEGRA_GPIO_PH3 | ||
30 | #define TEGRA_GPIO_SD4_POWER TEGRA_GPIO_PI6 | ||
31 | #define TEGRA_GPIO_CDC_IRQ TEGRA_GPIO_PX3 | ||
32 | #define TEGRA_GPIO_SPKR_EN HARMONY_GPIO_WM8903(2) | ||
33 | #define TEGRA_GPIO_HP_DET TEGRA_GPIO_PW2 | ||
34 | #define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PX0 | ||
35 | #define TEGRA_GPIO_EXT_MIC_EN TEGRA_GPIO_PX1 | ||
36 | #define TEGRA_GPIO_EN_VDD_1V05_GPIO HARMONY_GPIO_TPS6586X(2) | ||
37 | |||
38 | void harmony_pinmux_init(void); | ||
39 | int harmony_regulator_init(void); | ||
40 | |||
41 | #endif | ||
diff --git a/arch/arm/mach-tegra/board-paz00-pinmux.c b/arch/arm/mach-tegra/board-paz00-pinmux.c deleted file mode 100644 index 6f1111b48e7c..000000000000 --- a/arch/arm/mach-tegra/board-paz00-pinmux.c +++ /dev/null | |||
@@ -1,156 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/board-paz00-pinmux.c | ||
3 | * | ||
4 | * Copyright (C) 2010 Marc Dietrich <marvin24@gmx.de> | ||
5 | * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. | ||
6 | * | ||
7 | * This software is licensed under the terms of the GNU General Public | ||
8 | * License version 2, as published by the Free Software Foundation, and | ||
9 | * may be copied, distributed, and modified under those terms. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #include <linux/kernel.h> | ||
19 | |||
20 | #include "board-paz00.h" | ||
21 | #include "board-pinmux.h" | ||
22 | |||
23 | static struct pinctrl_map paz00_map[] = { | ||
24 | TEGRA_MAP_MUXCONF("ata", "gmi", none, driven), | ||
25 | TEGRA_MAP_MUXCONF("atb", "sdio4", none, driven), | ||
26 | TEGRA_MAP_MUXCONF("atc", "gmi", none, driven), | ||
27 | TEGRA_MAP_MUXCONF("atd", "gmi", none, driven), | ||
28 | TEGRA_MAP_MUXCONF("ate", "gmi", none, driven), | ||
29 | TEGRA_MAP_MUXCONF("cdev1", "plla_out", none, driven), | ||
30 | TEGRA_MAP_MUXCONF("cdev2", "pllp_out4", down, driven), | ||
31 | TEGRA_MAP_MUXCONF("crtp", "crt", none, tristate), | ||
32 | TEGRA_MAP_MUXCONF("csus", "pllc_out1", down, tristate), | ||
33 | TEGRA_MAP_MUXCONF("dap1", "dap1", none, driven), | ||
34 | TEGRA_MAP_MUXCONF("dap2", "gmi", none, driven), | ||
35 | TEGRA_MAP_MUXCONF("dap3", "dap3", none, tristate), | ||
36 | TEGRA_MAP_MUXCONF("dap4", "dap4", none, tristate), | ||
37 | TEGRA_MAP_MUXCONF("ddc", "i2c2", up, driven), | ||
38 | TEGRA_MAP_MUXCONF("dta", "rsvd1", up, tristate), | ||
39 | TEGRA_MAP_MUXCONF("dtb", "rsvd1", none, tristate), | ||
40 | TEGRA_MAP_MUXCONF("dtc", "rsvd1", none, tristate), | ||
41 | TEGRA_MAP_MUXCONF("dtd", "rsvd1", up, tristate), | ||
42 | TEGRA_MAP_MUXCONF("dte", "rsvd1", none, tristate), | ||
43 | TEGRA_MAP_MUXCONF("dtf", "i2c3", none, driven), | ||
44 | TEGRA_MAP_MUXCONF("gma", "sdio4", none, driven), | ||
45 | TEGRA_MAP_MUXCONF("gmb", "gmi", none, driven), | ||
46 | TEGRA_MAP_MUXCONF("gmc", "gmi", none, driven), | ||
47 | TEGRA_MAP_MUXCONF("gmd", "gmi", none, driven), | ||
48 | TEGRA_MAP_MUXCONF("gme", "sdio4", none, driven), | ||
49 | TEGRA_MAP_MUXCONF("gpu", "pwm", none, driven), | ||
50 | TEGRA_MAP_MUXCONF("gpu7", "rtck", none, driven), | ||
51 | TEGRA_MAP_MUXCONF("gpv", "pcie", none, driven), | ||
52 | TEGRA_MAP_MUXCONF("hdint", "hdmi", na, driven), | ||
53 | TEGRA_MAP_MUXCONF("i2cp", "i2cp", none, driven), | ||
54 | TEGRA_MAP_MUXCONF("irrx", "uarta", up, driven), | ||
55 | TEGRA_MAP_MUXCONF("irtx", "uarta", up, driven), | ||
56 | TEGRA_MAP_MUXCONF("kbca", "kbc", up, driven), | ||
57 | TEGRA_MAP_MUXCONF("kbcb", "sdio2", up, driven), | ||
58 | TEGRA_MAP_MUXCONF("kbcc", "kbc", up, driven), | ||
59 | TEGRA_MAP_MUXCONF("kbcd", "sdio2", up, driven), | ||
60 | TEGRA_MAP_MUXCONF("kbce", "kbc", up, driven), | ||
61 | TEGRA_MAP_MUXCONF("kbcf", "kbc", up, driven), | ||
62 | TEGRA_MAP_MUXCONF("lcsn", "displaya", na, tristate), | ||
63 | TEGRA_MAP_MUXCONF("ld0", "displaya", na, driven), | ||
64 | TEGRA_MAP_MUXCONF("ld1", "displaya", na, driven), | ||
65 | TEGRA_MAP_MUXCONF("ld10", "displaya", na, driven), | ||
66 | TEGRA_MAP_MUXCONF("ld11", "displaya", na, driven), | ||
67 | TEGRA_MAP_MUXCONF("ld12", "displaya", na, driven), | ||
68 | TEGRA_MAP_MUXCONF("ld13", "displaya", na, driven), | ||
69 | TEGRA_MAP_MUXCONF("ld14", "displaya", na, driven), | ||
70 | TEGRA_MAP_MUXCONF("ld15", "displaya", na, driven), | ||
71 | TEGRA_MAP_MUXCONF("ld16", "displaya", na, driven), | ||
72 | TEGRA_MAP_MUXCONF("ld17", "displaya", na, driven), | ||
73 | TEGRA_MAP_MUXCONF("ld2", "displaya", na, driven), | ||
74 | TEGRA_MAP_MUXCONF("ld3", "displaya", na, driven), | ||
75 | TEGRA_MAP_MUXCONF("ld4", "displaya", na, driven), | ||
76 | TEGRA_MAP_MUXCONF("ld5", "displaya", na, driven), | ||
77 | TEGRA_MAP_MUXCONF("ld6", "displaya", na, driven), | ||
78 | TEGRA_MAP_MUXCONF("ld7", "displaya", na, driven), | ||
79 | TEGRA_MAP_MUXCONF("ld8", "displaya", na, driven), | ||
80 | TEGRA_MAP_MUXCONF("ld9", "displaya", na, driven), | ||
81 | TEGRA_MAP_MUXCONF("ldc", "displaya", na, driven), | ||
82 | TEGRA_MAP_MUXCONF("ldi", "displaya", na, driven), | ||
83 | TEGRA_MAP_MUXCONF("lhp0", "displaya", na, tristate), | ||
84 | TEGRA_MAP_MUXCONF("lhp1", "displaya", na, tristate), | ||
85 | TEGRA_MAP_MUXCONF("lhp2", "displaya", na, tristate), | ||
86 | TEGRA_MAP_MUXCONF("lhs", "displaya", na, driven), | ||
87 | TEGRA_MAP_MUXCONF("lm0", "displaya", na, tristate), | ||
88 | TEGRA_MAP_MUXCONF("lm1", "displaya", na, tristate), | ||
89 | TEGRA_MAP_MUXCONF("lpp", "displaya", na, tristate), | ||
90 | TEGRA_MAP_MUXCONF("lpw0", "displaya", na, tristate), | ||
91 | TEGRA_MAP_MUXCONF("lpw1", "displaya", na, tristate), | ||
92 | TEGRA_MAP_MUXCONF("lpw2", "displaya", na, tristate), | ||
93 | TEGRA_MAP_MUXCONF("lsc0", "displaya", na, driven), | ||
94 | TEGRA_MAP_MUXCONF("lsc1", "displaya", na, tristate), | ||
95 | TEGRA_MAP_MUXCONF("lsck", "displaya", na, tristate), | ||
96 | TEGRA_MAP_MUXCONF("lsda", "displaya", na, tristate), | ||
97 | TEGRA_MAP_MUXCONF("lsdi", "displaya", na, tristate), | ||
98 | TEGRA_MAP_MUXCONF("lspi", "displaya", na, driven), | ||
99 | TEGRA_MAP_MUXCONF("lvp0", "displaya", na, tristate), | ||
100 | TEGRA_MAP_MUXCONF("lvp1", "displaya", na, tristate), | ||
101 | TEGRA_MAP_MUXCONF("lvs", "displaya", na, driven), | ||
102 | TEGRA_MAP_MUXCONF("owc", "owr", up, tristate), | ||
103 | TEGRA_MAP_MUXCONF("pmc", "pwr_on", na, driven), | ||
104 | TEGRA_MAP_MUXCONF("pta", "hdmi", none, driven), | ||
105 | TEGRA_MAP_MUXCONF("rm", "i2c1", none, driven), | ||
106 | TEGRA_MAP_MUXCONF("sdb", "pwm", na, tristate), | ||
107 | TEGRA_MAP_MUXCONF("sdc", "twc", up, tristate), | ||
108 | TEGRA_MAP_MUXCONF("sdd", "pwm", up, tristate), | ||
109 | TEGRA_MAP_MUXCONF("sdio1", "sdio1", none, driven), | ||
110 | TEGRA_MAP_MUXCONF("slxa", "pcie", none, tristate), | ||
111 | TEGRA_MAP_MUXCONF("slxc", "spi4", none, tristate), | ||
112 | TEGRA_MAP_MUXCONF("slxd", "spi4", none, tristate), | ||
113 | TEGRA_MAP_MUXCONF("slxk", "pcie", none, driven), | ||
114 | TEGRA_MAP_MUXCONF("spdi", "rsvd2", none, tristate), | ||
115 | TEGRA_MAP_MUXCONF("spdo", "rsvd2", none, driven), | ||
116 | TEGRA_MAP_MUXCONF("spia", "gmi", down, tristate), | ||
117 | TEGRA_MAP_MUXCONF("spib", "gmi", down, tristate), | ||
118 | TEGRA_MAP_MUXCONF("spic", "gmi", up, driven), | ||
119 | TEGRA_MAP_MUXCONF("spid", "gmi", down, tristate), | ||
120 | TEGRA_MAP_MUXCONF("spie", "gmi", up, tristate), | ||
121 | TEGRA_MAP_MUXCONF("spif", "rsvd4", down, tristate), | ||
122 | TEGRA_MAP_MUXCONF("spig", "spi2_alt", up, driven), | ||
123 | TEGRA_MAP_MUXCONF("spih", "spi2_alt", up, tristate), | ||
124 | TEGRA_MAP_MUXCONF("uaa", "ulpi", up, driven), | ||
125 | TEGRA_MAP_MUXCONF("uab", "ulpi", up, driven), | ||
126 | TEGRA_MAP_MUXCONF("uac", "rsvd4", none, driven), | ||
127 | TEGRA_MAP_MUXCONF("uad", "spdif", up, tristate), | ||
128 | TEGRA_MAP_MUXCONF("uca", "uartc", up, tristate), | ||
129 | TEGRA_MAP_MUXCONF("ucb", "uartc", up, tristate), | ||
130 | TEGRA_MAP_MUXCONF("uda", "ulpi", none, driven), | ||
131 | TEGRA_MAP_CONF("ck32", none, na), | ||
132 | TEGRA_MAP_CONF("ddrc", none, na), | ||
133 | TEGRA_MAP_CONF("pmca", none, na), | ||
134 | TEGRA_MAP_CONF("pmcb", none, na), | ||
135 | TEGRA_MAP_CONF("pmcc", none, na), | ||
136 | TEGRA_MAP_CONF("pmcd", none, na), | ||
137 | TEGRA_MAP_CONF("pmce", none, na), | ||
138 | TEGRA_MAP_CONF("xm2c", none, na), | ||
139 | TEGRA_MAP_CONF("xm2d", none, na), | ||
140 | TEGRA_MAP_CONF("ls", up, na), | ||
141 | TEGRA_MAP_CONF("lc", up, na), | ||
142 | TEGRA_MAP_CONF("ld17_0", down, na), | ||
143 | TEGRA_MAP_CONF("ld19_18", down, na), | ||
144 | TEGRA_MAP_CONF("ld21_20", down, na), | ||
145 | TEGRA_MAP_CONF("ld23_22", down, na), | ||
146 | }; | ||
147 | |||
148 | static struct tegra_board_pinmux_conf conf = { | ||
149 | .maps = paz00_map, | ||
150 | .map_count = ARRAY_SIZE(paz00_map), | ||
151 | }; | ||
152 | |||
153 | void paz00_pinmux_init(void) | ||
154 | { | ||
155 | tegra_board_pinmux_init(&conf, NULL); | ||
156 | } | ||
diff --git a/arch/arm/mach-tegra/board-paz00.c b/arch/arm/mach-tegra/board-paz00.c index 4b64af5cab27..59305516fadb 100644 --- a/arch/arm/mach-tegra/board-paz00.c +++ b/arch/arm/mach-tegra/board-paz00.c | |||
@@ -17,72 +17,10 @@ | |||
17 | * | 17 | * |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <linux/kernel.h> | ||
21 | #include <linux/init.h> | ||
22 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
23 | #include <linux/serial_8250.h> | ||
24 | #include <linux/of_serial.h> | ||
25 | #include <linux/clk.h> | ||
26 | #include <linux/dma-mapping.h> | ||
27 | #include <linux/gpio_keys.h> | ||
28 | #include <linux/pda_power.h> | ||
29 | #include <linux/io.h> | ||
30 | #include <linux/input.h> | ||
31 | #include <linux/i2c.h> | ||
32 | #include <linux/gpio.h> | ||
33 | #include <linux/rfkill-gpio.h> | 21 | #include <linux/rfkill-gpio.h> |
34 | 22 | ||
35 | #include <asm/hardware/gic.h> | ||
36 | #include <asm/mach-types.h> | ||
37 | #include <asm/mach/arch.h> | ||
38 | #include <asm/mach/time.h> | ||
39 | #include <asm/setup.h> | ||
40 | |||
41 | #include <mach/iomap.h> | ||
42 | #include <mach/irqs.h> | ||
43 | #include <mach/sdhci.h> | ||
44 | |||
45 | #include "board.h" | ||
46 | #include "board-paz00.h" | 23 | #include "board-paz00.h" |
47 | #include "clock.h" | ||
48 | #include "devices.h" | ||
49 | #include "gpio-names.h" | ||
50 | |||
51 | static struct plat_serial8250_port debug_uart_platform_data[] = { | ||
52 | { | ||
53 | /* serial port on JP1 */ | ||
54 | .membase = IO_ADDRESS(TEGRA_UARTA_BASE), | ||
55 | .mapbase = TEGRA_UARTA_BASE, | ||
56 | .irq = INT_UARTA, | ||
57 | .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE, | ||
58 | .type = PORT_TEGRA, | ||
59 | .handle_break = tegra_serial_handle_break, | ||
60 | .iotype = UPIO_MEM, | ||
61 | .regshift = 2, | ||
62 | .uartclk = 216000000, | ||
63 | }, { | ||
64 | /* serial port on mini-pcie */ | ||
65 | .membase = IO_ADDRESS(TEGRA_UARTC_BASE), | ||
66 | .mapbase = TEGRA_UARTC_BASE, | ||
67 | .irq = INT_UARTC, | ||
68 | .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE, | ||
69 | .type = PORT_TEGRA, | ||
70 | .handle_break = tegra_serial_handle_break, | ||
71 | .iotype = UPIO_MEM, | ||
72 | .regshift = 2, | ||
73 | .uartclk = 216000000, | ||
74 | }, { | ||
75 | .flags = 0 | ||
76 | } | ||
77 | }; | ||
78 | |||
79 | static struct platform_device debug_uart = { | ||
80 | .name = "serial8250", | ||
81 | .id = PLAT8250_DEV_PLATFORM, | ||
82 | .dev = { | ||
83 | .platform_data = debug_uart_platform_data, | ||
84 | }, | ||
85 | }; | ||
86 | 24 | ||
87 | static struct rfkill_gpio_platform_data wifi_rfkill_platform_data = { | 25 | static struct rfkill_gpio_platform_data wifi_rfkill_platform_data = { |
88 | .name = "wifi_rfkill", | 26 | .name = "wifi_rfkill", |
@@ -99,137 +37,7 @@ static struct platform_device wifi_rfkill_device = { | |||
99 | }, | 37 | }, |
100 | }; | 38 | }; |
101 | 39 | ||
102 | static struct gpio_led gpio_leds[] = { | ||
103 | { | ||
104 | .name = "wifi-led", | ||
105 | .default_trigger = "rfkill0", | ||
106 | .gpio = TEGRA_WIFI_LED, | ||
107 | }, | ||
108 | }; | ||
109 | |||
110 | static struct gpio_led_platform_data gpio_led_info = { | ||
111 | .leds = gpio_leds, | ||
112 | .num_leds = ARRAY_SIZE(gpio_leds), | ||
113 | }; | ||
114 | |||
115 | static struct platform_device leds_gpio = { | ||
116 | .name = "leds-gpio", | ||
117 | .id = -1, | ||
118 | .dev = { | ||
119 | .platform_data = &gpio_led_info, | ||
120 | }, | ||
121 | }; | ||
122 | |||
123 | static struct gpio_keys_button paz00_gpio_keys_buttons[] = { | ||
124 | { | ||
125 | .code = KEY_POWER, | ||
126 | .gpio = TEGRA_GPIO_POWERKEY, | ||
127 | .active_low = 1, | ||
128 | .desc = "Power", | ||
129 | .type = EV_KEY, | ||
130 | .wakeup = 1, | ||
131 | }, | ||
132 | }; | ||
133 | |||
134 | static struct gpio_keys_platform_data paz00_gpio_keys = { | ||
135 | .buttons = paz00_gpio_keys_buttons, | ||
136 | .nbuttons = ARRAY_SIZE(paz00_gpio_keys_buttons), | ||
137 | }; | ||
138 | |||
139 | static struct platform_device gpio_keys_device = { | ||
140 | .name = "gpio-keys", | ||
141 | .id = -1, | ||
142 | .dev = { | ||
143 | .platform_data = &paz00_gpio_keys, | ||
144 | }, | ||
145 | }; | ||
146 | |||
147 | static struct platform_device *paz00_devices[] __initdata = { | ||
148 | &debug_uart, | ||
149 | &tegra_sdhci_device4, | ||
150 | &tegra_sdhci_device1, | ||
151 | &leds_gpio, | ||
152 | &gpio_keys_device, | ||
153 | }; | ||
154 | |||
155 | static void paz00_i2c_init(void) | ||
156 | { | ||
157 | platform_device_register(&tegra_i2c_device1); | ||
158 | platform_device_register(&tegra_i2c_device2); | ||
159 | platform_device_register(&tegra_i2c_device4); | ||
160 | } | ||
161 | |||
162 | static void paz00_usb_init(void) | ||
163 | { | ||
164 | tegra_ehci2_ulpi_phy_config.reset_gpio = TEGRA_ULPI_RST; | ||
165 | |||
166 | platform_device_register(&tegra_ehci2_device); | ||
167 | platform_device_register(&tegra_ehci3_device); | ||
168 | } | ||
169 | |||
170 | static void __init tegra_paz00_fixup(struct tag *tags, char **cmdline, | ||
171 | struct meminfo *mi) | ||
172 | { | ||
173 | mi->nr_banks = 1; | ||
174 | mi->bank[0].start = PHYS_OFFSET; | ||
175 | mi->bank[0].size = 448 * SZ_1M; | ||
176 | } | ||
177 | |||
178 | static __initdata struct tegra_clk_init_table paz00_clk_init_table[] = { | ||
179 | /* name parent rate enabled */ | ||
180 | { "uarta", "pll_p", 216000000, true }, | ||
181 | { "uartc", "pll_p", 216000000, true }, | ||
182 | |||
183 | { "usbd", "clk_m", 12000000, false }, | ||
184 | { "usb2", "clk_m", 12000000, false }, | ||
185 | { "usb3", "clk_m", 12000000, false }, | ||
186 | |||
187 | { NULL, NULL, 0, 0}, | ||
188 | }; | ||
189 | |||
190 | static struct tegra_sdhci_platform_data sdhci_pdata1 = { | ||
191 | .cd_gpio = TEGRA_GPIO_SD1_CD, | ||
192 | .wp_gpio = TEGRA_GPIO_SD1_WP, | ||
193 | .power_gpio = TEGRA_GPIO_SD1_POWER, | ||
194 | }; | ||
195 | |||
196 | static struct tegra_sdhci_platform_data sdhci_pdata4 = { | ||
197 | .cd_gpio = -1, | ||
198 | .wp_gpio = -1, | ||
199 | .power_gpio = -1, | ||
200 | .is_8bit = 1, | ||
201 | }; | ||
202 | |||
203 | void __init tegra_paz00_wifikill_init(void) | 40 | void __init tegra_paz00_wifikill_init(void) |
204 | { | 41 | { |
205 | platform_device_register(&wifi_rfkill_device); | 42 | platform_device_register(&wifi_rfkill_device); |
206 | } | 43 | } |
207 | |||
208 | static void __init tegra_paz00_init(void) | ||
209 | { | ||
210 | tegra_clk_init_from_table(paz00_clk_init_table); | ||
211 | |||
212 | paz00_pinmux_init(); | ||
213 | |||
214 | tegra_sdhci_device1.dev.platform_data = &sdhci_pdata1; | ||
215 | tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4; | ||
216 | |||
217 | platform_add_devices(paz00_devices, ARRAY_SIZE(paz00_devices)); | ||
218 | tegra_paz00_wifikill_init(); | ||
219 | |||
220 | paz00_i2c_init(); | ||
221 | paz00_usb_init(); | ||
222 | } | ||
223 | |||
224 | MACHINE_START(PAZ00, "Toshiba AC100 / Dynabook AZ") | ||
225 | .atag_offset = 0x100, | ||
226 | .fixup = tegra_paz00_fixup, | ||
227 | .map_io = tegra_map_common_io, | ||
228 | .init_early = tegra20_init_early, | ||
229 | .init_irq = tegra_init_irq, | ||
230 | .handle_irq = gic_handle_irq, | ||
231 | .timer = &tegra_timer, | ||
232 | .init_machine = tegra_paz00_init, | ||
233 | .init_late = tegra_init_late, | ||
234 | .restart = tegra_assert_system_reset, | ||
235 | MACHINE_END | ||
diff --git a/arch/arm/mach-tegra/board-paz00.h b/arch/arm/mach-tegra/board-paz00.h index 3c9f8da37ea3..25c08ecef52f 100644 --- a/arch/arm/mach-tegra/board-paz00.h +++ b/arch/arm/mach-tegra/board-paz00.h | |||
@@ -17,24 +17,9 @@ | |||
17 | #ifndef _MACH_TEGRA_BOARD_PAZ00_H | 17 | #ifndef _MACH_TEGRA_BOARD_PAZ00_H |
18 | #define _MACH_TEGRA_BOARD_PAZ00_H | 18 | #define _MACH_TEGRA_BOARD_PAZ00_H |
19 | 19 | ||
20 | #include <mach/gpio-tegra.h> | 20 | #include "gpio-names.h" |
21 | 21 | ||
22 | /* SDCARD */ | ||
23 | #define TEGRA_GPIO_SD1_CD TEGRA_GPIO_PV5 | ||
24 | #define TEGRA_GPIO_SD1_WP TEGRA_GPIO_PH1 | ||
25 | #define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PV1 | ||
26 | |||
27 | /* ULPI */ | ||
28 | #define TEGRA_ULPI_RST TEGRA_GPIO_PV0 | ||
29 | |||
30 | /* WIFI */ | ||
31 | #define TEGRA_WIFI_PWRN TEGRA_GPIO_PK5 | 22 | #define TEGRA_WIFI_PWRN TEGRA_GPIO_PK5 |
32 | #define TEGRA_WIFI_RST TEGRA_GPIO_PD1 | 23 | #define TEGRA_WIFI_RST TEGRA_GPIO_PD1 |
33 | #define TEGRA_WIFI_LED TEGRA_GPIO_PD0 | ||
34 | |||
35 | /* WakeUp */ | ||
36 | #define TEGRA_GPIO_POWERKEY TEGRA_GPIO_PJ7 | ||
37 | |||
38 | void paz00_pinmux_init(void); | ||
39 | 24 | ||
40 | #endif | 25 | #endif |
diff --git a/arch/arm/mach-tegra/board-trimslice-pinmux.c b/arch/arm/mach-tegra/board-trimslice-pinmux.c deleted file mode 100644 index 7b39511c0d4d..000000000000 --- a/arch/arm/mach-tegra/board-trimslice-pinmux.c +++ /dev/null | |||
@@ -1,155 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/board-trimslice-pinmux.c | ||
3 | * | ||
4 | * Copyright (C) 2011 CompuLab, Ltd. | ||
5 | * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. | ||
6 | * | ||
7 | * This software is licensed under the terms of the GNU General Public | ||
8 | * License version 2, as published by the Free Software Foundation, and | ||
9 | * may be copied, distributed, and modified under those terms. | ||
10 | * | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | */ | ||
17 | #include <linux/kernel.h> | ||
18 | |||
19 | #include "board-trimslice.h" | ||
20 | #include "board-pinmux.h" | ||
21 | |||
22 | static struct pinctrl_map trimslice_map[] = { | ||
23 | TEGRA_MAP_MUXCONF("ata", "ide", none, tristate), | ||
24 | TEGRA_MAP_MUXCONF("atb", "sdio4", none, driven), | ||
25 | TEGRA_MAP_MUXCONF("atc", "nand", none, tristate), | ||
26 | TEGRA_MAP_MUXCONF("atd", "gmi", none, tristate), | ||
27 | TEGRA_MAP_MUXCONF("ate", "gmi", none, tristate), | ||
28 | TEGRA_MAP_MUXCONF("cdev1", "plla_out", none, driven), | ||
29 | TEGRA_MAP_MUXCONF("cdev2", "pllp_out4", down, tristate), | ||
30 | TEGRA_MAP_MUXCONF("crtp", "crt", none, tristate), | ||
31 | TEGRA_MAP_MUXCONF("csus", "vi_sensor_clk", down, tristate), | ||
32 | TEGRA_MAP_MUXCONF("dap1", "dap1", none, driven), | ||
33 | TEGRA_MAP_MUXCONF("dap2", "dap2", none, tristate), | ||
34 | TEGRA_MAP_MUXCONF("dap3", "dap3", none, tristate), | ||
35 | TEGRA_MAP_MUXCONF("dap4", "dap4", none, tristate), | ||
36 | TEGRA_MAP_MUXCONF("ddc", "i2c2", up, driven), | ||
37 | TEGRA_MAP_MUXCONF("dta", "vi", none, tristate), | ||
38 | TEGRA_MAP_MUXCONF("dtb", "vi", none, tristate), | ||
39 | TEGRA_MAP_MUXCONF("dtc", "vi", none, tristate), | ||
40 | TEGRA_MAP_MUXCONF("dtd", "vi", none, tristate), | ||
41 | TEGRA_MAP_MUXCONF("dte", "vi", none, tristate), | ||
42 | TEGRA_MAP_MUXCONF("dtf", "i2c3", up, driven), | ||
43 | TEGRA_MAP_MUXCONF("gma", "sdio4", none, driven), | ||
44 | TEGRA_MAP_MUXCONF("gmb", "nand", none, tristate), | ||
45 | TEGRA_MAP_MUXCONF("gmc", "sflash", none, driven), | ||
46 | TEGRA_MAP_MUXCONF("gmd", "sflash", none, driven), | ||
47 | TEGRA_MAP_MUXCONF("gme", "gmi", none, tristate), | ||
48 | TEGRA_MAP_MUXCONF("gpu", "uarta", none, driven), | ||
49 | TEGRA_MAP_MUXCONF("gpu7", "rtck", none, driven), | ||
50 | TEGRA_MAP_MUXCONF("gpv", "pcie", none, driven), | ||
51 | TEGRA_MAP_MUXCONF("hdint", "hdmi", na, tristate), | ||
52 | TEGRA_MAP_MUXCONF("i2cp", "i2cp", none, tristate), | ||
53 | TEGRA_MAP_MUXCONF("irrx", "uartb", up, tristate), | ||
54 | TEGRA_MAP_MUXCONF("irtx", "uartb", up, tristate), | ||
55 | TEGRA_MAP_MUXCONF("kbca", "kbc", up, tristate), | ||
56 | TEGRA_MAP_MUXCONF("kbcb", "kbc", up, tristate), | ||
57 | TEGRA_MAP_MUXCONF("kbcc", "kbc", up, tristate), | ||
58 | TEGRA_MAP_MUXCONF("kbcd", "kbc", up, tristate), | ||
59 | TEGRA_MAP_MUXCONF("kbce", "kbc", up, tristate), | ||
60 | TEGRA_MAP_MUXCONF("kbcf", "kbc", up, tristate), | ||
61 | TEGRA_MAP_MUXCONF("lcsn", "displaya", na, tristate), | ||
62 | TEGRA_MAP_MUXCONF("ld0", "displaya", na, driven), | ||
63 | TEGRA_MAP_MUXCONF("ld1", "displaya", na, driven), | ||
64 | TEGRA_MAP_MUXCONF("ld10", "displaya", na, driven), | ||
65 | TEGRA_MAP_MUXCONF("ld11", "displaya", na, driven), | ||
66 | TEGRA_MAP_MUXCONF("ld12", "displaya", na, driven), | ||
67 | TEGRA_MAP_MUXCONF("ld13", "displaya", na, driven), | ||
68 | TEGRA_MAP_MUXCONF("ld14", "displaya", na, driven), | ||
69 | TEGRA_MAP_MUXCONF("ld15", "displaya", na, driven), | ||
70 | TEGRA_MAP_MUXCONF("ld16", "displaya", na, driven), | ||
71 | TEGRA_MAP_MUXCONF("ld17", "displaya", na, driven), | ||
72 | TEGRA_MAP_MUXCONF("ld2", "displaya", na, driven), | ||
73 | TEGRA_MAP_MUXCONF("ld3", "displaya", na, driven), | ||
74 | TEGRA_MAP_MUXCONF("ld4", "displaya", na, driven), | ||
75 | TEGRA_MAP_MUXCONF("ld5", "displaya", na, driven), | ||
76 | TEGRA_MAP_MUXCONF("ld6", "displaya", na, driven), | ||
77 | TEGRA_MAP_MUXCONF("ld7", "displaya", na, driven), | ||
78 | TEGRA_MAP_MUXCONF("ld8", "displaya", na, driven), | ||
79 | TEGRA_MAP_MUXCONF("ld9", "displaya", na, driven), | ||
80 | TEGRA_MAP_MUXCONF("ldc", "displaya", na, tristate), | ||
81 | TEGRA_MAP_MUXCONF("ldi", "displaya", na, driven), | ||
82 | TEGRA_MAP_MUXCONF("lhp0", "displaya", na, driven), | ||
83 | TEGRA_MAP_MUXCONF("lhp1", "displaya", na, driven), | ||
84 | TEGRA_MAP_MUXCONF("lhp2", "displaya", na, driven), | ||
85 | TEGRA_MAP_MUXCONF("lhs", "displaya", na, driven), | ||
86 | TEGRA_MAP_MUXCONF("lm0", "displaya", na, driven), | ||
87 | TEGRA_MAP_MUXCONF("lm1", "displaya", na, tristate), | ||
88 | TEGRA_MAP_MUXCONF("lpp", "displaya", na, driven), | ||
89 | TEGRA_MAP_MUXCONF("lpw0", "displaya", na, driven), | ||
90 | TEGRA_MAP_MUXCONF("lpw1", "displaya", na, tristate), | ||
91 | TEGRA_MAP_MUXCONF("lpw2", "displaya", na, driven), | ||
92 | TEGRA_MAP_MUXCONF("lsc0", "displaya", na, driven), | ||
93 | TEGRA_MAP_MUXCONF("lsc1", "displaya", na, tristate), | ||
94 | TEGRA_MAP_MUXCONF("lsck", "displaya", na, tristate), | ||
95 | TEGRA_MAP_MUXCONF("lsda", "displaya", na, tristate), | ||
96 | TEGRA_MAP_MUXCONF("lsdi", "displaya", na, tristate), | ||
97 | TEGRA_MAP_MUXCONF("lspi", "displaya", na, driven), | ||
98 | TEGRA_MAP_MUXCONF("lvp0", "displaya", na, tristate), | ||
99 | TEGRA_MAP_MUXCONF("lvp1", "displaya", na, driven), | ||
100 | TEGRA_MAP_MUXCONF("lvs", "displaya", na, driven), | ||
101 | TEGRA_MAP_MUXCONF("owc", "rsvd2", up, tristate), | ||
102 | TEGRA_MAP_MUXCONF("pmc", "pwr_on", na, tristate), | ||
103 | TEGRA_MAP_MUXCONF("pta", "gmi", none, tristate), | ||
104 | TEGRA_MAP_MUXCONF("rm", "i2c1", up, driven), | ||
105 | TEGRA_MAP_MUXCONF("sdb", "pwm", na, driven), | ||
106 | TEGRA_MAP_MUXCONF("sdc", "pwm", up, driven), | ||
107 | TEGRA_MAP_MUXCONF("sdd", "pwm", up, driven), | ||
108 | TEGRA_MAP_MUXCONF("sdio1", "sdio1", none, driven), | ||
109 | TEGRA_MAP_MUXCONF("slxa", "pcie", none, driven), | ||
110 | TEGRA_MAP_MUXCONF("slxc", "sdio3", none, tristate), | ||
111 | TEGRA_MAP_MUXCONF("slxd", "sdio3", none, tristate), | ||
112 | TEGRA_MAP_MUXCONF("slxk", "pcie", none, driven), | ||
113 | TEGRA_MAP_MUXCONF("spdi", "spdif", none, tristate), | ||
114 | TEGRA_MAP_MUXCONF("spdo", "spdif", none, tristate), | ||
115 | TEGRA_MAP_MUXCONF("spia", "spi2", down, tristate), | ||
116 | TEGRA_MAP_MUXCONF("spib", "spi2", down, tristate), | ||
117 | TEGRA_MAP_MUXCONF("spic", "spi2", up, tristate), | ||
118 | TEGRA_MAP_MUXCONF("spid", "spi1", down, tristate), | ||
119 | TEGRA_MAP_MUXCONF("spie", "spi1", up, tristate), | ||
120 | TEGRA_MAP_MUXCONF("spif", "spi1", down, tristate), | ||
121 | TEGRA_MAP_MUXCONF("spig", "spi2_alt", up, tristate), | ||
122 | TEGRA_MAP_MUXCONF("spih", "spi2_alt", up, tristate), | ||
123 | TEGRA_MAP_MUXCONF("uaa", "ulpi", up, tristate), | ||
124 | TEGRA_MAP_MUXCONF("uab", "ulpi", up, tristate), | ||
125 | TEGRA_MAP_MUXCONF("uac", "rsvd2", none, driven), | ||
126 | TEGRA_MAP_MUXCONF("uad", "irda", up, tristate), | ||
127 | TEGRA_MAP_MUXCONF("uca", "uartc", up, tristate), | ||
128 | TEGRA_MAP_MUXCONF("ucb", "uartc", up, tristate), | ||
129 | TEGRA_MAP_MUXCONF("uda", "ulpi", none, tristate), | ||
130 | TEGRA_MAP_CONF("ck32", none, na), | ||
131 | TEGRA_MAP_CONF("ddrc", none, na), | ||
132 | TEGRA_MAP_CONF("pmca", none, na), | ||
133 | TEGRA_MAP_CONF("pmcb", none, na), | ||
134 | TEGRA_MAP_CONF("pmcc", none, na), | ||
135 | TEGRA_MAP_CONF("pmcd", none, na), | ||
136 | TEGRA_MAP_CONF("pmce", none, na), | ||
137 | TEGRA_MAP_CONF("xm2c", none, na), | ||
138 | TEGRA_MAP_CONF("xm2d", none, na), | ||
139 | TEGRA_MAP_CONF("ls", up, na), | ||
140 | TEGRA_MAP_CONF("lc", up, na), | ||
141 | TEGRA_MAP_CONF("ld17_0", down, na), | ||
142 | TEGRA_MAP_CONF("ld19_18", down, na), | ||
143 | TEGRA_MAP_CONF("ld21_20", down, na), | ||
144 | TEGRA_MAP_CONF("ld23_22", down, na), | ||
145 | }; | ||
146 | |||
147 | static struct tegra_board_pinmux_conf conf = { | ||
148 | .maps = trimslice_map, | ||
149 | .map_count = ARRAY_SIZE(trimslice_map), | ||
150 | }; | ||
151 | |||
152 | void trimslice_pinmux_init(void) | ||
153 | { | ||
154 | tegra_board_pinmux_init(&conf, NULL); | ||
155 | } | ||
diff --git a/arch/arm/mach-tegra/board-trimslice.c b/arch/arm/mach-tegra/board-trimslice.c deleted file mode 100644 index 776aa9564d5d..000000000000 --- a/arch/arm/mach-tegra/board-trimslice.c +++ /dev/null | |||
@@ -1,183 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/board-trimslice.c | ||
3 | * | ||
4 | * Copyright (C) 2011 CompuLab, Ltd. | ||
5 | * Author: Mike Rapoport <mike@compulab.co.il> | ||
6 | * | ||
7 | * Based on board-harmony.c | ||
8 | * Copyright (C) 2010 Google, Inc. | ||
9 | * | ||
10 | * This software is licensed under the terms of the GNU General Public | ||
11 | * License version 2, as published by the Free Software Foundation, and | ||
12 | * may be copied, distributed, and modified under those terms. | ||
13 | * | ||
14 | * This program is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | */ | ||
20 | |||
21 | #include <linux/kernel.h> | ||
22 | #include <linux/init.h> | ||
23 | #include <linux/platform_device.h> | ||
24 | #include <linux/serial_8250.h> | ||
25 | #include <linux/of_serial.h> | ||
26 | #include <linux/io.h> | ||
27 | #include <linux/i2c.h> | ||
28 | #include <linux/gpio.h> | ||
29 | #include <linux/platform_data/tegra_usb.h> | ||
30 | |||
31 | #include <asm/hardware/gic.h> | ||
32 | #include <asm/mach-types.h> | ||
33 | #include <asm/mach/arch.h> | ||
34 | #include <asm/setup.h> | ||
35 | |||
36 | #include <mach/iomap.h> | ||
37 | #include <mach/sdhci.h> | ||
38 | |||
39 | #include "board.h" | ||
40 | #include "clock.h" | ||
41 | #include "devices.h" | ||
42 | #include "gpio-names.h" | ||
43 | |||
44 | #include "board-trimslice.h" | ||
45 | |||
46 | static struct plat_serial8250_port debug_uart_platform_data[] = { | ||
47 | { | ||
48 | .membase = IO_ADDRESS(TEGRA_UARTA_BASE), | ||
49 | .mapbase = TEGRA_UARTA_BASE, | ||
50 | .irq = INT_UARTA, | ||
51 | .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE, | ||
52 | .type = PORT_TEGRA, | ||
53 | .handle_break = tegra_serial_handle_break, | ||
54 | .iotype = UPIO_MEM, | ||
55 | .regshift = 2, | ||
56 | .uartclk = 216000000, | ||
57 | }, { | ||
58 | .flags = 0 | ||
59 | } | ||
60 | }; | ||
61 | |||
62 | static struct platform_device debug_uart = { | ||
63 | .name = "serial8250", | ||
64 | .id = PLAT8250_DEV_PLATFORM, | ||
65 | .dev = { | ||
66 | .platform_data = debug_uart_platform_data, | ||
67 | }, | ||
68 | }; | ||
69 | static struct tegra_sdhci_platform_data sdhci_pdata1 = { | ||
70 | .cd_gpio = -1, | ||
71 | .wp_gpio = -1, | ||
72 | .power_gpio = -1, | ||
73 | }; | ||
74 | |||
75 | static struct tegra_sdhci_platform_data sdhci_pdata4 = { | ||
76 | .cd_gpio = TRIMSLICE_GPIO_SD4_CD, | ||
77 | .wp_gpio = TRIMSLICE_GPIO_SD4_WP, | ||
78 | .power_gpio = -1, | ||
79 | }; | ||
80 | |||
81 | static struct platform_device trimslice_audio_device = { | ||
82 | .name = "tegra-snd-trimslice", | ||
83 | .id = 0, | ||
84 | }; | ||
85 | |||
86 | static struct platform_device *trimslice_devices[] __initdata = { | ||
87 | &debug_uart, | ||
88 | &tegra_sdhci_device1, | ||
89 | &tegra_sdhci_device4, | ||
90 | &tegra_i2s_device1, | ||
91 | &tegra_das_device, | ||
92 | &trimslice_audio_device, | ||
93 | }; | ||
94 | |||
95 | static struct i2c_board_info trimslice_i2c3_board_info[] = { | ||
96 | { | ||
97 | I2C_BOARD_INFO("tlv320aic23", 0x1a), | ||
98 | }, | ||
99 | { | ||
100 | I2C_BOARD_INFO("em3027", 0x56), | ||
101 | }, | ||
102 | }; | ||
103 | |||
104 | static void trimslice_i2c_init(void) | ||
105 | { | ||
106 | platform_device_register(&tegra_i2c_device1); | ||
107 | platform_device_register(&tegra_i2c_device2); | ||
108 | platform_device_register(&tegra_i2c_device3); | ||
109 | |||
110 | i2c_register_board_info(2, trimslice_i2c3_board_info, | ||
111 | ARRAY_SIZE(trimslice_i2c3_board_info)); | ||
112 | } | ||
113 | |||
114 | static void trimslice_usb_init(void) | ||
115 | { | ||
116 | struct tegra_ehci_platform_data *pdata; | ||
117 | |||
118 | pdata = tegra_ehci1_device.dev.platform_data; | ||
119 | pdata->vbus_gpio = TRIMSLICE_GPIO_USB1_MODE; | ||
120 | |||
121 | tegra_ehci2_ulpi_phy_config.reset_gpio = TEGRA_GPIO_PV0; | ||
122 | |||
123 | platform_device_register(&tegra_ehci3_device); | ||
124 | platform_device_register(&tegra_ehci2_device); | ||
125 | platform_device_register(&tegra_ehci1_device); | ||
126 | } | ||
127 | |||
128 | static void __init tegra_trimslice_fixup(struct tag *tags, char **cmdline, | ||
129 | struct meminfo *mi) | ||
130 | { | ||
131 | mi->nr_banks = 2; | ||
132 | mi->bank[0].start = PHYS_OFFSET; | ||
133 | mi->bank[0].size = 448 * SZ_1M; | ||
134 | mi->bank[1].start = SZ_512M; | ||
135 | mi->bank[1].size = SZ_512M; | ||
136 | } | ||
137 | |||
138 | static __initdata struct tegra_clk_init_table trimslice_clk_init_table[] = { | ||
139 | /* name parent rate enabled */ | ||
140 | { "uarta", "pll_p", 216000000, true }, | ||
141 | { "pll_a", "pll_p_out1", 56448000, true }, | ||
142 | { "pll_a_out0", "pll_a", 11289600, true }, | ||
143 | { "cdev1", NULL, 0, true }, | ||
144 | { "i2s1", "pll_a_out0", 11289600, false}, | ||
145 | { NULL, NULL, 0, 0}, | ||
146 | }; | ||
147 | |||
148 | static int __init tegra_trimslice_pci_init(void) | ||
149 | { | ||
150 | if (!machine_is_trimslice()) | ||
151 | return 0; | ||
152 | |||
153 | return tegra_pcie_init(true, true); | ||
154 | } | ||
155 | subsys_initcall(tegra_trimslice_pci_init); | ||
156 | |||
157 | static void __init tegra_trimslice_init(void) | ||
158 | { | ||
159 | tegra_clk_init_from_table(trimslice_clk_init_table); | ||
160 | |||
161 | trimslice_pinmux_init(); | ||
162 | |||
163 | tegra_sdhci_device1.dev.platform_data = &sdhci_pdata1; | ||
164 | tegra_sdhci_device4.dev.platform_data = &sdhci_pdata4; | ||
165 | |||
166 | platform_add_devices(trimslice_devices, ARRAY_SIZE(trimslice_devices)); | ||
167 | |||
168 | trimslice_i2c_init(); | ||
169 | trimslice_usb_init(); | ||
170 | } | ||
171 | |||
172 | MACHINE_START(TRIMSLICE, "trimslice") | ||
173 | .atag_offset = 0x100, | ||
174 | .fixup = tegra_trimslice_fixup, | ||
175 | .map_io = tegra_map_common_io, | ||
176 | .init_early = tegra20_init_early, | ||
177 | .init_irq = tegra_init_irq, | ||
178 | .handle_irq = gic_handle_irq, | ||
179 | .timer = &tegra_timer, | ||
180 | .init_machine = tegra_trimslice_init, | ||
181 | .init_late = tegra_init_late, | ||
182 | .restart = tegra_assert_system_reset, | ||
183 | MACHINE_END | ||
diff --git a/arch/arm/mach-tegra/board-trimslice.h b/arch/arm/mach-tegra/board-trimslice.h deleted file mode 100644 index 50f128d87779..000000000000 --- a/arch/arm/mach-tegra/board-trimslice.h +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-tegra/board-trimslice.h | ||
3 | * | ||
4 | * Copyright (C) 2011 CompuLab, Ltd. | ||
5 | * | ||
6 | * This software is licensed under the terms of the GNU General Public | ||
7 | * License version 2, as published by the Free Software Foundation, and | ||
8 | * may be copied, distributed, and modified under those terms. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | */ | ||
16 | |||
17 | #ifndef _MACH_TEGRA_BOARD_TRIMSLICE_H | ||
18 | #define _MACH_TEGRA_BOARD_TRIMSLICE_H | ||
19 | |||
20 | #include <mach/gpio-tegra.h> | ||
21 | |||
22 | #define TRIMSLICE_GPIO_SD4_CD TEGRA_GPIO_PP1 /* mmc4 cd */ | ||
23 | #define TRIMSLICE_GPIO_SD4_WP TEGRA_GPIO_PP2 /* mmc4 wp */ | ||
24 | |||
25 | #define TRIMSLICE_GPIO_USB1_MODE TEGRA_GPIO_PV2 /* USB1 mode */ | ||
26 | #define TRIMSLICE_GPIO_USB2_RST TEGRA_GPIO_PV0 /* USB2 PHY reset */ | ||
27 | |||
28 | void trimslice_pinmux_init(void); | ||
29 | |||
30 | #endif | ||