]> git.karo-electronics.de Git - karo-tx-linux.git/blob - arch/arm/plat-mxc/include/mach/devices-common.h
93e73f4ee34d4605612c5b87004c10de55a3ae9a
[karo-tx-linux.git] / arch / arm / plat-mxc / include / mach / devices-common.h
1 /*
2  * Copyright (C) 2009-2010 Pengutronix
3  * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4  *
5  * This program is free software; you can redistribute it and/or modify it under
6  * the terms of the GNU General Public License version 2 as published by the
7  * Free Software Foundation.
8  */
9 #include <linux/kernel.h>
10 #include <linux/platform_device.h>
11 #include <linux/init.h>
12
13 struct platform_device *imx_add_platform_device_dmamask(
14                 const char *name, int id,
15                 const struct resource *res, unsigned int num_resources,
16                 const void *data, size_t size_data, u64 dmamask);
17
18 static inline struct platform_device *imx_add_platform_device(
19                 const char *name, int id,
20                 const struct resource *res, unsigned int num_resources,
21                 const void *data, size_t size_data)
22 {
23         return imx_add_platform_device_dmamask(
24                         name, id, res, num_resources, data, size_data, 0);
25 }
26
27 struct imx_dma_data {
28         resource_size_t iobase;
29 };
30 struct platform_device *__init imx_add_dma(const struct imx_dma_data *data);
31
32 #include <linux/fec.h>
33 struct imx_fec_data {
34         resource_size_t iobase;
35         resource_size_t irq;
36 };
37 struct platform_device *__init imx_add_fec(
38                 const struct imx_fec_data *data,
39                 const struct fec_platform_data *pdata);
40
41 #include <linux/can/platform/flexcan.h>
42 struct imx_flexcan_data {
43         int id;
44         resource_size_t iobase;
45         resource_size_t iosize;
46         resource_size_t irq;
47 };
48 struct platform_device *__init imx_add_flexcan(
49                 const struct imx_flexcan_data *data,
50                 const struct flexcan_platform_data *pdata);
51
52 #include <linux/fsl_devices.h>
53 struct imx_fsl_usb2_udc_data {
54         resource_size_t iobase;
55         resource_size_t irq;
56 };
57 struct platform_device *__init imx_add_fsl_usb2_udc(
58                 const struct imx_fsl_usb2_udc_data *data,
59                 const struct fsl_usb2_platform_data *pdata);
60
61 #include <linux/gpio_keys.h>
62 struct platform_device *__init imx_add_gpio_keys(
63                 const struct gpio_keys_platform_data *pdata);
64
65 #include <mach/mx21-usbhost.h>
66 struct imx_imx21_hcd_data {
67         resource_size_t iobase;
68         resource_size_t irq;
69 };
70 struct platform_device *__init imx_add_imx21_hcd(
71                 const struct imx_imx21_hcd_data *data,
72                 const struct mx21_usbh_platform_data *pdata);
73
74 struct imx_imx2_wdt_data {
75         int id;
76         resource_size_t iobase;
77         resource_size_t iosize;
78 };
79 struct platform_device *__init imx_add_imx2_wdt(
80                 const struct imx_imx2_wdt_data *data);
81
82 struct imx_imxdi_rtc_data {
83         resource_size_t iobase;
84         resource_size_t irq;
85 };
86 struct platform_device *__init imx_add_imxdi_rtc(
87                 const struct imx_imxdi_rtc_data *data);
88
89 struct imx_srtc_data {
90         resource_size_t iobase;
91         resource_size_t irq;
92 };
93 struct platform_device *__init imx_add_srtc(
94                 const struct imx_srtc_data *data);
95
96 struct imx_snvs_rtc_data {
97         resource_size_t iobase;
98         resource_size_t irq;
99 };
100 struct platform_device *__init imx_add_snvs_rtc(
101                 const struct imx_snvs_rtc_data *data);
102
103
104 #include <mach/imxfb.h>
105 struct imx_imx_fb_data {
106         resource_size_t iobase;
107         resource_size_t iosize;
108         resource_size_t irq;
109 };
110 struct platform_device *__init imx_add_imx_fb(
111                 const struct imx_imx_fb_data *data,
112                 const struct imx_fb_platform_data *pdata);
113
114 #include <mach/i2c.h>
115 struct imx_imx_i2c_data {
116         int id;
117         resource_size_t iobase;
118         resource_size_t iosize;
119         resource_size_t irq;
120 };
121 struct platform_device *__init imx_add_imx_i2c(
122                 const struct imx_imx_i2c_data *data,
123                 const struct imxi2c_platform_data *pdata);
124
125 #include <linux/input/matrix_keypad.h>
126 struct imx_imx_keypad_data {
127         resource_size_t iobase;
128         resource_size_t iosize;
129         resource_size_t irq;
130 };
131 struct platform_device *__init imx_add_imx_keypad(
132                 const struct imx_imx_keypad_data *data,
133                 const struct matrix_keymap_data *pdata);
134
135 #include <mach/ssi.h>
136 struct imx_imx_ssi_data {
137         int id;
138         resource_size_t iobase;
139         resource_size_t iosize;
140         resource_size_t irq;
141         resource_size_t dmatx0;
142         resource_size_t dmarx0;
143         resource_size_t dmatx1;
144         resource_size_t dmarx1;
145 };
146 struct platform_device *__init imx_add_imx_ssi(
147                 const struct imx_imx_ssi_data *data,
148                 const struct imx_ssi_platform_data *pdata);
149
150 #include <mach/esai.h>
151 struct imx_imx_esai_data {
152         int id;
153         resource_size_t iobase;
154         resource_size_t iosize;
155         resource_size_t irq;
156         resource_size_t dmatx;
157         resource_size_t dmarx;
158 };
159 struct platform_device *__init imx_add_imx_esai(
160                 const struct imx_imx_esai_data *data,
161                 const struct imx_esai_platform_data *pdata);
162
163 #include <mach/imx-uart.h>
164 struct imx_imx_uart_3irq_data {
165         int id;
166         resource_size_t iobase;
167         resource_size_t iosize;
168         resource_size_t irqrx;
169         resource_size_t irqtx;
170         resource_size_t irqrts;
171 };
172 struct platform_device *__init imx_add_imx_uart_3irq(
173                 const struct imx_imx_uart_3irq_data *data,
174                 const struct imxuart_platform_data *pdata);
175
176 struct imx_imx_uart_1irq_data {
177         int id;
178         resource_size_t iobase;
179         resource_size_t iosize;
180         resource_size_t irq;
181 };
182 struct platform_device *__init imx_add_imx_uart_1irq(
183                 const struct imx_imx_uart_1irq_data *data,
184                 const struct imxuart_platform_data *pdata);
185
186 #include <mach/usb.h>
187 struct imx_imx_udc_data {
188         resource_size_t iobase;
189         resource_size_t iosize;
190         resource_size_t irq0;
191         resource_size_t irq1;
192         resource_size_t irq2;
193         resource_size_t irq3;
194         resource_size_t irq4;
195         resource_size_t irq5;
196         resource_size_t irq6;
197 };
198 struct platform_device *__init imx_add_imx_udc(
199                 const struct imx_imx_udc_data *data,
200                 const struct imxusb_platform_data *pdata);
201
202 #include <mach/ipu.h>
203 #include <mach/mx3fb.h>
204 #include <mach/mx3_camera.h>
205 struct imx_ipu_core_data {
206         resource_size_t iobase;
207         resource_size_t synirq;
208         resource_size_t errirq;
209 };
210 struct platform_device *__init imx_add_ipu_core(
211                 const struct imx_ipu_core_data *data,
212                 const struct ipu_platform_data *pdata);
213 struct platform_device *__init imx_alloc_mx3_camera(
214                 const struct imx_ipu_core_data *data,
215                 const struct mx3_camera_pdata *pdata);
216 struct platform_device *__init imx_add_mx3_sdc_fb(
217                 const struct imx_ipu_core_data *data,
218                 struct mx3fb_platform_data *pdata);
219
220 #include <mach/mx1_camera.h>
221 struct imx_mx1_camera_data {
222         resource_size_t iobase;
223         resource_size_t iosize;
224         resource_size_t irq;
225 };
226 struct platform_device *__init imx_add_mx1_camera(
227                 const struct imx_mx1_camera_data *data,
228                 const struct mx1_camera_pdata *pdata);
229
230 #include <mach/mx2_cam.h>
231 struct imx_mx2_camera_data {
232         resource_size_t iobasecsi;
233         resource_size_t iosizecsi;
234         resource_size_t irqcsi;
235         resource_size_t iobaseemmaprp;
236         resource_size_t iosizeemmaprp;
237         resource_size_t irqemmaprp;
238 };
239 struct platform_device *__init imx_add_mx2_camera(
240                 const struct imx_mx2_camera_data *data,
241                 const struct mx2_camera_platform_data *pdata);
242
243 #include <mach/mxc_ehci.h>
244 struct imx_mxc_ehci_data {
245         int id;
246         resource_size_t iobase;
247         resource_size_t irq;
248 };
249 struct platform_device *__init imx_add_mxc_ehci(
250                 const struct imx_mxc_ehci_data *data,
251                 const struct mxc_usbh_platform_data *pdata);
252
253 struct platform_device *__init imx_add_fsl_ehci(
254                 const struct imx_mxc_ehci_data *data,
255                 const struct fsl_usb2_platform_data *pdata);
256
257 #include <mach/mmc.h>
258 struct imx_mxc_mmc_data {
259         int id;
260         resource_size_t iobase;
261         resource_size_t iosize;
262         resource_size_t irq;
263         resource_size_t dmareq;
264 };
265 struct platform_device *__init imx_add_mxc_mmc(
266                 const struct imx_mxc_mmc_data *data,
267                 const struct imxmmc_platform_data *pdata);
268
269 #include <mach/mxc_nand.h>
270 struct imx_mxc_nand_data {
271         /*
272          * id is traditionally 0, but -1 is more appropriate.  We use -1 for new
273          * machines but don't change existing devices as the nand device usually
274          * appears in the kernel command line to pass its partitioning.
275          */
276         int id;
277         resource_size_t iobase;
278         resource_size_t iosize;
279         resource_size_t axibase;
280         resource_size_t irq;
281 };
282 struct platform_device *__init imx_add_mxc_nand(
283                 const struct imx_mxc_nand_data *data,
284                 const struct mxc_nand_platform_data *pdata);
285
286 struct imx_mxc_pwm_data {
287         int id;
288         resource_size_t iobase;
289         resource_size_t iosize;
290         resource_size_t irq;
291 };
292 struct platform_device *__init imx_add_mxc_pwm(
293                 const struct imx_mxc_pwm_data *data);
294
295 /* mxc_rtc */
296 struct imx_mxc_rtc_data {
297         resource_size_t iobase;
298         resource_size_t irq;
299 };
300 struct platform_device *__init imx_add_mxc_rtc(
301                 const struct imx_mxc_rtc_data *data);
302
303 /* mxc_w1 */
304 struct imx_mxc_w1_data {
305         resource_size_t iobase;
306 };
307 struct platform_device *__init imx_add_mxc_w1(
308                 const struct imx_mxc_w1_data *data);
309
310 #include <mach/esdhc.h>
311 struct imx_sdhci_esdhc_imx_data {
312         int id;
313         resource_size_t iobase;
314         resource_size_t irq;
315 };
316 struct platform_device *__init imx_add_sdhci_esdhc_imx(
317                 const struct imx_sdhci_esdhc_imx_data *data,
318                 const struct esdhc_platform_data *pdata);
319
320 #include <mach/spi.h>
321 struct imx_spi_imx_data {
322         const char *devid;
323         int id;
324         resource_size_t iobase;
325         resource_size_t iosize;
326         int irq;
327 };
328 struct platform_device *__init imx_add_spi_imx(
329                 const struct imx_spi_imx_data *data,
330                 const struct spi_imx_master *pdata);
331
332 #include <mach/ipu-v3.h>
333 struct imx_ipuv3_data {
334         resource_size_t iobase;
335         resource_size_t iosize;
336         resource_size_t irq_err;
337         resource_size_t irq;
338         unsigned int irq_start;
339         int (*init) (int);
340         void (*pg) (int);
341 };
342 struct platform_device *__init imx_add_ipuv3(
343                 const int id,
344                 const struct imx_ipuv3_data *data,
345                 struct imx_ipuv3_platform_data *pdata);
346
347 struct platform_device *__init imx_add_ipuv3_fb(
348                 const int id,
349                 const struct ipuv3_fb_platform_data *pdata);
350
351 #include <mach/mxc_vpu.h>
352 struct imx_vpu_data {
353         resource_size_t iobase;
354         resource_size_t irq_ipi;
355         resource_size_t irq_jpg;
356         bool iram_enable;
357         int iram_size;
358         void (*reset) (void);
359         void (*pg) (int);
360 };
361 struct platform_device *__init imx_add_vpu(
362                 const struct imx_vpu_data *data);
363
364 #include <mach/mxc_dvfs.h>
365 struct imx_dvfs_core_data {
366         resource_size_t iobase;
367         resource_size_t irq;
368 };
369 struct platform_device *__init imx_add_dvfs_core(
370                 const struct imx_dvfs_core_data *data,
371                 const struct mxc_dvfs_platform_data *pdata);
372 struct platform_device *__init imx_add_busfreq(void);
373
374 #include <linux/fsl_devices.h>
375 struct imx_tve_data {
376         resource_size_t iobase;
377         resource_size_t irq;
378 };
379 struct platform_device *__init imx_add_tve(
380                 const struct imx_tve_data *data,
381                 const struct fsl_mxc_tve_platform_data *pdata);
382
383 #include <linux/ahci_platform.h>
384 struct imx_ahci_data {
385         int id;
386         resource_size_t iobase;
387         resource_size_t irq;
388 };
389 struct platform_device *__init imx_add_ahci(
390                 const struct imx_ahci_data *data,
391                 const struct ahci_platform_data *pdata);
392
393 struct imx_iim_data {
394         resource_size_t iobase;
395         resource_size_t irq;
396 };
397 struct platform_device *__init imx_add_iim(
398                 const struct imx_iim_data *data,
399                 const struct mxc_iim_platform_data *pdata);
400
401 #include <mach/mxc_gpu.h>
402 struct imx_mxc_gpu_data {
403         resource_size_t irq_2d;
404         resource_size_t irq_3d;
405         resource_size_t iobase_2d;
406         resource_size_t iobase_3d;
407         resource_size_t gmem_base;
408         resource_size_t gmem_size;
409 };
410
411 struct platform_device *__init imx_add_mxc_gpu(
412                 const struct imx_mxc_gpu_data *data,
413 struct imx_perfmon_data {
414         resource_size_t iobase;
415         struct mxs_platform_perfmon_data *pdata;
416 };
417
418 struct platform_device *__init imx_add_perfmon(
419                 const struct imx_perfmon_data *data);
420
421 struct imx_ldb_data {
422         resource_size_t iobase;
423         resource_size_t iosize;
424 };
425
426 struct platform_device *__init imx_add_ldb(
427         const struct imx_ldb_data *data,
428         struct fsl_mxc_ldb_platform_data *pdata);
429
430 struct imx_mxc_scc2_data {
431         resource_size_t iobase;
432         resource_size_t ram_start;
433         resource_size_t irq_smn;
434         resource_size_t irq_scm;
435 };
436
437 struct platform_device *__init imx_add_mxc_scc2(
438                 const struct imx_mxc_scc2_data *data);
439
440 struct imx_perfmon_data {
441         resource_size_t iobase;
442         struct mxs_platform_perfmon_data *pdata;
443 };
444
445 struct imx_pxp_data {
446     resource_size_t iobase;
447     resource_size_t iosize;
448     resource_size_t irq;
449 };
450 struct platform_device *__init imx_add_imx_pxp(
451         const struct imx_pxp_data *data);
452 struct platform_device *__init imx_add_imx_pxp_client(void);
453
454 #include <mach/epdc.h>
455 struct imx_epdc_data {
456         resource_size_t iobase;
457         resource_size_t iosize;
458         resource_size_t irq;
459 };
460 struct platform_device *__init imx_add_imx_epdc(
461                 const struct imx_epdc_data *data,
462                 const struct imx_epdc_fb_platform_data *pdata);
463
464 struct imx_spdif_data {
465         resource_size_t iobase;
466         resource_size_t irq;
467 };
468 struct platform_device *__init imx_add_spdif(
469                 const struct imx_spdif_data *data,
470                 const struct mxc_spdif_platform_data *pdata);
471
472 struct imx_spdif_dai_data {
473         resource_size_t iobase;
474         resource_size_t dmatx;
475         resource_size_t dmarx;
476 };
477 struct platform_device *__init imx_add_spdif_dai(
478                 const struct imx_spdif_dai_data *data);
479
480 struct platform_device *__init imx_add_spdif_audio_device(void);
481
482 #include <mach/viv_gpu.h>
483 struct imx_viv_gpu_data {
484         resource_size_t irq_3d;
485         resource_size_t iobase_3d;
486         resource_size_t irq_2d;
487         resource_size_t iobase_2d;
488         resource_size_t irq_vg;
489         resource_size_t iobase_vg;
490 };
491 struct platform_device *__init imx_add_viv_gpu(
492                 const struct imx_viv_gpu_data *data,
493                 const struct viv_gpu_platform_data *pdata);
494
495 #include <mach/anatop_thermal.h>
496 struct imx_anatop_thermal_imx_data {
497         int id;
498         resource_size_t iobase;
499         resource_size_t irq;
500 };
501 struct platform_device *__init imx_add_anatop_thermal_imx(
502                 const struct imx_anatop_thermal_imx_data *data,
503                 const struct anatop_thermal_platform_data *pdata);
504 struct platform_device *__init imx_add_perfmon(
505                 const struct imx_perfmon_data *data);
506                 const struct mxc_gpu_platform_data *pdata);
507 struct imx_otp_data {
508         resource_size_t iobase;
509         struct mxc_otp_platform_data *pdata;
510 };
511
512 struct platform_device *__init imx_add_otp(
513                 const struct imx_otp_data *data);
514
515 struct imx_viim_data {
516         resource_size_t iobase;
517 };
518
519 struct platform_device *__init imx_add_viim(
520                 const struct imx_viim_data *data);
521
522 struct imx_dcp_data {
523         resource_size_t iobase;
524         resource_size_t irq1;
525         resource_size_t irq2;
526 };
527
528
529 #include <mach/imx-pm.h>
530 struct imx_pm_imx_data {
531         int id;
532         resource_size_t iobase;
533         resource_size_t irq;
534 };
535 struct platform_device *__init imx_add_pm_imx(
536                 const struct imx_pm_imx_data *data,
537                 const struct pm_platform_data *pdata);
538
539 #include <mach/mxc_hdmi.h>
540 struct imx_mxc_hdmi_data {
541         resource_size_t iobase;
542         resource_size_t iosize;
543         resource_size_t irq;
544         resource_size_t irq_wakeup;
545 };
546
547 struct platform_device *__init imx_add_mxc_hdmi(
548                 const struct imx_mxc_hdmi_data *data,
549                 const struct fsl_mxc_lcd_platform_data *pdata);
550 #include <mach/mxc_asrc.h>
551 struct imx_imx_asrc_data {
552         int id;
553         resource_size_t iobase;
554         resource_size_t iosize;
555         resource_size_t irq;
556         resource_size_t dmatx1;
557         resource_size_t dmarx1;
558         resource_size_t dmatx2;
559         resource_size_t dmarx2;
560         resource_size_t dmatx3;
561         resource_size_t dmarx3;
562 };
563 struct platform_device *__init imx_add_imx_asrc(
564                 const struct imx_imx_asrc_data *data,
565                 const struct imx_asrc_platform_data *pdata);
566 struct platform_device *__init imx_add_dcp(
567
568 struct imx_fsl_usb2_otg_data {
569         resource_size_t iobase;
570         resource_size_t irq;
571 };
572 struct platform_device *__init imx_add_fsl_usb2_otg(
573                 const struct imx_fsl_usb2_otg_data *data,
574                 const struct fsl_usb2_platform_data *pdata);
575
576 struct imx_fsl_usb2_wakeup_data {
577         int id;
578         resource_size_t irq_phy;
579         resource_size_t irq_core;
580 };
581 struct platform_device *__init imx_add_fsl_usb2_wakeup(
582                 const struct imx_fsl_usb2_wakeup_data *data,
583                 const struct fsl_usb2_wakeup_platform_data *pdata);
584                 const struct imx_dcp_data *data);
585
586 /* gpmi-nfc */
587 #include <mach/gpmi-nfc.h>
588 struct platform_device *__init imx_add_gpmi(
589                 const struct gpmi_nfc_platform_data *data);
590
591 struct imx_rngb_data {
592         resource_size_t iobase;
593         resource_size_t irq;
594 };
595
596 struct platform_device *__init imx_add_rngb(
597                 const struct imx_rngb_data *data);