diff options
Diffstat (limited to 'arch/arm/mach-kirkwood/common.c')
-rw-r--r-- | arch/arm/mach-kirkwood/common.c | 56 |
1 files changed, 53 insertions, 3 deletions
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c index b3404b7775b3..9f012551794d 100644 --- a/arch/arm/mach-kirkwood/common.c +++ b/arch/arm/mach-kirkwood/common.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <mach/kirkwood.h> | 24 | #include <mach/kirkwood.h> |
25 | #include <plat/cache-feroceon-l2.h> | 25 | #include <plat/cache-feroceon-l2.h> |
26 | #include <plat/ehci-orion.h> | 26 | #include <plat/ehci-orion.h> |
27 | #include <plat/mvsdio.h> | ||
27 | #include <plat/mv_xor.h> | 28 | #include <plat/mv_xor.h> |
28 | #include <plat/orion_nand.h> | 29 | #include <plat/orion_nand.h> |
29 | #include <plat/time.h> | 30 | #include <plat/time.h> |
@@ -254,7 +255,7 @@ static struct resource kirkwood_rtc_resource = { | |||
254 | .flags = IORESOURCE_MEM, | 255 | .flags = IORESOURCE_MEM, |
255 | }; | 256 | }; |
256 | 257 | ||
257 | void __init kirkwood_rtc_init(void) | 258 | static void __init kirkwood_rtc_init(void) |
258 | { | 259 | { |
259 | platform_device_register_simple("rtc-mv", -1, &kirkwood_rtc_resource, 1); | 260 | platform_device_register_simple("rtc-mv", -1, &kirkwood_rtc_resource, 1); |
260 | } | 261 | } |
@@ -296,6 +297,50 @@ void __init kirkwood_sata_init(struct mv_sata_platform_data *sata_data) | |||
296 | 297 | ||
297 | 298 | ||
298 | /***************************************************************************** | 299 | /***************************************************************************** |
300 | * SD/SDIO/MMC | ||
301 | ****************************************************************************/ | ||
302 | static struct resource mvsdio_resources[] = { | ||
303 | [0] = { | ||
304 | .start = SDIO_PHYS_BASE, | ||
305 | .end = SDIO_PHYS_BASE + SZ_1K - 1, | ||
306 | .flags = IORESOURCE_MEM, | ||
307 | }, | ||
308 | [1] = { | ||
309 | .start = IRQ_KIRKWOOD_SDIO, | ||
310 | .end = IRQ_KIRKWOOD_SDIO, | ||
311 | .flags = IORESOURCE_IRQ, | ||
312 | }, | ||
313 | }; | ||
314 | |||
315 | static u64 mvsdio_dmamask = 0xffffffffUL; | ||
316 | |||
317 | static struct platform_device kirkwood_sdio = { | ||
318 | .name = "mvsdio", | ||
319 | .id = -1, | ||
320 | .dev = { | ||
321 | .dma_mask = &mvsdio_dmamask, | ||
322 | .coherent_dma_mask = 0xffffffff, | ||
323 | }, | ||
324 | .num_resources = ARRAY_SIZE(mvsdio_resources), | ||
325 | .resource = mvsdio_resources, | ||
326 | }; | ||
327 | |||
328 | void __init kirkwood_sdio_init(struct mvsdio_platform_data *mvsdio_data) | ||
329 | { | ||
330 | u32 dev, rev; | ||
331 | |||
332 | kirkwood_pcie_id(&dev, &rev); | ||
333 | if (rev == 0) /* catch all Kirkwood Z0's */ | ||
334 | mvsdio_data->clock = 100000000; | ||
335 | else | ||
336 | mvsdio_data->clock = 200000000; | ||
337 | mvsdio_data->dram = &kirkwood_mbus_dram_info; | ||
338 | kirkwood_sdio.dev.platform_data = mvsdio_data; | ||
339 | platform_device_register(&kirkwood_sdio); | ||
340 | } | ||
341 | |||
342 | |||
343 | /***************************************************************************** | ||
299 | * SPI | 344 | * SPI |
300 | ****************************************************************************/ | 345 | ****************************************************************************/ |
301 | static struct orion_spi_info kirkwood_spi_plat_data = { | 346 | static struct orion_spi_info kirkwood_spi_plat_data = { |
@@ -502,7 +547,7 @@ static struct platform_device kirkwood_xor01_channel = { | |||
502 | }, | 547 | }, |
503 | }; | 548 | }; |
504 | 549 | ||
505 | void __init kirkwood_xor0_init(void) | 550 | static void __init kirkwood_xor0_init(void) |
506 | { | 551 | { |
507 | platform_device_register(&kirkwood_xor0_shared); | 552 | platform_device_register(&kirkwood_xor0_shared); |
508 | 553 | ||
@@ -600,7 +645,7 @@ static struct platform_device kirkwood_xor11_channel = { | |||
600 | }, | 645 | }, |
601 | }; | 646 | }; |
602 | 647 | ||
603 | void __init kirkwood_xor1_init(void) | 648 | static void __init kirkwood_xor1_init(void) |
604 | { | 649 | { |
605 | platform_device_register(&kirkwood_xor1_shared); | 650 | platform_device_register(&kirkwood_xor1_shared); |
606 | 651 | ||
@@ -708,4 +753,9 @@ void __init kirkwood_init(void) | |||
708 | #ifdef CONFIG_CACHE_FEROCEON_L2 | 753 | #ifdef CONFIG_CACHE_FEROCEON_L2 |
709 | kirkwood_l2_init(); | 754 | kirkwood_l2_init(); |
710 | #endif | 755 | #endif |
756 | |||
757 | /* internal devices that every board has */ | ||
758 | kirkwood_rtc_init(); | ||
759 | kirkwood_xor0_init(); | ||
760 | kirkwood_xor1_init(); | ||
711 | } | 761 | } |