~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/mach-pxa/devices.c

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: GPL-2.0
  2 #include <linux/module.h>
  3 #include <linux/kernel.h>
  4 #include <linux/init.h>
  5 #include <linux/platform_device.h>
  6 #include <linux/clkdev.h>
  7 #include <linux/clk-provider.h>
  8 #include <linux/dma-mapping.h>
  9 #include <linux/dmaengine.h>
 10 #include <linux/gpio-pxa.h>
 11 #include <linux/platform_data/i2c-pxa.h>
 12 #include <linux/soc/pxa/cpu.h>
 13 
 14 #include "udc.h"
 15 #include <linux/platform_data/video-pxafb.h>
 16 #include <linux/platform_data/mmc-pxamci.h>
 17 #include "irqs.h"
 18 #include <linux/platform_data/usb-ohci-pxa27x.h>
 19 #include <linux/platform_data/mmp_dma.h>
 20 
 21 #include "mfp-pxa2xx.h"
 22 #include "regs-ost.h"
 23 #include "reset.h"
 24 #include "devices.h"
 25 #include "generic.h"
 26 
 27 void __init pxa_register_device(struct platform_device *dev, void *data)
 28 {
 29         int ret;
 30 
 31         dev->dev.platform_data = data;
 32 
 33         ret = platform_device_register(dev);
 34         if (ret)
 35                 dev_err(&dev->dev, "unable to register device: %d\n", ret);
 36 }
 37 
 38 static struct resource pxa_resource_pmu = {
 39         .start  = IRQ_PMU,
 40         .end    = IRQ_PMU,
 41         .flags  = IORESOURCE_IRQ,
 42 };
 43 
 44 struct platform_device pxa_device_pmu = {
 45         .name           = "xscale-pmu",
 46         .id             = -1,
 47         .resource       = &pxa_resource_pmu,
 48         .num_resources  = 1,
 49 };
 50 
 51 static const struct resource pxamci_resources[] = {
 52         [0] = {
 53                 .start  = 0x41100000,
 54                 .end    = 0x41100fff,
 55                 .flags  = IORESOURCE_MEM,
 56         },
 57         [1] = {
 58                 .start  = IRQ_MMC,
 59                 .end    = IRQ_MMC,
 60                 .flags  = IORESOURCE_IRQ,
 61         },
 62 };
 63 
 64 void __init pxa_set_mci_info(const struct pxamci_platform_data *info,
 65                              const struct property_entry *props)
 66 {
 67         const struct platform_device_info mci_info = {
 68                 .name           = "pxa2xx-mci",
 69                 .id             = 0,
 70                 .res            = pxamci_resources,
 71                 .num_res        = ARRAY_SIZE(pxamci_resources),
 72                 .data           = info,
 73                 .size_data      = sizeof(*info),
 74                 .dma_mask       = 0xffffffffUL,
 75                 .properties     = props,
 76         };
 77         struct platform_device *mci_dev;
 78         int err;
 79 
 80         mci_dev = platform_device_register_full(&mci_info);
 81         err = PTR_ERR_OR_ZERO(mci_dev);
 82         if (err)
 83                 pr_err("Unable to create mci device: %d\n", err);
 84 }
 85 
 86 static struct pxa2xx_udc_mach_info pxa_udc_info = {
 87         .gpio_pullup = -1,
 88 };
 89 
 90 static struct resource pxa2xx_udc_resources[] = {
 91         [0] = {
 92                 .start  = 0x40600000,
 93                 .end    = 0x4060ffff,
 94                 .flags  = IORESOURCE_MEM,
 95         },
 96         [1] = {
 97                 .start  = IRQ_USB,
 98                 .end    = IRQ_USB,
 99                 .flags  = IORESOURCE_IRQ,
100         },
101 };
102 
103 static u64 udc_dma_mask = ~(u32)0;
104 
105 struct platform_device pxa25x_device_udc = {
106         .name           = "pxa25x-udc",
107         .id             = -1,
108         .resource       = pxa2xx_udc_resources,
109         .num_resources  = ARRAY_SIZE(pxa2xx_udc_resources),
110         .dev            =  {
111                 .platform_data  = &pxa_udc_info,
112                 .dma_mask       = &udc_dma_mask,
113         }
114 };
115 
116 struct platform_device pxa27x_device_udc = {
117         .name           = "pxa27x-udc",
118         .id             = -1,
119         .resource       = pxa2xx_udc_resources,
120         .num_resources  = ARRAY_SIZE(pxa2xx_udc_resources),
121         .dev            =  {
122                 .platform_data  = &pxa_udc_info,
123                 .dma_mask       = &udc_dma_mask,
124         }
125 };
126 
127 static struct resource pxafb_resources[] = {
128         [0] = {
129                 .start  = 0x44000000,
130                 .end    = 0x4400ffff,
131                 .flags  = IORESOURCE_MEM,
132         },
133         [1] = {
134                 .start  = IRQ_LCD,
135                 .end    = IRQ_LCD,
136                 .flags  = IORESOURCE_IRQ,
137         },
138 };
139 
140 static u64 fb_dma_mask = ~(u64)0;
141 
142 struct platform_device pxa_device_fb = {
143         .name           = "pxa2xx-fb",
144         .id             = -1,
145         .dev            = {
146                 .dma_mask       = &fb_dma_mask,
147                 .coherent_dma_mask = 0xffffffff,
148         },
149         .num_resources  = ARRAY_SIZE(pxafb_resources),
150         .resource       = pxafb_resources,
151 };
152 
153 void __init pxa_set_fb_info(struct device *parent, struct pxafb_mach_info *info)
154 {
155         pxa_device_fb.dev.parent = parent;
156         pxa_register_device(&pxa_device_fb, info);
157 }
158 
159 static struct resource pxa_resource_ffuart[] = {
160         {
161                 .start  = 0x40100000,
162                 .end    = 0x40100023,
163                 .flags  = IORESOURCE_MEM,
164         }, {
165                 .start  = IRQ_FFUART,
166                 .end    = IRQ_FFUART,
167                 .flags  = IORESOURCE_IRQ,
168         }
169 };
170 
171 struct platform_device pxa_device_ffuart = {
172         .name           = "pxa2xx-uart",
173         .id             = 0,
174         .resource       = pxa_resource_ffuart,
175         .num_resources  = ARRAY_SIZE(pxa_resource_ffuart),
176 };
177 
178 void __init pxa_set_ffuart_info(void *info)
179 {
180         pxa_register_device(&pxa_device_ffuart, info);
181 }
182 
183 static struct resource pxa_resource_btuart[] = {
184         {
185                 .start  = 0x40200000,
186                 .end    = 0x40200023,
187                 .flags  = IORESOURCE_MEM,
188         }, {
189                 .start  = IRQ_BTUART,
190                 .end    = IRQ_BTUART,
191                 .flags  = IORESOURCE_IRQ,
192         }
193 };
194 
195 struct platform_device pxa_device_btuart = {
196         .name           = "pxa2xx-uart",
197         .id             = 1,
198         .resource       = pxa_resource_btuart,
199         .num_resources  = ARRAY_SIZE(pxa_resource_btuart),
200 };
201 
202 void __init pxa_set_btuart_info(void *info)
203 {
204         pxa_register_device(&pxa_device_btuart, info);
205 }
206 
207 static struct resource pxa_resource_stuart[] = {
208         {
209                 .start  = 0x40700000,
210                 .end    = 0x40700023,
211                 .flags  = IORESOURCE_MEM,
212         }, {
213                 .start  = IRQ_STUART,
214                 .end    = IRQ_STUART,
215                 .flags  = IORESOURCE_IRQ,
216         }
217 };
218 
219 struct platform_device pxa_device_stuart = {
220         .name           = "pxa2xx-uart",
221         .id             = 2,
222         .resource       = pxa_resource_stuart,
223         .num_resources  = ARRAY_SIZE(pxa_resource_stuart),
224 };
225 
226 void __init pxa_set_stuart_info(void *info)
227 {
228         pxa_register_device(&pxa_device_stuart, info);
229 }
230 
231 static struct resource pxa_resource_hwuart[] = {
232         {
233                 .start  = 0x41600000,
234                 .end    = 0x4160002F,
235                 .flags  = IORESOURCE_MEM,
236         }, {
237                 .start  = IRQ_HWUART,
238                 .end    = IRQ_HWUART,
239                 .flags  = IORESOURCE_IRQ,
240         }
241 };
242 
243 struct platform_device pxa_device_hwuart = {
244         .name           = "pxa2xx-uart",
245         .id             = 3,
246         .resource       = pxa_resource_hwuart,
247         .num_resources  = ARRAY_SIZE(pxa_resource_hwuart),
248 };
249 
250 void __init pxa_set_hwuart_info(void *info)
251 {
252         if (cpu_is_pxa255())
253                 pxa_register_device(&pxa_device_hwuart, info);
254         else
255                 pr_info("UART: Ignoring attempt to register HWUART on non-PXA255 hardware");
256 }
257 
258 static struct resource pxai2c_resources[] = {
259         {
260                 .start  = 0x40301680,
261                 .end    = 0x403016a3,
262                 .flags  = IORESOURCE_MEM,
263         }, {
264                 .start  = IRQ_I2C,
265                 .end    = IRQ_I2C,
266                 .flags  = IORESOURCE_IRQ,
267         },
268 };
269 
270 struct platform_device pxa_device_i2c = {
271         .name           = "pxa2xx-i2c",
272         .id             = 0,
273         .resource       = pxai2c_resources,
274         .num_resources  = ARRAY_SIZE(pxai2c_resources),
275 };
276 
277 void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info)
278 {
279         pxa_register_device(&pxa_device_i2c, info);
280 }
281 
282 #ifdef CONFIG_PXA27x
283 static struct resource pxa27x_resources_i2c_power[] = {
284         {
285                 .start  = 0x40f00180,
286                 .end    = 0x40f001a3,
287                 .flags  = IORESOURCE_MEM,
288         }, {
289                 .start  = IRQ_PWRI2C,
290                 .end    = IRQ_PWRI2C,
291                 .flags  = IORESOURCE_IRQ,
292         },
293 };
294 
295 struct platform_device pxa27x_device_i2c_power = {
296         .name           = "pxa2xx-i2c",
297         .id             = 1,
298         .resource       = pxa27x_resources_i2c_power,
299         .num_resources  = ARRAY_SIZE(pxa27x_resources_i2c_power),
300 };
301 #endif
302 
303 static struct resource pxai2s_resources[] = {
304         {
305                 .start  = 0x40400000,
306                 .end    = 0x40400083,
307                 .flags  = IORESOURCE_MEM,
308         }, {
309                 .start  = IRQ_I2S,
310                 .end    = IRQ_I2S,
311                 .flags  = IORESOURCE_IRQ,
312         },
313 };
314 
315 struct platform_device pxa_device_i2s = {
316         .name           = "pxa2xx-i2s",
317         .id             = -1,
318         .resource       = pxai2s_resources,
319         .num_resources  = ARRAY_SIZE(pxai2s_resources),
320 };
321 
322 struct platform_device pxa_device_asoc_ssp1 = {
323         .name           = "pxa-ssp-dai",
324         .id             = 0,
325 };
326 
327 struct platform_device pxa_device_asoc_ssp2= {
328         .name           = "pxa-ssp-dai",
329         .id             = 1,
330 };
331 
332 struct platform_device pxa_device_asoc_ssp3 = {
333         .name           = "pxa-ssp-dai",
334         .id             = 2,
335 };
336 
337 struct platform_device pxa_device_asoc_ssp4 = {
338         .name           = "pxa-ssp-dai",
339         .id             = 3,
340 };
341 
342 struct platform_device pxa_device_asoc_platform = {
343         .name           = "pxa-pcm-audio",
344         .id             = -1,
345 };
346 
347 static struct resource pxa_rtc_resources[] = {
348         [0] = {
349                 .start  = 0x40900000,
350                 .end    = 0x40900000 + 0x3b,
351                 .flags  = IORESOURCE_MEM,
352         },
353         [1] = {
354                 .start  = IRQ_RTC1Hz,
355                 .end    = IRQ_RTC1Hz,
356                 .name   = "rtc 1Hz",
357                 .flags  = IORESOURCE_IRQ,
358         },
359         [2] = {
360                 .start  = IRQ_RTCAlrm,
361                 .end    = IRQ_RTCAlrm,
362                 .name   = "rtc alarm",
363                 .flags  = IORESOURCE_IRQ,
364         },
365 };
366 
367 struct platform_device pxa_device_rtc = {
368         .name           = "pxa-rtc",
369         .id             = -1,
370         .num_resources  = ARRAY_SIZE(pxa_rtc_resources),
371         .resource       = pxa_rtc_resources,
372 };
373 
374 struct platform_device sa1100_device_rtc = {
375         .name           = "sa1100-rtc",
376         .id             = -1,
377         .num_resources  = ARRAY_SIZE(pxa_rtc_resources),
378         .resource       = pxa_rtc_resources,
379 };
380 
381 #ifdef CONFIG_PXA25x
382 
383 static struct resource pxa25x_resource_pwm0[] = {
384         [0] = {
385                 .start  = 0x40b00000,
386                 .end    = 0x40b0000f,
387                 .flags  = IORESOURCE_MEM,
388         },
389 };
390 
391 struct platform_device pxa25x_device_pwm0 = {
392         .name           = "pxa25x-pwm",
393         .id             = 0,
394         .resource       = pxa25x_resource_pwm0,
395         .num_resources  = ARRAY_SIZE(pxa25x_resource_pwm0),
396 };
397 
398 static struct resource pxa25x_resource_pwm1[] = {
399         [0] = {
400                 .start  = 0x40c00000,
401                 .end    = 0x40c0000f,
402                 .flags  = IORESOURCE_MEM,
403         },
404 };
405 
406 struct platform_device pxa25x_device_pwm1 = {
407         .name           = "pxa25x-pwm",
408         .id             = 1,
409         .resource       = pxa25x_resource_pwm1,
410         .num_resources  = ARRAY_SIZE(pxa25x_resource_pwm1),
411 };
412 
413 static u64 pxa25x_ssp_dma_mask = DMA_BIT_MASK(32);
414 
415 static struct resource pxa25x_resource_ssp[] = {
416         [0] = {
417                 .start  = 0x41000000,
418                 .end    = 0x4100001f,
419                 .flags  = IORESOURCE_MEM,
420         },
421         [1] = {
422                 .start  = IRQ_SSP,
423                 .end    = IRQ_SSP,
424                 .flags  = IORESOURCE_IRQ,
425         },
426 };
427 
428 struct platform_device pxa25x_device_ssp = {
429         .name           = "pxa25x-ssp",
430         .id             = 0,
431         .dev            = {
432                 .dma_mask = &pxa25x_ssp_dma_mask,
433                 .coherent_dma_mask = DMA_BIT_MASK(32),
434         },
435         .resource       = pxa25x_resource_ssp,
436         .num_resources  = ARRAY_SIZE(pxa25x_resource_ssp),
437 };
438 
439 static u64 pxa25x_nssp_dma_mask = DMA_BIT_MASK(32);
440 
441 static struct resource pxa25x_resource_nssp[] = {
442         [0] = {
443                 .start  = 0x41400000,
444                 .end    = 0x4140002f,
445                 .flags  = IORESOURCE_MEM,
446         },
447         [1] = {
448                 .start  = IRQ_NSSP,
449                 .end    = IRQ_NSSP,
450                 .flags  = IORESOURCE_IRQ,
451         },
452 };
453 
454 struct platform_device pxa25x_device_nssp = {
455         .name           = "pxa25x-nssp",
456         .id             = 1,
457         .dev            = {
458                 .dma_mask = &pxa25x_nssp_dma_mask,
459                 .coherent_dma_mask = DMA_BIT_MASK(32),
460         },
461         .resource       = pxa25x_resource_nssp,
462         .num_resources  = ARRAY_SIZE(pxa25x_resource_nssp),
463 };
464 
465 static u64 pxa25x_assp_dma_mask = DMA_BIT_MASK(32);
466 
467 static struct resource pxa25x_resource_assp[] = {
468         [0] = {
469                 .start  = 0x41500000,
470                 .end    = 0x4150002f,
471                 .flags  = IORESOURCE_MEM,
472         },
473         [1] = {
474                 .start  = IRQ_ASSP,
475                 .end    = IRQ_ASSP,
476                 .flags  = IORESOURCE_IRQ,
477         },
478 };
479 
480 struct platform_device pxa25x_device_assp = {
481         /* ASSP is basically equivalent to NSSP */
482         .name           = "pxa25x-nssp",
483         .id             = 2,
484         .dev            = {
485                 .dma_mask = &pxa25x_assp_dma_mask,
486                 .coherent_dma_mask = DMA_BIT_MASK(32),
487         },
488         .resource       = pxa25x_resource_assp,
489         .num_resources  = ARRAY_SIZE(pxa25x_resource_assp),
490 };
491 #endif /* CONFIG_PXA25x */
492 
493 #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
494 static u64 pxa27x_ohci_dma_mask = DMA_BIT_MASK(32);
495 
496 static struct resource pxa27x_resource_ohci[] = {
497         [0] = {
498                 .start  = 0x4C000000,
499                 .end    = 0x4C00ff6f,
500                 .flags  = IORESOURCE_MEM,
501         },
502         [1] = {
503                 .start  = IRQ_USBH1,
504                 .end    = IRQ_USBH1,
505                 .flags  = IORESOURCE_IRQ,
506         },
507 };
508 
509 struct platform_device pxa27x_device_ohci = {
510         .name           = "pxa27x-ohci",
511         .id             = -1,
512         .dev            = {
513                 .dma_mask = &pxa27x_ohci_dma_mask,
514                 .coherent_dma_mask = DMA_BIT_MASK(32),
515         },
516         .num_resources  = ARRAY_SIZE(pxa27x_resource_ohci),
517         .resource       = pxa27x_resource_ohci,
518 };
519 
520 void __init pxa_set_ohci_info(struct pxaohci_platform_data *info)
521 {
522         pxa_register_device(&pxa27x_device_ohci, info);
523 }
524 #endif /* CONFIG_PXA27x || CONFIG_PXA3xx */
525 
526 #if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
527 static u64 pxa27x_ssp1_dma_mask = DMA_BIT_MASK(32);
528 
529 static struct resource pxa27x_resource_ssp1[] = {
530         [0] = {
531                 .start  = 0x41000000,
532                 .end    = 0x4100003f,
533                 .flags  = IORESOURCE_MEM,
534         },
535         [1] = {
536                 .start  = IRQ_SSP,
537                 .end    = IRQ_SSP,
538                 .flags  = IORESOURCE_IRQ,
539         },
540 };
541 
542 struct platform_device pxa27x_device_ssp1 = {
543         .name           = "pxa27x-ssp",
544         .id             = 0,
545         .dev            = {
546                 .dma_mask = &pxa27x_ssp1_dma_mask,
547                 .coherent_dma_mask = DMA_BIT_MASK(32),
548         },
549         .resource       = pxa27x_resource_ssp1,
550         .num_resources  = ARRAY_SIZE(pxa27x_resource_ssp1),
551 };
552 
553 static u64 pxa27x_ssp2_dma_mask = DMA_BIT_MASK(32);
554 
555 static struct resource pxa27x_resource_ssp2[] = {
556         [0] = {
557                 .start  = 0x41700000,
558                 .end    = 0x4170003f,
559                 .flags  = IORESOURCE_MEM,
560         },
561         [1] = {
562                 .start  = IRQ_SSP2,
563                 .end    = IRQ_SSP2,
564                 .flags  = IORESOURCE_IRQ,
565         },
566 };
567 
568 struct platform_device pxa27x_device_ssp2 = {
569         .name           = "pxa27x-ssp",
570         .id             = 1,
571         .dev            = {
572                 .dma_mask = &pxa27x_ssp2_dma_mask,
573                 .coherent_dma_mask = DMA_BIT_MASK(32),
574         },
575         .resource       = pxa27x_resource_ssp2,
576         .num_resources  = ARRAY_SIZE(pxa27x_resource_ssp2),
577 };
578 
579 static u64 pxa27x_ssp3_dma_mask = DMA_BIT_MASK(32);
580 
581 static struct resource pxa27x_resource_ssp3[] = {
582         [0] = {
583                 .start  = 0x41900000,
584                 .end    = 0x4190003f,
585                 .flags  = IORESOURCE_MEM,
586         },
587         [1] = {
588                 .start  = IRQ_SSP3,
589                 .end    = IRQ_SSP3,
590                 .flags  = IORESOURCE_IRQ,
591         },
592 };
593 
594 struct platform_device pxa27x_device_ssp3 = {
595         .name           = "pxa27x-ssp",
596         .id             = 2,
597         .dev            = {
598                 .dma_mask = &pxa27x_ssp3_dma_mask,
599                 .coherent_dma_mask = DMA_BIT_MASK(32),
600         },
601         .resource       = pxa27x_resource_ssp3,
602         .num_resources  = ARRAY_SIZE(pxa27x_resource_ssp3),
603 };
604 
605 static struct resource pxa27x_resource_pwm0[] = {
606         [0] = {
607                 .start  = 0x40b00000,
608                 .end    = 0x40b0001f,
609                 .flags  = IORESOURCE_MEM,
610         },
611 };
612 
613 struct platform_device pxa27x_device_pwm0 = {
614         .name           = "pxa27x-pwm",
615         .id             = 0,
616         .resource       = pxa27x_resource_pwm0,
617         .num_resources  = ARRAY_SIZE(pxa27x_resource_pwm0),
618 };
619 
620 static struct resource pxa27x_resource_pwm1[] = {
621         [0] = {
622                 .start  = 0x40c00000,
623                 .end    = 0x40c0001f,
624                 .flags  = IORESOURCE_MEM,
625         },
626 };
627 
628 struct platform_device pxa27x_device_pwm1 = {
629         .name           = "pxa27x-pwm",
630         .id             = 1,
631         .resource       = pxa27x_resource_pwm1,
632         .num_resources  = ARRAY_SIZE(pxa27x_resource_pwm1),
633 };
634 #endif /* CONFIG_PXA27x || CONFIG_PXA3xx */
635 
636 #if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x)
637 const struct software_node pxa2xx_gpiochip_node = {
638         .name   = "gpio-pxa",
639 };
640 
641 struct resource pxa_resource_gpio[] = {
642         {
643                 .start  = 0x40e00000,
644                 .end    = 0x40e0ffff,
645                 .flags  = IORESOURCE_MEM,
646         }, {
647                 .start  = IRQ_GPIO0,
648                 .end    = IRQ_GPIO0,
649                 .name   = "gpio0",
650                 .flags  = IORESOURCE_IRQ,
651         }, {
652                 .start  = IRQ_GPIO1,
653                 .end    = IRQ_GPIO1,
654                 .name   = "gpio1",
655                 .flags  = IORESOURCE_IRQ,
656         }, {
657                 .start  = IRQ_GPIO_2_x,
658                 .end    = IRQ_GPIO_2_x,
659                 .name   = "gpio_mux",
660                 .flags  = IORESOURCE_IRQ,
661         },
662 };
663 
664 static struct pxa_gpio_platform_data pxa2xx_gpio_info = {
665         .irq_base       = PXA_GPIO_TO_IRQ(0),
666         .gpio_set_wake  = gpio_set_wake,
667 };
668 
669 struct platform_device pxa25x_device_gpio = {
670         .name           = "pxa25x-gpio",
671         .id             = -1,
672         .num_resources  = ARRAY_SIZE(pxa_resource_gpio),
673         .resource       = pxa_resource_gpio,
674         .dev            = {
675                 .platform_data  = &pxa2xx_gpio_info,
676         },
677 };
678 
679 struct platform_device pxa27x_device_gpio = {
680         .name           = "pxa27x-gpio",
681         .id             = -1,
682         .num_resources  = ARRAY_SIZE(pxa_resource_gpio),
683         .resource       = pxa_resource_gpio,
684         .dev            = {
685                 .platform_data  = &pxa2xx_gpio_info,
686         },
687 };
688 #endif /* CONFIG_PXA25x || CONFIG_PXA27x */
689 
690 static struct resource pxa_dma_resource[] = {
691         [0] = {
692                 .start  = 0x40000000,
693                 .end    = 0x4000ffff,
694                 .flags  = IORESOURCE_MEM,
695         },
696         [1] = {
697                 .start  = IRQ_DMA,
698                 .end    = IRQ_DMA,
699                 .flags  = IORESOURCE_IRQ,
700         },
701 };
702 
703 static u64 pxadma_dmamask = 0xffffffffUL;
704 
705 static struct platform_device pxa2xx_pxa_dma = {
706         .name           = "pxa-dma",
707         .id             = 0,
708         .dev            = {
709                 .dma_mask = &pxadma_dmamask,
710                 .coherent_dma_mask = 0xffffffff,
711         },
712         .num_resources  = ARRAY_SIZE(pxa_dma_resource),
713         .resource       = pxa_dma_resource,
714 };
715 
716 void __init pxa2xx_set_dmac_info(struct mmp_dma_platdata *dma_pdata)
717 {
718         pxa_register_device(&pxa2xx_pxa_dma, dma_pdata);
719 }
720 
721 void __init pxa_register_wdt(unsigned int reset_status)
722 {
723         struct resource res = DEFINE_RES_MEM(OST_PHYS, OST_LEN);
724 
725         reset_status &= RESET_STATUS_WATCHDOG;
726         platform_device_register_resndata(NULL, "sa1100_wdt", -1, &res, 1,
727                                           &reset_status, sizeof(reset_status));
728 }
729 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php