1 From 39717c1328f6aa13330eded0e0e268993cfd1eea Mon Sep 17 00:00:00 2001
2 From: Dmitry Baryshkov <dbaryshkov@gmail.com>
3 Date: Tue, 12 Feb 2008 10:39:53 +0300
4 Subject: [PATCH 25/64] Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
7 arch/arm/mach-pxa/Makefile | 2 +-
8 arch/arm/mach-pxa/devices.c | 401 +++++++++++++++++++++++++++++++++++++++++++
9 2 files changed, 402 insertions(+), 1 deletions(-)
10 create mode 100644 arch/arm/mach-pxa/devices.c
12 diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
13 index 5cb0216..f276d24 100644
14 --- a/arch/arm/mach-pxa/Makefile
15 +++ b/arch/arm/mach-pxa/Makefile
18 # Common support (must be linked before board specific support)
19 obj-y += clock.o generic.o irq.o dma.o \
21 + time.o gpio.o devices.o
22 obj-$(CONFIG_PXA25x) += pxa25x.o
23 obj-$(CONFIG_PXA27x) += pxa27x.o
24 obj-$(CONFIG_PXA3xx) += pxa3xx.o mfp.o
25 diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
27 index 0000000..928131a
29 +++ b/arch/arm/mach-pxa/devices.c
31 +#include <linux/module.h>
32 +#include <linux/kernel.h>
33 +#include <linux/init.h>
34 +#include <linux/platform_device.h>
35 +#include <linux/dma-mapping.h>
37 +#include <asm/arch/gpio.h>
38 +#include <asm/arch/udc.h>
39 +#include <asm/arch/pxafb.h>
40 +#include <asm/arch/mmc.h>
41 +#include <asm/arch/irda.h>
42 +#include <asm/arch/i2c.h>
43 +#include <asm/arch/ohci.h>
49 +static u64 pxa25x_ssp_dma_mask = DMA_BIT_MASK(32);
51 +static struct resource pxa25x_resource_ssp[] = {
53 + .start = 0x41000000,
55 + .flags = IORESOURCE_MEM,
60 + .flags = IORESOURCE_IRQ,
66 + .flags = IORESOURCE_DMA,
72 + .flags = IORESOURCE_DMA,
76 +struct platform_device pxa25x_device_ssp = {
77 + .name = "pxa25x-ssp",
80 + .dma_mask = &pxa25x_ssp_dma_mask,
81 + .coherent_dma_mask = DMA_BIT_MASK(32),
83 + .resource = pxa25x_resource_ssp,
84 + .num_resources = ARRAY_SIZE(pxa25x_resource_ssp),
87 +static u64 pxa25x_nssp_dma_mask = DMA_BIT_MASK(32);
89 +static struct resource pxa25x_resource_nssp[] = {
91 + .start = 0x41400000,
93 + .flags = IORESOURCE_MEM,
98 + .flags = IORESOURCE_IRQ,
104 + .flags = IORESOURCE_DMA,
110 + .flags = IORESOURCE_DMA,
114 +struct platform_device pxa25x_device_nssp = {
115 + .name = "pxa25x-nssp",
118 + .dma_mask = &pxa25x_nssp_dma_mask,
119 + .coherent_dma_mask = DMA_BIT_MASK(32),
121 + .resource = pxa25x_resource_nssp,
122 + .num_resources = ARRAY_SIZE(pxa25x_resource_nssp),
125 +static u64 pxa25x_assp_dma_mask = DMA_BIT_MASK(32);
127 +static struct resource pxa25x_resource_assp[] = {
129 + .start = 0x41500000,
131 + .flags = IORESOURCE_MEM,
136 + .flags = IORESOURCE_IRQ,
142 + .flags = IORESOURCE_DMA,
148 + .flags = IORESOURCE_DMA,
152 +struct platform_device pxa25x_device_assp = {
153 + /* ASSP is basically equivalent to NSSP */
154 + .name = "pxa25x-nssp",
157 + .dma_mask = &pxa25x_assp_dma_mask,
158 + .coherent_dma_mask = DMA_BIT_MASK(32),
160 + .resource = pxa25x_resource_assp,
161 + .num_resources = ARRAY_SIZE(pxa25x_resource_assp),
163 +#endif /* CONFIG_PXA25x */
165 +#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
167 +static u64 pxa27x_ohci_dma_mask = DMA_BIT_MASK(32);
169 +static struct resource pxa27x_resource_ohci[] = {
171 + .start = 0x4C000000,
173 + .flags = IORESOURCE_MEM,
176 + .start = IRQ_USBH1,
178 + .flags = IORESOURCE_IRQ,
182 +struct platform_device pxa27x_device_ohci = {
183 + .name = "pxa27x-ohci",
186 + .dma_mask = &pxa27x_ohci_dma_mask,
187 + .coherent_dma_mask = DMA_BIT_MASK(32),
189 + .num_resources = ARRAY_SIZE(pxa27x_resource_ohci),
190 + .resource = pxa27x_resource_ohci,
193 +void __init pxa_set_ohci_info(struct pxaohci_platform_data *info)
195 + pxa_register_device(&pxa27x_device_ohci, info);
198 +static u64 pxa27x_ssp1_dma_mask = DMA_BIT_MASK(32);
200 +static struct resource pxa27x_resource_ssp1[] = {
202 + .start = 0x41000000,
204 + .flags = IORESOURCE_MEM,
209 + .flags = IORESOURCE_IRQ,
215 + .flags = IORESOURCE_DMA,
221 + .flags = IORESOURCE_DMA,
225 +struct platform_device pxa27x_device_ssp1 = {
226 + .name = "pxa27x-ssp",
229 + .dma_mask = &pxa27x_ssp1_dma_mask,
230 + .coherent_dma_mask = DMA_BIT_MASK(32),
232 + .resource = pxa27x_resource_ssp1,
233 + .num_resources = ARRAY_SIZE(pxa27x_resource_ssp1),
236 +static u64 pxa27x_ssp2_dma_mask = DMA_BIT_MASK(32);
238 +static struct resource pxa27x_resource_ssp2[] = {
240 + .start = 0x41700000,
242 + .flags = IORESOURCE_MEM,
247 + .flags = IORESOURCE_IRQ,
253 + .flags = IORESOURCE_DMA,
259 + .flags = IORESOURCE_DMA,
263 +struct platform_device pxa27x_device_ssp2 = {
264 + .name = "pxa27x-ssp",
267 + .dma_mask = &pxa27x_ssp2_dma_mask,
268 + .coherent_dma_mask = DMA_BIT_MASK(32),
270 + .resource = pxa27x_resource_ssp2,
271 + .num_resources = ARRAY_SIZE(pxa27x_resource_ssp2),
274 +static u64 pxa27x_ssp3_dma_mask = DMA_BIT_MASK(32);
276 +static struct resource pxa27x_resource_ssp3[] = {
278 + .start = 0x41900000,
280 + .flags = IORESOURCE_MEM,
285 + .flags = IORESOURCE_IRQ,
291 + .flags = IORESOURCE_DMA,
297 + .flags = IORESOURCE_DMA,
301 +struct platform_device pxa27x_device_ssp3 = {
302 + .name = "pxa27x-ssp",
305 + .dma_mask = &pxa27x_ssp3_dma_mask,
306 + .coherent_dma_mask = DMA_BIT_MASK(32),
308 + .resource = pxa27x_resource_ssp3,
309 + .num_resources = ARRAY_SIZE(pxa27x_resource_ssp3),
311 +#endif /* CONFIG_PXA27x || CONFIG_PXA3xx */
313 +#ifdef CONFIG_PXA3xx
314 +static u64 pxa3xx_ssp4_dma_mask = DMA_BIT_MASK(32);
316 +static struct resource pxa3xx_resource_ssp4[] = {
318 + .start = 0x41a00000,
320 + .flags = IORESOURCE_MEM,
325 + .flags = IORESOURCE_IRQ,
331 + .flags = IORESOURCE_DMA,
337 + .flags = IORESOURCE_DMA,
341 +struct platform_device pxa3xx_device_ssp4 = {
342 + /* PXA3xx SSP is basically equivalent to PXA27x */
343 + .name = "pxa27x-ssp",
346 + .dma_mask = &pxa3xx_ssp4_dma_mask,
347 + .coherent_dma_mask = DMA_BIT_MASK(32),
349 + .resource = pxa3xx_resource_ssp4,
350 + .num_resources = ARRAY_SIZE(pxa3xx_resource_ssp4),
353 +static struct resource pxa3xx_resources_mci2[] = {
355 + .start = 0x42000000,
357 + .flags = IORESOURCE_MEM,
362 + .flags = IORESOURCE_IRQ,
367 + .flags = IORESOURCE_DMA,
372 + .flags = IORESOURCE_DMA,
376 +struct platform_device pxa3xx_device_mci2 = {
377 + .name = "pxa2xx-mci",
380 + .dma_mask = &pxamci_dmamask,
381 + .coherent_dma_mask = 0xffffffff,
383 + .num_resources = ARRAY_SIZE(pxa3xx_resources_mci2),
384 + .resource = pxa3xx_resources_mci2,
387 +void __init pxa3xx_set_mci2_info(struct pxamci_platform_data *info)
389 + pxa_register_device(&pxa3xx_device_mci2, info);
392 +static struct resource pxa3xx_resources_mci3[] = {
394 + .start = 0x42500000,
396 + .flags = IORESOURCE_MEM,
401 + .flags = IORESOURCE_IRQ,
406 + .flags = IORESOURCE_DMA,
411 + .flags = IORESOURCE_DMA,
415 +struct platform_device pxa3xx_device_mci3 = {
416 + .name = "pxa2xx-mci",
419 + .dma_mask = &pxamci_dmamask,
420 + .coherent_dma_mask = 0xffffffff,
422 + .num_resources = ARRAY_SIZE(pxa3xx_resources_mci3),
423 + .resource = pxa3xx_resources_mci3,
426 +void __init pxa3xx_set_mci3_info(struct pxamci_platform_data *info)
428 + pxa_register_device(&pxa3xx_device_mci3, info);
431 +#endif /* CONFIG_PXA3xx */