2 * Copyright (C) 2009-2010 Pengutronix
3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
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.
9 #include <linux/kernel.h>
10 #include <linux/platform_device.h>
11 #include <linux/init.h>
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);
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)
23 return imx_add_platform_device_dmamask(
24 name, id, res, num_resources, data, size_data, 0);
28 resource_size_t iobase;
30 struct platform_device *__init imx_add_dma(const struct imx_dma_data *data);
32 #include <linux/fec.h>
34 resource_size_t iobase;
37 struct platform_device *__init imx_add_fec(
38 const struct imx_fec_data *data,
39 const struct fec_platform_data *pdata);
41 #include <linux/can/platform/flexcan.h>
42 struct imx_flexcan_data {
44 resource_size_t iobase;
45 resource_size_t iosize;
48 struct platform_device *__init imx_add_flexcan(
49 const struct imx_flexcan_data *data,
50 const struct flexcan_platform_data *pdata);
52 #include <linux/fsl_devices.h>
53 struct imx_fsl_usb2_udc_data {
54 resource_size_t iobase;
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);
61 #include <linux/gpio_keys.h>
62 struct platform_device *__init imx_add_gpio_keys(
63 const struct gpio_keys_platform_data *pdata);
65 #include <mach/mx21-usbhost.h>
66 struct imx_imx21_hcd_data {
67 resource_size_t iobase;
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);
74 struct imx_imx2_wdt_data {
76 resource_size_t iobase;
77 resource_size_t iosize;
79 struct platform_device *__init imx_add_imx2_wdt(
80 const struct imx_imx2_wdt_data *data);
82 struct imx_imxdi_rtc_data {
83 resource_size_t iobase;
86 struct platform_device *__init imx_add_imxdi_rtc(
87 const struct imx_imxdi_rtc_data *data);
89 struct imx_srtc_data {
90 resource_size_t iobase;
93 struct platform_device *__init imx_add_srtc(
94 const struct imx_srtc_data *data);
96 struct imx_snvs_rtc_data {
97 resource_size_t iobase;
100 struct platform_device *__init imx_add_snvs_rtc(
101 const struct imx_snvs_rtc_data *data);
104 #include <mach/imxfb.h>
105 struct imx_imx_fb_data {
106 resource_size_t iobase;
107 resource_size_t iosize;
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);
114 #include <mach/i2c.h>
115 struct imx_imx_i2c_data {
117 resource_size_t iobase;
118 resource_size_t iosize;
121 struct platform_device *__init imx_add_imx_i2c(
122 const struct imx_imx_i2c_data *data,
123 const struct imxi2c_platform_data *pdata);
125 #include <linux/input/matrix_keypad.h>
126 struct imx_imx_keypad_data {
127 resource_size_t iobase;
128 resource_size_t iosize;
131 struct platform_device *__init imx_add_imx_keypad(
132 const struct imx_imx_keypad_data *data,
133 const struct matrix_keymap_data *pdata);
135 #include <mach/ssi.h>
136 struct imx_imx_ssi_data {
138 resource_size_t iobase;
139 resource_size_t iosize;
141 resource_size_t dmatx0;
142 resource_size_t dmarx0;
143 resource_size_t dmatx1;
144 resource_size_t dmarx1;
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);
150 #include <mach/esai.h>
151 struct imx_imx_esai_data {
153 resource_size_t iobase;
154 resource_size_t iosize;
156 resource_size_t dmatx;
157 resource_size_t dmarx;
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);
163 #include <mach/imx-uart.h>
164 struct imx_imx_uart_3irq_data {
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;
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);
176 struct imx_imx_uart_1irq_data {
178 resource_size_t iobase;
179 resource_size_t iosize;
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);
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;
198 struct platform_device *__init imx_add_imx_udc(
199 const struct imx_imx_udc_data *data,
200 const struct imxusb_platform_data *pdata);
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;
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);
220 #include <mach/mx1_camera.h>
221 struct imx_mx1_camera_data {
222 resource_size_t iobase;
223 resource_size_t iosize;
226 struct platform_device *__init imx_add_mx1_camera(
227 const struct imx_mx1_camera_data *data,
228 const struct mx1_camera_pdata *pdata);
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;
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);
243 #include <mach/mxc_ehci.h>
244 struct imx_mxc_ehci_data {
246 resource_size_t iobase;
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);
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);
257 #include <mach/mmc.h>
258 struct imx_mxc_mmc_data {
260 resource_size_t iobase;
261 resource_size_t iosize;
263 resource_size_t dmareq;
265 struct platform_device *__init imx_add_mxc_mmc(
266 const struct imx_mxc_mmc_data *data,
267 const struct imxmmc_platform_data *pdata);
269 #include <mach/mxc_nand.h>
270 struct imx_mxc_nand_data {
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.
277 resource_size_t iobase;
278 resource_size_t iosize;
279 resource_size_t axibase;
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);
286 struct imx_mxc_pwm_data {
288 resource_size_t iobase;
289 resource_size_t iosize;
292 struct platform_device *__init imx_add_mxc_pwm(
293 const struct imx_mxc_pwm_data *data);
296 struct imx_mxc_rtc_data {
297 resource_size_t iobase;
300 struct platform_device *__init imx_add_mxc_rtc(
301 const struct imx_mxc_rtc_data *data);
304 struct imx_mxc_w1_data {
305 resource_size_t iobase;
307 struct platform_device *__init imx_add_mxc_w1(
308 const struct imx_mxc_w1_data *data);
310 #include <mach/esdhc.h>
311 struct imx_sdhci_esdhc_imx_data {
313 resource_size_t iobase;
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);
320 #include <mach/spi.h>
321 struct imx_spi_imx_data {
324 resource_size_t iobase;
325 resource_size_t iosize;
328 struct platform_device *__init imx_add_spi_imx(
329 const struct imx_spi_imx_data *data,
330 const struct spi_imx_master *pdata);
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;
338 unsigned int irq_start;
342 struct platform_device *__init imx_add_ipuv3(
344 const struct imx_ipuv3_data *data,
345 struct imx_ipuv3_platform_data *pdata);
347 struct platform_device *__init imx_add_ipuv3_fb(
349 const struct ipuv3_fb_platform_data *pdata);
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;
358 void (*reset) (void);
361 struct platform_device *__init imx_add_vpu(
362 const struct imx_vpu_data *data);
364 #include <mach/mxc_dvfs.h>
365 struct imx_dvfs_core_data {
366 resource_size_t iobase;
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);
374 #include <linux/fsl_devices.h>
375 struct imx_tve_data {
376 resource_size_t iobase;
379 struct platform_device *__init imx_add_tve(
380 const struct imx_tve_data *data,
381 const struct fsl_mxc_tve_platform_data *pdata);
383 #include <linux/ahci_platform.h>
384 struct imx_ahci_data {
386 resource_size_t iobase;
389 struct platform_device *__init imx_add_ahci(
390 const struct imx_ahci_data *data,
391 const struct ahci_platform_data *pdata);
393 struct imx_iim_data {
394 resource_size_t iobase;
397 struct platform_device *__init imx_add_iim(
398 const struct imx_iim_data *data,
399 const struct mxc_iim_platform_data *pdata);
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;
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;
418 struct platform_device *__init imx_add_perfmon(
419 const struct imx_perfmon_data *data);
421 struct imx_ldb_data {
422 resource_size_t iobase;
423 resource_size_t iosize;
426 struct platform_device *__init imx_add_ldb(
427 const struct imx_ldb_data *data,
428 struct fsl_mxc_ldb_platform_data *pdata);
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;
437 struct platform_device *__init imx_add_mxc_scc2(
438 const struct imx_mxc_scc2_data *data);
440 struct imx_perfmon_data {
441 resource_size_t iobase;
442 struct mxs_platform_perfmon_data *pdata;
445 struct imx_pxp_data {
446 resource_size_t iobase;
447 resource_size_t iosize;
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);
454 #include <mach/epdc.h>
455 struct imx_epdc_data {
456 resource_size_t iobase;
457 resource_size_t iosize;
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);
464 struct imx_spdif_data {
465 resource_size_t iobase;
468 struct platform_device *__init imx_add_spdif(
469 const struct imx_spdif_data *data,
470 const struct mxc_spdif_platform_data *pdata);
472 struct imx_spdif_dai_data {
473 resource_size_t iobase;
474 resource_size_t dmatx;
475 resource_size_t dmarx;
477 struct platform_device *__init imx_add_spdif_dai(
478 const struct imx_spdif_dai_data *data);
480 struct platform_device *__init imx_add_spdif_audio_device(void);
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;
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);
495 #include <mach/anatop_thermal.h>
496 struct imx_anatop_thermal_imx_data {
498 resource_size_t iobase;
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;
512 struct platform_device *__init imx_add_otp(
513 const struct imx_otp_data *data);
515 struct imx_viim_data {
516 resource_size_t iobase;
519 struct platform_device *__init imx_add_viim(
520 const struct imx_viim_data *data);
522 struct imx_dcp_data {
523 resource_size_t iobase;
524 resource_size_t irq1;
525 resource_size_t irq2;
529 #include <mach/imx-pm.h>
530 struct imx_pm_imx_data {
532 resource_size_t iobase;
535 struct platform_device *__init imx_add_pm_imx(
536 const struct imx_pm_imx_data *data,
537 const struct pm_platform_data *pdata);
539 #include <mach/mxc_hdmi.h>
540 struct imx_mxc_hdmi_data {
541 resource_size_t iobase;
542 resource_size_t iosize;
544 resource_size_t irq_wakeup;
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 {
553 resource_size_t iobase;
554 resource_size_t iosize;
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;
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(
568 struct imx_fsl_usb2_otg_data {
569 resource_size_t iobase;
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);
576 struct imx_fsl_usb2_wakeup_data {
578 resource_size_t irq_phy;
579 resource_size_t irq_core;
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);
587 #include <mach/gpmi-nfc.h>
588 struct platform_device *__init imx_add_gpmi(
589 const struct gpmi_nfc_platform_data *data);
591 struct imx_rngb_data {
592 resource_size_t iobase;
596 struct platform_device *__init imx_add_rngb(
597 const struct imx_rngb_data *data);