ARM: imx: dynamically allocate fsl-usb2-udc devices
[pandora-kernel.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 #include <linux/fec.h>
28 struct imx_fec_data {
29         resource_size_t iobase;
30         resource_size_t irq;
31 };
32 struct platform_device *__init imx_add_fec(
33                 const struct imx_fec_data *data,
34                 const struct fec_platform_data *pdata);
35
36 #include <linux/can/platform/flexcan.h>
37 struct imx_flexcan_data {
38         int id;
39         resource_size_t iobase;
40         resource_size_t iosize;
41         resource_size_t irq;
42 };
43 struct platform_device *__init imx_add_flexcan(
44                 const struct imx_flexcan_data *data,
45                 const struct flexcan_platform_data *pdata);
46
47 #include <linux/fsl_devices.h>
48 struct imx_fsl_usb2_udc_data {
49         resource_size_t iobase;
50         resource_size_t irq;
51 };
52 struct platform_device *__init imx_add_fsl_usb2_udc(
53                 const struct imx_fsl_usb2_udc_data *data,
54                 const struct fsl_usb2_platform_data *pdata);
55
56 #include <linux/gpio_keys.h>
57 struct platform_device *__init imx_add_gpio_keys(
58                 const struct gpio_keys_platform_data *pdata);
59
60 struct imx_imx2_wdt_data {
61         resource_size_t iobase;
62 };
63 struct platform_device *__init imx_add_imx2_wdt(
64                 const struct imx_imx2_wdt_data *data);
65
66 #include <mach/imxfb.h>
67 struct imx_imx_fb_data {
68         resource_size_t iobase;
69         resource_size_t irq;
70 };
71 struct platform_device *__init imx_add_imx_fb(
72                 const struct imx_imx_fb_data *data,
73                 const struct imx_fb_platform_data *pdata);
74
75 #include <mach/i2c.h>
76 struct imx_imx_i2c_data {
77         int id;
78         resource_size_t iobase;
79         resource_size_t iosize;
80         resource_size_t irq;
81 };
82 struct platform_device *__init imx_add_imx_i2c(
83                 const struct imx_imx_i2c_data *data,
84                 const struct imxi2c_platform_data *pdata);
85
86 #include <mach/ssi.h>
87 struct imx_imx_ssi_data {
88         int id;
89         resource_size_t iobase;
90         resource_size_t iosize;
91         resource_size_t irq;
92         resource_size_t dmatx0;
93         resource_size_t dmarx0;
94         resource_size_t dmatx1;
95         resource_size_t dmarx1;
96 };
97 struct platform_device *__init imx_add_imx_ssi(
98                 const struct imx_imx_ssi_data *data,
99                 const struct imx_ssi_platform_data *pdata);
100
101 #include <mach/imx-uart.h>
102 struct imx_imx_uart_3irq_data {
103         int id;
104         resource_size_t iobase;
105         resource_size_t iosize;
106         resource_size_t irqrx;
107         resource_size_t irqtx;
108         resource_size_t irqrts;
109 };
110 struct platform_device *__init imx_add_imx_uart_3irq(
111                 const struct imx_imx_uart_3irq_data *data,
112                 const struct imxuart_platform_data *pdata);
113
114 struct imx_imx_uart_1irq_data {
115         int id;
116         resource_size_t iobase;
117         resource_size_t iosize;
118         resource_size_t irq;
119 };
120 struct platform_device *__init imx_add_imx_uart_1irq(
121                 const struct imx_imx_uart_1irq_data *data,
122                 const struct imxuart_platform_data *pdata);
123
124 #include <mach/usb.h>
125 struct imx_imx_udc_data {
126         resource_size_t iobase;
127         resource_size_t iosize;
128         resource_size_t irq0;
129         resource_size_t irq1;
130         resource_size_t irq2;
131         resource_size_t irq3;
132         resource_size_t irq4;
133         resource_size_t irq5;
134         resource_size_t irq6;
135 };
136 struct platform_device *__init imx_add_imx_udc(
137                 const struct imx_imx_udc_data *data,
138                 const struct imxusb_platform_data *pdata);
139
140 #include <mach/mx1_camera.h>
141 struct imx_mx1_camera_data {
142         resource_size_t iobase;
143         resource_size_t iosize;
144         resource_size_t irq;
145 };
146 struct platform_device *__init imx_add_mx1_camera(
147                 const struct imx_mx1_camera_data *data,
148                 const struct mx1_camera_pdata *pdata);
149
150 #include <mach/mx2_cam.h>
151 struct imx_mx2_camera_data {
152         resource_size_t iobasecsi;
153         resource_size_t iosizecsi;
154         resource_size_t irqcsi;
155         resource_size_t iobaseemmaprp;
156         resource_size_t iosizeemmaprp;
157         resource_size_t irqemmaprp;
158 };
159 struct platform_device *__init imx_add_mx2_camera(
160                 const struct imx_mx2_camera_data *data,
161                 const struct mx2_camera_platform_data *pdata);
162
163 #include <mach/mxc_ehci.h>
164 struct imx_mxc_ehci_data {
165         int id;
166         resource_size_t iobase;
167         resource_size_t irq;
168 };
169 struct platform_device *__init imx_add_mxc_ehci(
170                 const struct imx_mxc_ehci_data *data,
171                 const struct mxc_usbh_platform_data *pdata);
172
173 #include <mach/mmc.h>
174 struct imx_mxc_mmc_data {
175         int id;
176         resource_size_t iobase;
177         resource_size_t irq;
178         resource_size_t dmareq;
179 };
180 struct platform_device *__init imx_add_mxc_mmc(
181                 const struct imx_mxc_mmc_data *data,
182                 const struct imxmmc_platform_data *pdata);
183
184 #include <mach/mxc_nand.h>
185 struct imx_mxc_nand_data {
186         /*
187          * id is traditionally 0, but -1 is more appropriate.  We use -1 for new
188          * machines but don't change existing devices as the nand device usually
189          * appears in the kernel command line to pass its partitioning.
190          */
191         int id;
192         resource_size_t iobase;
193         resource_size_t iosize;
194         resource_size_t axibase;
195         resource_size_t irq;
196 };
197 struct platform_device *__init imx_add_mxc_nand(
198                 const struct imx_mxc_nand_data *data,
199                 const struct mxc_nand_platform_data *pdata);
200
201 struct imx_mxc_pwm_data {
202         resource_size_t iobase;
203         resource_size_t irq;
204 };
205 struct platform_device *__init imx_add_mxc_pwm(
206                 const struct imx_mxc_pwm_data *data);
207
208 struct imx_mxc_w1_data {
209         resource_size_t iobase;
210 };
211 struct platform_device *__init imx_add_mxc_w1(
212                 const struct imx_mxc_w1_data *data);
213
214 #include <mach/spi.h>
215 struct imx_spi_imx_data {
216         const char *devid;
217         int id;
218         resource_size_t iobase;
219         resource_size_t iosize;
220         int irq;
221 };
222 struct platform_device *__init imx_add_spi_imx(
223                 const struct imx_spi_imx_data *data,
224                 const struct spi_imx_master *pdata);
225
226 #include <mach/esdhc.h>
227 struct imx_esdhc_imx_data {
228         int id;
229         resource_size_t iobase;
230         resource_size_t irq;
231 };
232 struct platform_device *__init imx_add_esdhc(
233                 const struct imx_esdhc_imx_data *data,
234                 const struct esdhc_platform_data *pdata);