diff options
Diffstat (limited to 'arch/arm/mach-loki/common.c')
-rw-r--r-- | arch/arm/mach-loki/common.c | 190 |
1 files changed, 17 insertions, 173 deletions
diff --git a/arch/arm/mach-loki/common.c b/arch/arm/mach-loki/common.c index e41e909cf8f4..5f02664db812 100644 --- a/arch/arm/mach-loki/common.c +++ b/arch/arm/mach-loki/common.c | |||
@@ -13,7 +13,7 @@ | |||
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/serial_8250.h> | 14 | #include <linux/serial_8250.h> |
15 | #include <linux/mbus.h> | 15 | #include <linux/mbus.h> |
16 | #include <linux/mv643xx_eth.h> | 16 | #include <linux/dma-mapping.h> |
17 | #include <asm/page.h> | 17 | #include <asm/page.h> |
18 | #include <asm/timex.h> | 18 | #include <asm/timex.h> |
19 | #include <asm/mach/map.h> | 19 | #include <asm/mach/map.h> |
@@ -22,6 +22,7 @@ | |||
22 | #include <mach/loki.h> | 22 | #include <mach/loki.h> |
23 | #include <plat/orion_nand.h> | 23 | #include <plat/orion_nand.h> |
24 | #include <plat/time.h> | 24 | #include <plat/time.h> |
25 | #include <plat/common.h> | ||
25 | #include "common.h" | 26 | #include "common.h" |
26 | 27 | ||
27 | /***************************************************************************** | 28 | /***************************************************************************** |
@@ -43,116 +44,28 @@ void __init loki_map_io(void) | |||
43 | 44 | ||
44 | 45 | ||
45 | /***************************************************************************** | 46 | /***************************************************************************** |
46 | * GE0 | 47 | * GE00 |
47 | ****************************************************************************/ | 48 | ****************************************************************************/ |
48 | struct mv643xx_eth_shared_platform_data loki_ge0_shared_data = { | ||
49 | .t_clk = LOKI_TCLK, | ||
50 | .dram = &loki_mbus_dram_info, | ||
51 | }; | ||
52 | |||
53 | static struct resource loki_ge0_shared_resources[] = { | ||
54 | { | ||
55 | .name = "ge0 base", | ||
56 | .start = GE0_PHYS_BASE + 0x2000, | ||
57 | .end = GE0_PHYS_BASE + 0x3fff, | ||
58 | .flags = IORESOURCE_MEM, | ||
59 | }, | ||
60 | }; | ||
61 | |||
62 | static struct platform_device loki_ge0_shared = { | ||
63 | .name = MV643XX_ETH_SHARED_NAME, | ||
64 | .id = 0, | ||
65 | .dev = { | ||
66 | .platform_data = &loki_ge0_shared_data, | ||
67 | }, | ||
68 | .num_resources = 1, | ||
69 | .resource = loki_ge0_shared_resources, | ||
70 | }; | ||
71 | |||
72 | static struct resource loki_ge0_resources[] = { | ||
73 | { | ||
74 | .name = "ge0 irq", | ||
75 | .start = IRQ_LOKI_GBE_A_INT, | ||
76 | .end = IRQ_LOKI_GBE_A_INT, | ||
77 | .flags = IORESOURCE_IRQ, | ||
78 | }, | ||
79 | }; | ||
80 | |||
81 | static struct platform_device loki_ge0 = { | ||
82 | .name = MV643XX_ETH_NAME, | ||
83 | .id = 0, | ||
84 | .num_resources = 1, | ||
85 | .resource = loki_ge0_resources, | ||
86 | .dev = { | ||
87 | .coherent_dma_mask = 0xffffffff, | ||
88 | }, | ||
89 | }; | ||
90 | |||
91 | void __init loki_ge0_init(struct mv643xx_eth_platform_data *eth_data) | 49 | void __init loki_ge0_init(struct mv643xx_eth_platform_data *eth_data) |
92 | { | 50 | { |
93 | eth_data->shared = &loki_ge0_shared; | ||
94 | loki_ge0.dev.platform_data = eth_data; | ||
95 | |||
96 | writel(0x00079220, GE0_VIRT_BASE + 0x20b0); | 51 | writel(0x00079220, GE0_VIRT_BASE + 0x20b0); |
97 | platform_device_register(&loki_ge0_shared); | 52 | |
98 | platform_device_register(&loki_ge0); | 53 | orion_ge00_init(eth_data, &loki_mbus_dram_info, |
54 | GE0_PHYS_BASE, IRQ_LOKI_GBE_A_INT, | ||
55 | 0, LOKI_TCLK); | ||
99 | } | 56 | } |
100 | 57 | ||
101 | 58 | ||
102 | /***************************************************************************** | 59 | /***************************************************************************** |
103 | * GE1 | 60 | * GE01 |
104 | ****************************************************************************/ | 61 | ****************************************************************************/ |
105 | struct mv643xx_eth_shared_platform_data loki_ge1_shared_data = { | ||
106 | .t_clk = LOKI_TCLK, | ||
107 | .dram = &loki_mbus_dram_info, | ||
108 | }; | ||
109 | |||
110 | static struct resource loki_ge1_shared_resources[] = { | ||
111 | { | ||
112 | .name = "ge1 base", | ||
113 | .start = GE1_PHYS_BASE + 0x2000, | ||
114 | .end = GE1_PHYS_BASE + 0x3fff, | ||
115 | .flags = IORESOURCE_MEM, | ||
116 | }, | ||
117 | }; | ||
118 | |||
119 | static struct platform_device loki_ge1_shared = { | ||
120 | .name = MV643XX_ETH_SHARED_NAME, | ||
121 | .id = 1, | ||
122 | .dev = { | ||
123 | .platform_data = &loki_ge1_shared_data, | ||
124 | }, | ||
125 | .num_resources = 1, | ||
126 | .resource = loki_ge1_shared_resources, | ||
127 | }; | ||
128 | |||
129 | static struct resource loki_ge1_resources[] = { | ||
130 | { | ||
131 | .name = "ge1 irq", | ||
132 | .start = IRQ_LOKI_GBE_B_INT, | ||
133 | .end = IRQ_LOKI_GBE_B_INT, | ||
134 | .flags = IORESOURCE_IRQ, | ||
135 | }, | ||
136 | }; | ||
137 | |||
138 | static struct platform_device loki_ge1 = { | ||
139 | .name = MV643XX_ETH_NAME, | ||
140 | .id = 1, | ||
141 | .num_resources = 1, | ||
142 | .resource = loki_ge1_resources, | ||
143 | .dev = { | ||
144 | .coherent_dma_mask = 0xffffffff, | ||
145 | }, | ||
146 | }; | ||
147 | |||
148 | void __init loki_ge1_init(struct mv643xx_eth_platform_data *eth_data) | 62 | void __init loki_ge1_init(struct mv643xx_eth_platform_data *eth_data) |
149 | { | 63 | { |
150 | eth_data->shared = &loki_ge1_shared; | ||
151 | loki_ge1.dev.platform_data = eth_data; | ||
152 | |||
153 | writel(0x00079220, GE1_VIRT_BASE + 0x20b0); | 64 | writel(0x00079220, GE1_VIRT_BASE + 0x20b0); |
154 | platform_device_register(&loki_ge1_shared); | 65 | |
155 | platform_device_register(&loki_ge1); | 66 | orion_ge01_init(eth_data, &loki_mbus_dram_info, |
67 | GE1_PHYS_BASE, IRQ_LOKI_GBE_B_INT, | ||
68 | 0, LOKI_TCLK); | ||
156 | } | 69 | } |
157 | 70 | ||
158 | 71 | ||
@@ -187,7 +100,7 @@ static struct platform_device loki_sas = { | |||
187 | .name = "mvsas", | 100 | .name = "mvsas", |
188 | .id = 0, | 101 | .id = 0, |
189 | .dev = { | 102 | .dev = { |
190 | .coherent_dma_mask = 0xffffffff, | 103 | .coherent_dma_mask = DMA_BIT_MASK(32), |
191 | }, | 104 | }, |
192 | .num_resources = ARRAY_SIZE(loki_sas_resources), | 105 | .num_resources = ARRAY_SIZE(loki_sas_resources), |
193 | .resource = loki_sas_resources, | 106 | .resource = loki_sas_resources, |
@@ -203,88 +116,19 @@ void __init loki_sas_init(void) | |||
203 | /***************************************************************************** | 116 | /***************************************************************************** |
204 | * UART0 | 117 | * UART0 |
205 | ****************************************************************************/ | 118 | ****************************************************************************/ |
206 | static struct plat_serial8250_port loki_uart0_data[] = { | ||
207 | { | ||
208 | .mapbase = UART0_PHYS_BASE, | ||
209 | .membase = (char *)UART0_VIRT_BASE, | ||
210 | .irq = IRQ_LOKI_UART0, | ||
211 | .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, | ||
212 | .iotype = UPIO_MEM, | ||
213 | .regshift = 2, | ||
214 | .uartclk = LOKI_TCLK, | ||
215 | }, { | ||
216 | }, | ||
217 | }; | ||
218 | |||
219 | static struct resource loki_uart0_resources[] = { | ||
220 | { | ||
221 | .start = UART0_PHYS_BASE, | ||
222 | .end = UART0_PHYS_BASE + 0xff, | ||
223 | .flags = IORESOURCE_MEM, | ||
224 | }, { | ||
225 | .start = IRQ_LOKI_UART0, | ||
226 | .end = IRQ_LOKI_UART0, | ||
227 | .flags = IORESOURCE_IRQ, | ||
228 | }, | ||
229 | }; | ||
230 | |||
231 | static struct platform_device loki_uart0 = { | ||
232 | .name = "serial8250", | ||
233 | .id = 0, | ||
234 | .dev = { | ||
235 | .platform_data = loki_uart0_data, | ||
236 | }, | ||
237 | .resource = loki_uart0_resources, | ||
238 | .num_resources = ARRAY_SIZE(loki_uart0_resources), | ||
239 | }; | ||
240 | |||
241 | void __init loki_uart0_init(void) | 119 | void __init loki_uart0_init(void) |
242 | { | 120 | { |
243 | platform_device_register(&loki_uart0); | 121 | orion_uart0_init(UART0_VIRT_BASE, UART0_PHYS_BASE, |
122 | IRQ_LOKI_UART0, LOKI_TCLK); | ||
244 | } | 123 | } |
245 | 124 | ||
246 | |||
247 | /***************************************************************************** | 125 | /***************************************************************************** |
248 | * UART1 | 126 | * UART1 |
249 | ****************************************************************************/ | 127 | ****************************************************************************/ |
250 | static struct plat_serial8250_port loki_uart1_data[] = { | ||
251 | { | ||
252 | .mapbase = UART1_PHYS_BASE, | ||
253 | .membase = (char *)UART1_VIRT_BASE, | ||
254 | .irq = IRQ_LOKI_UART1, | ||
255 | .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, | ||
256 | .iotype = UPIO_MEM, | ||
257 | .regshift = 2, | ||
258 | .uartclk = LOKI_TCLK, | ||
259 | }, { | ||
260 | }, | ||
261 | }; | ||
262 | |||
263 | static struct resource loki_uart1_resources[] = { | ||
264 | { | ||
265 | .start = UART1_PHYS_BASE, | ||
266 | .end = UART1_PHYS_BASE + 0xff, | ||
267 | .flags = IORESOURCE_MEM, | ||
268 | }, { | ||
269 | .start = IRQ_LOKI_UART1, | ||
270 | .end = IRQ_LOKI_UART1, | ||
271 | .flags = IORESOURCE_IRQ, | ||
272 | }, | ||
273 | }; | ||
274 | |||
275 | static struct platform_device loki_uart1 = { | ||
276 | .name = "serial8250", | ||
277 | .id = 1, | ||
278 | .dev = { | ||
279 | .platform_data = loki_uart1_data, | ||
280 | }, | ||
281 | .resource = loki_uart1_resources, | ||
282 | .num_resources = ARRAY_SIZE(loki_uart1_resources), | ||
283 | }; | ||
284 | |||
285 | void __init loki_uart1_init(void) | 128 | void __init loki_uart1_init(void) |
286 | { | 129 | { |
287 | platform_device_register(&loki_uart1); | 130 | orion_uart1_init(UART1_VIRT_BASE, UART1_PHYS_BASE, |
131 | IRQ_LOKI_UART1, LOKI_TCLK); | ||
288 | } | 132 | } |
289 | 133 | ||
290 | 134 | ||