diff options
Diffstat (limited to 'arch/arm/mach-shmobile/setup-sh7372.c')
-rw-r--r-- | arch/arm/mach-shmobile/setup-sh7372.c | 391 |
1 files changed, 369 insertions, 22 deletions
diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c index 1d1153290f5..e26686c9d0b 100644 --- a/arch/arm/mach-shmobile/setup-sh7372.c +++ b/arch/arm/mach-shmobile/setup-sh7372.c | |||
@@ -26,17 +26,21 @@ | |||
26 | #include <linux/input.h> | 26 | #include <linux/input.h> |
27 | #include <linux/io.h> | 27 | #include <linux/io.h> |
28 | #include <linux/serial_sci.h> | 28 | #include <linux/serial_sci.h> |
29 | #include <linux/sh_dma.h> | ||
29 | #include <linux/sh_intc.h> | 30 | #include <linux/sh_intc.h> |
30 | #include <linux/sh_timer.h> | 31 | #include <linux/sh_timer.h> |
31 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
33 | #include <mach/sh7372.h> | ||
32 | #include <asm/mach-types.h> | 34 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 35 | #include <asm/mach/arch.h> |
34 | 36 | ||
37 | /* SCIFA0 */ | ||
35 | static struct plat_sci_port scif0_platform_data = { | 38 | static struct plat_sci_port scif0_platform_data = { |
36 | .mapbase = 0xe6c40000, | 39 | .mapbase = 0xe6c40000, |
37 | .flags = UPF_BOOT_AUTOCONF, | 40 | .flags = UPF_BOOT_AUTOCONF, |
38 | .type = PORT_SCIF, | 41 | .type = PORT_SCIFA, |
39 | .irqs = { 80, 80, 80, 80 }, | 42 | .irqs = { evt2irq(0x0c00), evt2irq(0x0c00), |
43 | evt2irq(0x0c00), evt2irq(0x0c00) }, | ||
40 | }; | 44 | }; |
41 | 45 | ||
42 | static struct platform_device scif0_device = { | 46 | static struct platform_device scif0_device = { |
@@ -47,11 +51,13 @@ static struct platform_device scif0_device = { | |||
47 | }, | 51 | }, |
48 | }; | 52 | }; |
49 | 53 | ||
54 | /* SCIFA1 */ | ||
50 | static struct plat_sci_port scif1_platform_data = { | 55 | static struct plat_sci_port scif1_platform_data = { |
51 | .mapbase = 0xe6c50000, | 56 | .mapbase = 0xe6c50000, |
52 | .flags = UPF_BOOT_AUTOCONF, | 57 | .flags = UPF_BOOT_AUTOCONF, |
53 | .type = PORT_SCIF, | 58 | .type = PORT_SCIFA, |
54 | .irqs = { 81, 81, 81, 81 }, | 59 | .irqs = { evt2irq(0x0c20), evt2irq(0x0c20), |
60 | evt2irq(0x0c20), evt2irq(0x0c20) }, | ||
55 | }; | 61 | }; |
56 | 62 | ||
57 | static struct platform_device scif1_device = { | 63 | static struct platform_device scif1_device = { |
@@ -62,11 +68,13 @@ static struct platform_device scif1_device = { | |||
62 | }, | 68 | }, |
63 | }; | 69 | }; |
64 | 70 | ||
71 | /* SCIFA2 */ | ||
65 | static struct plat_sci_port scif2_platform_data = { | 72 | static struct plat_sci_port scif2_platform_data = { |
66 | .mapbase = 0xe6c60000, | 73 | .mapbase = 0xe6c60000, |
67 | .flags = UPF_BOOT_AUTOCONF, | 74 | .flags = UPF_BOOT_AUTOCONF, |
68 | .type = PORT_SCIF, | 75 | .type = PORT_SCIFA, |
69 | .irqs = { 82, 82, 82, 82 }, | 76 | .irqs = { evt2irq(0x0c40), evt2irq(0x0c40), |
77 | evt2irq(0x0c40), evt2irq(0x0c40) }, | ||
70 | }; | 78 | }; |
71 | 79 | ||
72 | static struct platform_device scif2_device = { | 80 | static struct platform_device scif2_device = { |
@@ -77,11 +85,13 @@ static struct platform_device scif2_device = { | |||
77 | }, | 85 | }, |
78 | }; | 86 | }; |
79 | 87 | ||
88 | /* SCIFA3 */ | ||
80 | static struct plat_sci_port scif3_platform_data = { | 89 | static struct plat_sci_port scif3_platform_data = { |
81 | .mapbase = 0xe6c70000, | 90 | .mapbase = 0xe6c70000, |
82 | .flags = UPF_BOOT_AUTOCONF, | 91 | .flags = UPF_BOOT_AUTOCONF, |
83 | .type = PORT_SCIF, | 92 | .type = PORT_SCIFA, |
84 | .irqs = { 83, 83, 83, 83 }, | 93 | .irqs = { evt2irq(0x0c60), evt2irq(0x0c60), |
94 | evt2irq(0x0c60), evt2irq(0x0c60) }, | ||
85 | }; | 95 | }; |
86 | 96 | ||
87 | static struct platform_device scif3_device = { | 97 | static struct platform_device scif3_device = { |
@@ -92,11 +102,13 @@ static struct platform_device scif3_device = { | |||
92 | }, | 102 | }, |
93 | }; | 103 | }; |
94 | 104 | ||
105 | /* SCIFA4 */ | ||
95 | static struct plat_sci_port scif4_platform_data = { | 106 | static struct plat_sci_port scif4_platform_data = { |
96 | .mapbase = 0xe6c80000, | 107 | .mapbase = 0xe6c80000, |
97 | .flags = UPF_BOOT_AUTOCONF, | 108 | .flags = UPF_BOOT_AUTOCONF, |
98 | .type = PORT_SCIF, | 109 | .type = PORT_SCIFA, |
99 | .irqs = { 89, 89, 89, 89 }, | 110 | .irqs = { evt2irq(0x0d20), evt2irq(0x0d20), |
111 | evt2irq(0x0d20), evt2irq(0x0d20) }, | ||
100 | }; | 112 | }; |
101 | 113 | ||
102 | static struct platform_device scif4_device = { | 114 | static struct platform_device scif4_device = { |
@@ -107,11 +119,13 @@ static struct platform_device scif4_device = { | |||
107 | }, | 119 | }, |
108 | }; | 120 | }; |
109 | 121 | ||
122 | /* SCIFA5 */ | ||
110 | static struct plat_sci_port scif5_platform_data = { | 123 | static struct plat_sci_port scif5_platform_data = { |
111 | .mapbase = 0xe6cb0000, | 124 | .mapbase = 0xe6cb0000, |
112 | .flags = UPF_BOOT_AUTOCONF, | 125 | .flags = UPF_BOOT_AUTOCONF, |
113 | .type = PORT_SCIF, | 126 | .type = PORT_SCIFA, |
114 | .irqs = { 90, 90, 90, 90 }, | 127 | .irqs = { evt2irq(0x0d40), evt2irq(0x0d40), |
128 | evt2irq(0x0d40), evt2irq(0x0d40) }, | ||
115 | }; | 129 | }; |
116 | 130 | ||
117 | static struct platform_device scif5_device = { | 131 | static struct platform_device scif5_device = { |
@@ -122,11 +136,13 @@ static struct platform_device scif5_device = { | |||
122 | }, | 136 | }, |
123 | }; | 137 | }; |
124 | 138 | ||
139 | /* SCIFB */ | ||
125 | static struct plat_sci_port scif6_platform_data = { | 140 | static struct plat_sci_port scif6_platform_data = { |
126 | .mapbase = 0xe6c30000, | 141 | .mapbase = 0xe6c30000, |
127 | .flags = UPF_BOOT_AUTOCONF, | 142 | .flags = UPF_BOOT_AUTOCONF, |
128 | .type = PORT_SCIF, | 143 | .type = PORT_SCIFB, |
129 | .irqs = { 91, 91, 91, 91 }, | 144 | .irqs = { evt2irq(0x0d60), evt2irq(0x0d60), |
145 | evt2irq(0x0d60), evt2irq(0x0d60) }, | ||
130 | }; | 146 | }; |
131 | 147 | ||
132 | static struct platform_device scif6_device = { | 148 | static struct platform_device scif6_device = { |
@@ -137,11 +153,12 @@ static struct platform_device scif6_device = { | |||
137 | }, | 153 | }, |
138 | }; | 154 | }; |
139 | 155 | ||
156 | /* CMT */ | ||
140 | static struct sh_timer_config cmt10_platform_data = { | 157 | static struct sh_timer_config cmt10_platform_data = { |
141 | .name = "CMT10", | 158 | .name = "CMT10", |
142 | .channel_offset = 0x10, | 159 | .channel_offset = 0x10, |
143 | .timer_bit = 0, | 160 | .timer_bit = 0, |
144 | .clk = "r_clk", | 161 | .clk = "cmt1", |
145 | .clockevent_rating = 125, | 162 | .clockevent_rating = 125, |
146 | .clocksource_rating = 125, | 163 | .clocksource_rating = 125, |
147 | }; | 164 | }; |
@@ -154,7 +171,7 @@ static struct resource cmt10_resources[] = { | |||
154 | .flags = IORESOURCE_MEM, | 171 | .flags = IORESOURCE_MEM, |
155 | }, | 172 | }, |
156 | [1] = { | 173 | [1] = { |
157 | .start = 72, | 174 | .start = evt2irq(0x0b00), /* CMT1_CMT10 */ |
158 | .flags = IORESOURCE_IRQ, | 175 | .flags = IORESOURCE_IRQ, |
159 | }, | 176 | }, |
160 | }; | 177 | }; |
@@ -169,6 +186,337 @@ static struct platform_device cmt10_device = { | |||
169 | .num_resources = ARRAY_SIZE(cmt10_resources), | 186 | .num_resources = ARRAY_SIZE(cmt10_resources), |
170 | }; | 187 | }; |
171 | 188 | ||
189 | /* I2C */ | ||
190 | static struct resource iic0_resources[] = { | ||
191 | [0] = { | ||
192 | .name = "IIC0", | ||
193 | .start = 0xFFF20000, | ||
194 | .end = 0xFFF20425 - 1, | ||
195 | .flags = IORESOURCE_MEM, | ||
196 | }, | ||
197 | [1] = { | ||
198 | .start = intcs_evt2irq(0xe00), /* IIC0_ALI0 */ | ||
199 | .end = intcs_evt2irq(0xe60), /* IIC0_DTEI0 */ | ||
200 | .flags = IORESOURCE_IRQ, | ||
201 | }, | ||
202 | }; | ||
203 | |||
204 | static struct platform_device iic0_device = { | ||
205 | .name = "i2c-sh_mobile", | ||
206 | .id = 0, /* "i2c0" clock */ | ||
207 | .num_resources = ARRAY_SIZE(iic0_resources), | ||
208 | .resource = iic0_resources, | ||
209 | }; | ||
210 | |||
211 | static struct resource iic1_resources[] = { | ||
212 | [0] = { | ||
213 | .name = "IIC1", | ||
214 | .start = 0xE6C20000, | ||
215 | .end = 0xE6C20425 - 1, | ||
216 | .flags = IORESOURCE_MEM, | ||
217 | }, | ||
218 | [1] = { | ||
219 | .start = evt2irq(0x780), /* IIC1_ALI1 */ | ||
220 | .end = evt2irq(0x7e0), /* IIC1_DTEI1 */ | ||
221 | .flags = IORESOURCE_IRQ, | ||
222 | }, | ||
223 | }; | ||
224 | |||
225 | static struct platform_device iic1_device = { | ||
226 | .name = "i2c-sh_mobile", | ||
227 | .id = 1, /* "i2c1" clock */ | ||
228 | .num_resources = ARRAY_SIZE(iic1_resources), | ||
229 | .resource = iic1_resources, | ||
230 | }; | ||
231 | |||
232 | /* DMA */ | ||
233 | /* Transmit sizes and respective CHCR register values */ | ||
234 | enum { | ||
235 | XMIT_SZ_8BIT = 0, | ||
236 | XMIT_SZ_16BIT = 1, | ||
237 | XMIT_SZ_32BIT = 2, | ||
238 | XMIT_SZ_64BIT = 7, | ||
239 | XMIT_SZ_128BIT = 3, | ||
240 | XMIT_SZ_256BIT = 4, | ||
241 | XMIT_SZ_512BIT = 5, | ||
242 | }; | ||
243 | |||
244 | /* log2(size / 8) - used to calculate number of transfers */ | ||
245 | #define TS_SHIFT { \ | ||
246 | [XMIT_SZ_8BIT] = 0, \ | ||
247 | [XMIT_SZ_16BIT] = 1, \ | ||
248 | [XMIT_SZ_32BIT] = 2, \ | ||
249 | [XMIT_SZ_64BIT] = 3, \ | ||
250 | [XMIT_SZ_128BIT] = 4, \ | ||
251 | [XMIT_SZ_256BIT] = 5, \ | ||
252 | [XMIT_SZ_512BIT] = 6, \ | ||
253 | } | ||
254 | |||
255 | #define TS_INDEX2VAL(i) ((((i) & 3) << 3) | \ | ||
256 | (((i) & 0xc) << (20 - 2))) | ||
257 | |||
258 | static const struct sh_dmae_slave_config sh7372_dmae_slaves[] = { | ||
259 | { | ||
260 | .slave_id = SHDMA_SLAVE_SCIF0_TX, | ||
261 | .addr = 0xe6c40020, | ||
262 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
263 | .mid_rid = 0x21, | ||
264 | }, { | ||
265 | .slave_id = SHDMA_SLAVE_SCIF0_RX, | ||
266 | .addr = 0xe6c40024, | ||
267 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
268 | .mid_rid = 0x22, | ||
269 | }, { | ||
270 | .slave_id = SHDMA_SLAVE_SCIF1_TX, | ||
271 | .addr = 0xe6c50020, | ||
272 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
273 | .mid_rid = 0x25, | ||
274 | }, { | ||
275 | .slave_id = SHDMA_SLAVE_SCIF1_RX, | ||
276 | .addr = 0xe6c50024, | ||
277 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
278 | .mid_rid = 0x26, | ||
279 | }, { | ||
280 | .slave_id = SHDMA_SLAVE_SCIF2_TX, | ||
281 | .addr = 0xe6c60020, | ||
282 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
283 | .mid_rid = 0x29, | ||
284 | }, { | ||
285 | .slave_id = SHDMA_SLAVE_SCIF2_RX, | ||
286 | .addr = 0xe6c60024, | ||
287 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
288 | .mid_rid = 0x2a, | ||
289 | }, { | ||
290 | .slave_id = SHDMA_SLAVE_SCIF3_TX, | ||
291 | .addr = 0xe6c70020, | ||
292 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
293 | .mid_rid = 0x2d, | ||
294 | }, { | ||
295 | .slave_id = SHDMA_SLAVE_SCIF3_RX, | ||
296 | .addr = 0xe6c70024, | ||
297 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
298 | .mid_rid = 0x2e, | ||
299 | }, { | ||
300 | .slave_id = SHDMA_SLAVE_SCIF4_TX, | ||
301 | .addr = 0xe6c80020, | ||
302 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
303 | .mid_rid = 0x39, | ||
304 | }, { | ||
305 | .slave_id = SHDMA_SLAVE_SCIF4_RX, | ||
306 | .addr = 0xe6c80024, | ||
307 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
308 | .mid_rid = 0x3a, | ||
309 | }, { | ||
310 | .slave_id = SHDMA_SLAVE_SCIF5_TX, | ||
311 | .addr = 0xe6cb0020, | ||
312 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
313 | .mid_rid = 0x35, | ||
314 | }, { | ||
315 | .slave_id = SHDMA_SLAVE_SCIF5_RX, | ||
316 | .addr = 0xe6cb0024, | ||
317 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
318 | .mid_rid = 0x36, | ||
319 | }, { | ||
320 | .slave_id = SHDMA_SLAVE_SCIF6_TX, | ||
321 | .addr = 0xe6c30040, | ||
322 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
323 | .mid_rid = 0x3d, | ||
324 | }, { | ||
325 | .slave_id = SHDMA_SLAVE_SCIF6_RX, | ||
326 | .addr = 0xe6c30060, | ||
327 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_8BIT), | ||
328 | .mid_rid = 0x3e, | ||
329 | }, { | ||
330 | .slave_id = SHDMA_SLAVE_SDHI0_TX, | ||
331 | .addr = 0xe6850030, | ||
332 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_16BIT), | ||
333 | .mid_rid = 0xc1, | ||
334 | }, { | ||
335 | .slave_id = SHDMA_SLAVE_SDHI0_RX, | ||
336 | .addr = 0xe6850030, | ||
337 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_16BIT), | ||
338 | .mid_rid = 0xc2, | ||
339 | }, { | ||
340 | .slave_id = SHDMA_SLAVE_SDHI1_TX, | ||
341 | .addr = 0xe6860030, | ||
342 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_16BIT), | ||
343 | .mid_rid = 0xc9, | ||
344 | }, { | ||
345 | .slave_id = SHDMA_SLAVE_SDHI1_RX, | ||
346 | .addr = 0xe6860030, | ||
347 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_16BIT), | ||
348 | .mid_rid = 0xca, | ||
349 | }, { | ||
350 | .slave_id = SHDMA_SLAVE_SDHI2_TX, | ||
351 | .addr = 0xe6870030, | ||
352 | .chcr = DM_FIX | SM_INC | 0x800 | TS_INDEX2VAL(XMIT_SZ_16BIT), | ||
353 | .mid_rid = 0xcd, | ||
354 | }, { | ||
355 | .slave_id = SHDMA_SLAVE_SDHI2_RX, | ||
356 | .addr = 0xe6870030, | ||
357 | .chcr = DM_INC | SM_FIX | 0x800 | TS_INDEX2VAL(XMIT_SZ_16BIT), | ||
358 | .mid_rid = 0xce, | ||
359 | }, | ||
360 | }; | ||
361 | |||
362 | static const struct sh_dmae_channel sh7372_dmae_channels[] = { | ||
363 | { | ||
364 | .offset = 0, | ||
365 | .dmars = 0, | ||
366 | .dmars_bit = 0, | ||
367 | }, { | ||
368 | .offset = 0x10, | ||
369 | .dmars = 0, | ||
370 | .dmars_bit = 8, | ||
371 | }, { | ||
372 | .offset = 0x20, | ||
373 | .dmars = 4, | ||
374 | .dmars_bit = 0, | ||
375 | }, { | ||
376 | .offset = 0x30, | ||
377 | .dmars = 4, | ||
378 | .dmars_bit = 8, | ||
379 | }, { | ||
380 | .offset = 0x50, | ||
381 | .dmars = 8, | ||
382 | .dmars_bit = 0, | ||
383 | }, { | ||
384 | .offset = 0x60, | ||
385 | .dmars = 8, | ||
386 | .dmars_bit = 8, | ||
387 | } | ||
388 | }; | ||
389 | |||
390 | static const unsigned int ts_shift[] = TS_SHIFT; | ||
391 | |||
392 | static struct sh_dmae_pdata dma_platform_data = { | ||
393 | .slave = sh7372_dmae_slaves, | ||
394 | .slave_num = ARRAY_SIZE(sh7372_dmae_slaves), | ||
395 | .channel = sh7372_dmae_channels, | ||
396 | .channel_num = ARRAY_SIZE(sh7372_dmae_channels), | ||
397 | .ts_low_shift = 3, | ||
398 | .ts_low_mask = 0x18, | ||
399 | .ts_high_shift = (20 - 2), /* 2 bits for shifted low TS */ | ||
400 | .ts_high_mask = 0x00300000, | ||
401 | .ts_shift = ts_shift, | ||
402 | .ts_shift_num = ARRAY_SIZE(ts_shift), | ||
403 | .dmaor_init = DMAOR_DME, | ||
404 | }; | ||
405 | |||
406 | /* Resource order important! */ | ||
407 | static struct resource sh7372_dmae0_resources[] = { | ||
408 | { | ||
409 | /* Channel registers and DMAOR */ | ||
410 | .start = 0xfe008020, | ||
411 | .end = 0xfe00808f, | ||
412 | .flags = IORESOURCE_MEM, | ||
413 | }, | ||
414 | { | ||
415 | /* DMARSx */ | ||
416 | .start = 0xfe009000, | ||
417 | .end = 0xfe00900b, | ||
418 | .flags = IORESOURCE_MEM, | ||
419 | }, | ||
420 | { | ||
421 | /* DMA error IRQ */ | ||
422 | .start = 246, | ||
423 | .end = 246, | ||
424 | .flags = IORESOURCE_IRQ, | ||
425 | }, | ||
426 | { | ||
427 | /* IRQ for channels 0-5 */ | ||
428 | .start = 240, | ||
429 | .end = 245, | ||
430 | .flags = IORESOURCE_IRQ, | ||
431 | }, | ||
432 | }; | ||
433 | |||
434 | /* Resource order important! */ | ||
435 | static struct resource sh7372_dmae1_resources[] = { | ||
436 | { | ||
437 | /* Channel registers and DMAOR */ | ||
438 | .start = 0xfe018020, | ||
439 | .end = 0xfe01808f, | ||
440 | .flags = IORESOURCE_MEM, | ||
441 | }, | ||
442 | { | ||
443 | /* DMARSx */ | ||
444 | .start = 0xfe019000, | ||
445 | .end = 0xfe01900b, | ||
446 | .flags = IORESOURCE_MEM, | ||
447 | }, | ||
448 | { | ||
449 | /* DMA error IRQ */ | ||
450 | .start = 254, | ||
451 | .end = 254, | ||
452 | .flags = IORESOURCE_IRQ, | ||
453 | }, | ||
454 | { | ||
455 | /* IRQ for channels 0-5 */ | ||
456 | .start = 248, | ||
457 | .end = 253, | ||
458 | .flags = IORESOURCE_IRQ, | ||
459 | }, | ||
460 | }; | ||
461 | |||
462 | /* Resource order important! */ | ||
463 | static struct resource sh7372_dmae2_resources[] = { | ||
464 | { | ||
465 | /* Channel registers and DMAOR */ | ||
466 | .start = 0xfe028020, | ||
467 | .end = 0xfe02808f, | ||
468 | .flags = IORESOURCE_MEM, | ||
469 | }, | ||
470 | { | ||
471 | /* DMARSx */ | ||
472 | .start = 0xfe029000, | ||
473 | .end = 0xfe02900b, | ||
474 | .flags = IORESOURCE_MEM, | ||
475 | }, | ||
476 | { | ||
477 | /* DMA error IRQ */ | ||
478 | .start = 262, | ||
479 | .end = 262, | ||
480 | .flags = IORESOURCE_IRQ, | ||
481 | }, | ||
482 | { | ||
483 | /* IRQ for channels 0-5 */ | ||
484 | .start = 256, | ||
485 | .end = 261, | ||
486 | .flags = IORESOURCE_IRQ, | ||
487 | }, | ||
488 | }; | ||
489 | |||
490 | static struct platform_device dma0_device = { | ||
491 | .name = "sh-dma-engine", | ||
492 | .id = 0, | ||
493 | .resource = sh7372_dmae0_resources, | ||
494 | .num_resources = ARRAY_SIZE(sh7372_dmae0_resources), | ||
495 | .dev = { | ||
496 | .platform_data = &dma_platform_data, | ||
497 | }, | ||
498 | }; | ||
499 | |||
500 | static struct platform_device dma1_device = { | ||
501 | .name = "sh-dma-engine", | ||
502 | .id = 1, | ||
503 | .resource = sh7372_dmae1_resources, | ||
504 | .num_resources = ARRAY_SIZE(sh7372_dmae1_resources), | ||
505 | .dev = { | ||
506 | .platform_data = &dma_platform_data, | ||
507 | }, | ||
508 | }; | ||
509 | |||
510 | static struct platform_device dma2_device = { | ||
511 | .name = "sh-dma-engine", | ||
512 | .id = 2, | ||
513 | .resource = sh7372_dmae2_resources, | ||
514 | .num_resources = ARRAY_SIZE(sh7372_dmae2_resources), | ||
515 | .dev = { | ||
516 | .platform_data = &dma_platform_data, | ||
517 | }, | ||
518 | }; | ||
519 | |||
172 | static struct platform_device *sh7372_early_devices[] __initdata = { | 520 | static struct platform_device *sh7372_early_devices[] __initdata = { |
173 | &scif0_device, | 521 | &scif0_device, |
174 | &scif1_device, | 522 | &scif1_device, |
@@ -178,6 +526,11 @@ static struct platform_device *sh7372_early_devices[] __initdata = { | |||
178 | &scif5_device, | 526 | &scif5_device, |
179 | &scif6_device, | 527 | &scif6_device, |
180 | &cmt10_device, | 528 | &cmt10_device, |
529 | &iic0_device, | ||
530 | &iic1_device, | ||
531 | &dma0_device, | ||
532 | &dma1_device, | ||
533 | &dma2_device, | ||
181 | }; | 534 | }; |
182 | 535 | ||
183 | void __init sh7372_add_standard_devices(void) | 536 | void __init sh7372_add_standard_devices(void) |
@@ -186,14 +539,8 @@ void __init sh7372_add_standard_devices(void) | |||
186 | ARRAY_SIZE(sh7372_early_devices)); | 539 | ARRAY_SIZE(sh7372_early_devices)); |
187 | } | 540 | } |
188 | 541 | ||
189 | #define SMSTPCR3 0xe615013c | ||
190 | #define SMSTPCR3_CMT1 (1 << 29) | ||
191 | |||
192 | void __init sh7372_add_early_devices(void) | 542 | void __init sh7372_add_early_devices(void) |
193 | { | 543 | { |
194 | /* enable clock to CMT1 */ | ||
195 | __raw_writel(__raw_readl(SMSTPCR3) & ~SMSTPCR3_CMT1, SMSTPCR3); | ||
196 | |||
197 | early_platform_add_devices(sh7372_early_devices, | 544 | early_platform_add_devices(sh7372_early_devices, |
198 | ARRAY_SIZE(sh7372_early_devices)); | 545 | ARRAY_SIZE(sh7372_early_devices)); |
199 | } | 546 | } |