diff options
Diffstat (limited to 'arch/arm/mach-tegra/board-dt.c')
-rw-r--r-- | arch/arm/mach-tegra/board-dt.c | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/arch/arm/mach-tegra/board-dt.c b/arch/arm/mach-tegra/board-dt.c index e417a8383dbb..46074a2f0b82 100644 --- a/arch/arm/mach-tegra/board-dt.c +++ b/arch/arm/mach-tegra/board-dt.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <asm/mach/arch.h> | 37 | #include <asm/mach/arch.h> |
38 | #include <asm/mach/time.h> | 38 | #include <asm/mach/time.h> |
39 | #include <asm/setup.h> | 39 | #include <asm/setup.h> |
40 | #include <asm/hardware/gic.h> | ||
40 | 41 | ||
41 | #include <mach/iomap.h> | 42 | #include <mach/iomap.h> |
42 | #include <mach/irqs.h> | 43 | #include <mach/irqs.h> |
@@ -47,9 +48,22 @@ | |||
47 | #include "devices.h" | 48 | #include "devices.h" |
48 | 49 | ||
49 | void harmony_pinmux_init(void); | 50 | void harmony_pinmux_init(void); |
51 | void paz00_pinmux_init(void); | ||
50 | void seaboard_pinmux_init(void); | 52 | void seaboard_pinmux_init(void); |
53 | void trimslice_pinmux_init(void); | ||
51 | void ventana_pinmux_init(void); | 54 | void ventana_pinmux_init(void); |
52 | 55 | ||
56 | static const struct of_device_id tegra_dt_irq_match[] __initconst = { | ||
57 | { .compatible = "arm,cortex-a9-gic", .data = gic_of_init }, | ||
58 | { } | ||
59 | }; | ||
60 | |||
61 | void __init tegra_dt_init_irq(void) | ||
62 | { | ||
63 | tegra_init_irq(); | ||
64 | of_irq_init(tegra_dt_irq_match); | ||
65 | } | ||
66 | |||
53 | struct of_dev_auxdata tegra20_auxdata_lookup[] __initdata = { | 67 | struct of_dev_auxdata tegra20_auxdata_lookup[] __initdata = { |
54 | OF_DEV_AUXDATA("nvidia,tegra20-sdhci", TEGRA_SDMMC1_BASE, "sdhci-tegra.0", NULL), | 68 | OF_DEV_AUXDATA("nvidia,tegra20-sdhci", TEGRA_SDMMC1_BASE, "sdhci-tegra.0", NULL), |
55 | OF_DEV_AUXDATA("nvidia,tegra20-sdhci", TEGRA_SDMMC2_BASE, "sdhci-tegra.1", NULL), | 69 | OF_DEV_AUXDATA("nvidia,tegra20-sdhci", TEGRA_SDMMC2_BASE, "sdhci-tegra.1", NULL), |
@@ -58,16 +72,30 @@ struct of_dev_auxdata tegra20_auxdata_lookup[] __initdata = { | |||
58 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", TEGRA_I2C_BASE, "tegra-i2c.0", NULL), | 72 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", TEGRA_I2C_BASE, "tegra-i2c.0", NULL), |
59 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", TEGRA_I2C2_BASE, "tegra-i2c.1", NULL), | 73 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", TEGRA_I2C2_BASE, "tegra-i2c.1", NULL), |
60 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", TEGRA_I2C3_BASE, "tegra-i2c.2", NULL), | 74 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", TEGRA_I2C3_BASE, "tegra-i2c.2", NULL), |
61 | OF_DEV_AUXDATA("nvidia,tegra20-i2c", TEGRA_DVC_BASE, "tegra-i2c.3", NULL), | 75 | OF_DEV_AUXDATA("nvidia,tegra20-i2c-dvc", TEGRA_DVC_BASE, "tegra-i2c.3", NULL), |
62 | OF_DEV_AUXDATA("nvidia,tegra20-i2s", TEGRA_I2S1_BASE, "tegra-i2s.0", NULL), | 76 | OF_DEV_AUXDATA("nvidia,tegra20-i2s", TEGRA_I2S1_BASE, "tegra-i2s.0", NULL), |
63 | OF_DEV_AUXDATA("nvidia,tegra20-i2s", TEGRA_I2S1_BASE, "tegra-i2s.1", NULL), | 77 | OF_DEV_AUXDATA("nvidia,tegra20-i2s", TEGRA_I2S2_BASE, "tegra-i2s.1", NULL), |
64 | OF_DEV_AUXDATA("nvidia,tegra20-das", TEGRA_APB_MISC_DAS_BASE, "tegra-das", NULL), | 78 | OF_DEV_AUXDATA("nvidia,tegra20-das", TEGRA_APB_MISC_DAS_BASE, "tegra-das", NULL), |
79 | OF_DEV_AUXDATA("nvidia,tegra20-ehci", TEGRA_USB_BASE, "tegra-ehci.0", | ||
80 | &tegra_ehci1_device.dev.platform_data), | ||
81 | OF_DEV_AUXDATA("nvidia,tegra20-ehci", TEGRA_USB2_BASE, "tegra-ehci.1", | ||
82 | &tegra_ehci2_device.dev.platform_data), | ||
83 | OF_DEV_AUXDATA("nvidia,tegra20-ehci", TEGRA_USB3_BASE, "tegra-ehci.2", | ||
84 | &tegra_ehci3_device.dev.platform_data), | ||
65 | {} | 85 | {} |
66 | }; | 86 | }; |
67 | 87 | ||
68 | static __initdata struct tegra_clk_init_table tegra_dt_clk_init_table[] = { | 88 | static __initdata struct tegra_clk_init_table tegra_dt_clk_init_table[] = { |
69 | /* name parent rate enabled */ | 89 | /* name parent rate enabled */ |
70 | { "uartd", "pll_p", 216000000, true }, | 90 | { "uartd", "pll_p", 216000000, true }, |
91 | { "usbd", "clk_m", 12000000, false }, | ||
92 | { "usb2", "clk_m", 12000000, false }, | ||
93 | { "usb3", "clk_m", 12000000, false }, | ||
94 | { "pll_a", "pll_p_out1", 56448000, true }, | ||
95 | { "pll_a_out0", "pll_a", 11289600, true }, | ||
96 | { "cdev1", NULL, 0, true }, | ||
97 | { "i2s1", "pll_a_out0", 11289600, false}, | ||
98 | { "i2s2", "pll_a_out0", 11289600, false}, | ||
71 | { NULL, NULL, 0, 0}, | 99 | { NULL, NULL, 0, 0}, |
72 | }; | 100 | }; |
73 | 101 | ||
@@ -76,30 +104,21 @@ static struct of_device_id tegra_dt_match_table[] __initdata = { | |||
76 | {} | 104 | {} |
77 | }; | 105 | }; |
78 | 106 | ||
79 | static struct of_device_id tegra_dt_gic_match[] __initdata = { | ||
80 | { .compatible = "nvidia,tegra20-gic", }, | ||
81 | {} | ||
82 | }; | ||
83 | |||
84 | static struct { | 107 | static struct { |
85 | char *machine; | 108 | char *machine; |
86 | void (*init)(void); | 109 | void (*init)(void); |
87 | } pinmux_configs[] = { | 110 | } pinmux_configs[] = { |
111 | { "compulab,trimslice", trimslice_pinmux_init }, | ||
88 | { "nvidia,harmony", harmony_pinmux_init }, | 112 | { "nvidia,harmony", harmony_pinmux_init }, |
113 | { "compal,paz00", paz00_pinmux_init }, | ||
89 | { "nvidia,seaboard", seaboard_pinmux_init }, | 114 | { "nvidia,seaboard", seaboard_pinmux_init }, |
90 | { "nvidia,ventana", ventana_pinmux_init }, | 115 | { "nvidia,ventana", ventana_pinmux_init }, |
91 | }; | 116 | }; |
92 | 117 | ||
93 | static void __init tegra_dt_init(void) | 118 | static void __init tegra_dt_init(void) |
94 | { | 119 | { |
95 | struct device_node *node; | ||
96 | int i; | 120 | int i; |
97 | 121 | ||
98 | node = of_find_matching_node_by_address(NULL, tegra_dt_gic_match, | ||
99 | TEGRA_ARM_INT_DIST_BASE); | ||
100 | if (node) | ||
101 | irq_domain_add_simple(node, INT_GIC_BASE); | ||
102 | |||
103 | tegra_clk_init_from_table(tegra_dt_clk_init_table); | 122 | tegra_clk_init_from_table(tegra_dt_clk_init_table); |
104 | 123 | ||
105 | /* | 124 | /* |
@@ -121,7 +140,9 @@ static void __init tegra_dt_init(void) | |||
121 | } | 140 | } |
122 | 141 | ||
123 | static const char * tegra_dt_board_compat[] = { | 142 | static const char * tegra_dt_board_compat[] = { |
143 | "compulab,trimslice", | ||
124 | "nvidia,harmony", | 144 | "nvidia,harmony", |
145 | "compal,paz00", | ||
125 | "nvidia,seaboard", | 146 | "nvidia,seaboard", |
126 | "nvidia,ventana", | 147 | "nvidia,ventana", |
127 | NULL | 148 | NULL |
@@ -130,7 +151,7 @@ static const char * tegra_dt_board_compat[] = { | |||
130 | DT_MACHINE_START(TEGRA_DT, "nVidia Tegra (Flattened Device Tree)") | 151 | DT_MACHINE_START(TEGRA_DT, "nVidia Tegra (Flattened Device Tree)") |
131 | .map_io = tegra_map_common_io, | 152 | .map_io = tegra_map_common_io, |
132 | .init_early = tegra_init_early, | 153 | .init_early = tegra_init_early, |
133 | .init_irq = tegra_init_irq, | 154 | .init_irq = tegra_dt_init_irq, |
134 | .handle_irq = gic_handle_irq, | 155 | .handle_irq = gic_handle_irq, |
135 | .timer = &tegra_timer, | 156 | .timer = &tegra_timer, |
136 | .init_machine = tegra_dt_init, | 157 | .init_machine = tegra_dt_init, |