diff options
Diffstat (limited to 'arch/arm/mach-imx/devices/devices-common.h')
-rw-r--r-- | arch/arm/mach-imx/devices/devices-common.h | 348 |
1 files changed, 348 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/devices/devices-common.h b/arch/arm/mach-imx/devices/devices-common.h new file mode 100644 index 000000000000..e4b790b9e2aa --- /dev/null +++ b/arch/arm/mach-imx/devices/devices-common.h | |||
@@ -0,0 +1,348 @@ | |||
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 | #include <linux/platform_data/dma-imx-sdma.h> | ||
13 | |||
14 | extern struct device mxc_aips_bus; | ||
15 | extern struct device mxc_ahb_bus; | ||
16 | |||
17 | static inline struct platform_device *imx_add_platform_device_dmamask( | ||
18 | const char *name, int id, | ||
19 | const struct resource *res, unsigned int num_resources, | ||
20 | const void *data, size_t size_data, u64 dmamask) | ||
21 | { | ||
22 | struct platform_device_info pdevinfo = { | ||
23 | .name = name, | ||
24 | .id = id, | ||
25 | .res = res, | ||
26 | .num_res = num_resources, | ||
27 | .data = data, | ||
28 | .size_data = size_data, | ||
29 | .dma_mask = dmamask, | ||
30 | }; | ||
31 | return platform_device_register_full(&pdevinfo); | ||
32 | } | ||
33 | |||
34 | static inline struct platform_device *imx_add_platform_device( | ||
35 | const char *name, int id, | ||
36 | const struct resource *res, unsigned int num_resources, | ||
37 | const void *data, size_t size_data) | ||
38 | { | ||
39 | return imx_add_platform_device_dmamask( | ||
40 | name, id, res, num_resources, data, size_data, 0); | ||
41 | } | ||
42 | |||
43 | #include <linux/fec.h> | ||
44 | struct imx_fec_data { | ||
45 | const char *devid; | ||
46 | resource_size_t iobase; | ||
47 | resource_size_t irq; | ||
48 | }; | ||
49 | struct platform_device *__init imx_add_fec( | ||
50 | const struct imx_fec_data *data, | ||
51 | const struct fec_platform_data *pdata); | ||
52 | |||
53 | #include <linux/can/platform/flexcan.h> | ||
54 | struct imx_flexcan_data { | ||
55 | int id; | ||
56 | resource_size_t iobase; | ||
57 | resource_size_t iosize; | ||
58 | resource_size_t irq; | ||
59 | }; | ||
60 | struct platform_device *__init imx_add_flexcan( | ||
61 | const struct imx_flexcan_data *data, | ||
62 | const struct flexcan_platform_data *pdata); | ||
63 | |||
64 | #include <linux/fsl_devices.h> | ||
65 | struct imx_fsl_usb2_udc_data { | ||
66 | resource_size_t iobase; | ||
67 | resource_size_t irq; | ||
68 | }; | ||
69 | struct platform_device *__init imx_add_fsl_usb2_udc( | ||
70 | const struct imx_fsl_usb2_udc_data *data, | ||
71 | const struct fsl_usb2_platform_data *pdata); | ||
72 | |||
73 | #include <linux/gpio_keys.h> | ||
74 | struct platform_device *__init imx_add_gpio_keys( | ||
75 | const struct gpio_keys_platform_data *pdata); | ||
76 | |||
77 | #include <linux/platform_data/usb-mx2.h> | ||
78 | struct imx_imx21_hcd_data { | ||
79 | resource_size_t iobase; | ||
80 | resource_size_t irq; | ||
81 | }; | ||
82 | struct platform_device *__init imx_add_imx21_hcd( | ||
83 | const struct imx_imx21_hcd_data *data, | ||
84 | const struct mx21_usbh_platform_data *pdata); | ||
85 | |||
86 | struct imx_imx27_coda_data { | ||
87 | resource_size_t iobase; | ||
88 | resource_size_t iosize; | ||
89 | resource_size_t irq; | ||
90 | }; | ||
91 | struct platform_device *__init imx_add_imx27_coda( | ||
92 | const struct imx_imx27_coda_data *data); | ||
93 | |||
94 | struct imx_imx2_wdt_data { | ||
95 | int id; | ||
96 | resource_size_t iobase; | ||
97 | resource_size_t iosize; | ||
98 | }; | ||
99 | struct platform_device *__init imx_add_imx2_wdt( | ||
100 | const struct imx_imx2_wdt_data *data); | ||
101 | |||
102 | struct imx_imxdi_rtc_data { | ||
103 | resource_size_t iobase; | ||
104 | resource_size_t irq; | ||
105 | }; | ||
106 | struct platform_device *__init imx_add_imxdi_rtc( | ||
107 | const struct imx_imxdi_rtc_data *data); | ||
108 | |||
109 | #include <linux/platform_data/video-imxfb.h> | ||
110 | struct imx_imx_fb_data { | ||
111 | const char *devid; | ||
112 | resource_size_t iobase; | ||
113 | resource_size_t iosize; | ||
114 | resource_size_t irq; | ||
115 | }; | ||
116 | struct platform_device *__init imx_add_imx_fb( | ||
117 | const struct imx_imx_fb_data *data, | ||
118 | const struct imx_fb_platform_data *pdata); | ||
119 | |||
120 | #include <linux/platform_data/i2c-imx.h> | ||
121 | struct imx_imx_i2c_data { | ||
122 | const char *devid; | ||
123 | int id; | ||
124 | resource_size_t iobase; | ||
125 | resource_size_t iosize; | ||
126 | resource_size_t irq; | ||
127 | }; | ||
128 | struct platform_device *__init imx_add_imx_i2c( | ||
129 | const struct imx_imx_i2c_data *data, | ||
130 | const struct imxi2c_platform_data *pdata); | ||
131 | |||
132 | #include <linux/input/matrix_keypad.h> | ||
133 | struct imx_imx_keypad_data { | ||
134 | resource_size_t iobase; | ||
135 | resource_size_t iosize; | ||
136 | resource_size_t irq; | ||
137 | }; | ||
138 | struct platform_device *__init imx_add_imx_keypad( | ||
139 | const struct imx_imx_keypad_data *data, | ||
140 | const struct matrix_keymap_data *pdata); | ||
141 | |||
142 | #include <linux/platform_data/asoc-imx-ssi.h> | ||
143 | struct imx_imx_ssi_data { | ||
144 | int id; | ||
145 | resource_size_t iobase; | ||
146 | resource_size_t iosize; | ||
147 | resource_size_t irq; | ||
148 | resource_size_t dmatx0; | ||
149 | resource_size_t dmarx0; | ||
150 | resource_size_t dmatx1; | ||
151 | resource_size_t dmarx1; | ||
152 | }; | ||
153 | struct platform_device *__init imx_add_imx_ssi( | ||
154 | const struct imx_imx_ssi_data *data, | ||
155 | const struct imx_ssi_platform_data *pdata); | ||
156 | |||
157 | #include <linux/platform_data/serial-imx.h> | ||
158 | struct imx_imx_uart_3irq_data { | ||
159 | int id; | ||
160 | resource_size_t iobase; | ||
161 | resource_size_t iosize; | ||
162 | resource_size_t irqrx; | ||
163 | resource_size_t irqtx; | ||
164 | resource_size_t irqrts; | ||
165 | }; | ||
166 | struct platform_device *__init imx_add_imx_uart_3irq( | ||
167 | const struct imx_imx_uart_3irq_data *data, | ||
168 | const struct imxuart_platform_data *pdata); | ||
169 | |||
170 | struct imx_imx_uart_1irq_data { | ||
171 | int id; | ||
172 | resource_size_t iobase; | ||
173 | resource_size_t iosize; | ||
174 | resource_size_t irq; | ||
175 | }; | ||
176 | struct platform_device *__init imx_add_imx_uart_1irq( | ||
177 | const struct imx_imx_uart_1irq_data *data, | ||
178 | const struct imxuart_platform_data *pdata); | ||
179 | |||
180 | #include <linux/platform_data/usb-imx_udc.h> | ||
181 | struct imx_imx_udc_data { | ||
182 | resource_size_t iobase; | ||
183 | resource_size_t iosize; | ||
184 | resource_size_t irq0; | ||
185 | resource_size_t irq1; | ||
186 | resource_size_t irq2; | ||
187 | resource_size_t irq3; | ||
188 | resource_size_t irq4; | ||
189 | resource_size_t irq5; | ||
190 | resource_size_t irq6; | ||
191 | }; | ||
192 | struct platform_device *__init imx_add_imx_udc( | ||
193 | const struct imx_imx_udc_data *data, | ||
194 | const struct imxusb_platform_data *pdata); | ||
195 | |||
196 | #include <linux/platform_data/video-mx3fb.h> | ||
197 | #include <linux/platform_data/camera-mx3.h> | ||
198 | struct imx_ipu_core_data { | ||
199 | resource_size_t iobase; | ||
200 | resource_size_t synirq; | ||
201 | resource_size_t errirq; | ||
202 | }; | ||
203 | struct platform_device *__init imx_add_ipu_core( | ||
204 | const struct imx_ipu_core_data *data); | ||
205 | struct platform_device *__init imx_alloc_mx3_camera( | ||
206 | const struct imx_ipu_core_data *data, | ||
207 | const struct mx3_camera_pdata *pdata); | ||
208 | struct platform_device *__init imx_add_mx3_sdc_fb( | ||
209 | const struct imx_ipu_core_data *data, | ||
210 | struct mx3fb_platform_data *pdata); | ||
211 | |||
212 | #include <linux/platform_data/camera-mx1.h> | ||
213 | struct imx_mx1_camera_data { | ||
214 | resource_size_t iobase; | ||
215 | resource_size_t iosize; | ||
216 | resource_size_t irq; | ||
217 | }; | ||
218 | struct platform_device *__init imx_add_mx1_camera( | ||
219 | const struct imx_mx1_camera_data *data, | ||
220 | const struct mx1_camera_pdata *pdata); | ||
221 | |||
222 | #include <linux/platform_data/camera-mx2.h> | ||
223 | struct imx_mx2_camera_data { | ||
224 | const char *devid; | ||
225 | resource_size_t iobasecsi; | ||
226 | resource_size_t iosizecsi; | ||
227 | resource_size_t irqcsi; | ||
228 | resource_size_t iobaseemmaprp; | ||
229 | resource_size_t iosizeemmaprp; | ||
230 | resource_size_t irqemmaprp; | ||
231 | }; | ||
232 | struct platform_device *__init imx_add_mx2_camera( | ||
233 | const struct imx_mx2_camera_data *data, | ||
234 | const struct mx2_camera_platform_data *pdata); | ||
235 | struct platform_device *__init imx_add_mx2_emmaprp( | ||
236 | const struct imx_mx2_camera_data *data); | ||
237 | |||
238 | #include <linux/platform_data/usb-ehci-mxc.h> | ||
239 | struct imx_mxc_ehci_data { | ||
240 | int id; | ||
241 | resource_size_t iobase; | ||
242 | resource_size_t irq; | ||
243 | }; | ||
244 | struct platform_device *__init imx_add_mxc_ehci( | ||
245 | const struct imx_mxc_ehci_data *data, | ||
246 | const struct mxc_usbh_platform_data *pdata); | ||
247 | |||
248 | #include <linux/platform_data/mmc-mxcmmc.h> | ||
249 | struct imx_mxc_mmc_data { | ||
250 | const char *devid; | ||
251 | int id; | ||
252 | resource_size_t iobase; | ||
253 | resource_size_t iosize; | ||
254 | resource_size_t irq; | ||
255 | resource_size_t dmareq; | ||
256 | }; | ||
257 | struct platform_device *__init imx_add_mxc_mmc( | ||
258 | const struct imx_mxc_mmc_data *data, | ||
259 | const struct imxmmc_platform_data *pdata); | ||
260 | |||
261 | #include <linux/platform_data/mtd-mxc_nand.h> | ||
262 | struct imx_mxc_nand_data { | ||
263 | const char *devid; | ||
264 | /* | ||
265 | * id is traditionally 0, but -1 is more appropriate. We use -1 for new | ||
266 | * machines but don't change existing devices as the nand device usually | ||
267 | * appears in the kernel command line to pass its partitioning. | ||
268 | */ | ||
269 | int id; | ||
270 | resource_size_t iobase; | ||
271 | resource_size_t iosize; | ||
272 | resource_size_t axibase; | ||
273 | resource_size_t irq; | ||
274 | }; | ||
275 | struct platform_device *__init imx_add_mxc_nand( | ||
276 | const struct imx_mxc_nand_data *data, | ||
277 | const struct mxc_nand_platform_data *pdata); | ||
278 | |||
279 | struct imx_pata_imx_data { | ||
280 | resource_size_t iobase; | ||
281 | resource_size_t iosize; | ||
282 | resource_size_t irq; | ||
283 | }; | ||
284 | struct platform_device *__init imx_add_pata_imx( | ||
285 | const struct imx_pata_imx_data *data); | ||
286 | |||
287 | struct imx_mxc_pwm_data { | ||
288 | int id; | ||
289 | resource_size_t iobase; | ||
290 | resource_size_t iosize; | ||
291 | resource_size_t irq; | ||
292 | }; | ||
293 | struct platform_device *__init imx_add_mxc_pwm( | ||
294 | const struct imx_mxc_pwm_data *data); | ||
295 | |||
296 | /* mxc_rtc */ | ||
297 | struct imx_mxc_rtc_data { | ||
298 | const char *devid; | ||
299 | resource_size_t iobase; | ||
300 | resource_size_t irq; | ||
301 | }; | ||
302 | struct platform_device *__init imx_add_mxc_rtc( | ||
303 | const struct imx_mxc_rtc_data *data); | ||
304 | |||
305 | /* mxc_w1 */ | ||
306 | struct imx_mxc_w1_data { | ||
307 | resource_size_t iobase; | ||
308 | }; | ||
309 | struct platform_device *__init imx_add_mxc_w1( | ||
310 | const struct imx_mxc_w1_data *data); | ||
311 | |||
312 | #include <linux/platform_data/mmc-esdhc-imx.h> | ||
313 | struct imx_sdhci_esdhc_imx_data { | ||
314 | const char *devid; | ||
315 | int id; | ||
316 | resource_size_t iobase; | ||
317 | resource_size_t irq; | ||
318 | }; | ||
319 | struct platform_device *__init imx_add_sdhci_esdhc_imx( | ||
320 | const struct imx_sdhci_esdhc_imx_data *data, | ||
321 | const struct esdhc_platform_data *pdata); | ||
322 | |||
323 | #include <linux/platform_data/spi-imx.h> | ||
324 | struct imx_spi_imx_data { | ||
325 | const char *devid; | ||
326 | int id; | ||
327 | resource_size_t iobase; | ||
328 | resource_size_t iosize; | ||
329 | int irq; | ||
330 | }; | ||
331 | struct platform_device *__init imx_add_spi_imx( | ||
332 | const struct imx_spi_imx_data *data, | ||
333 | const struct spi_imx_master *pdata); | ||
334 | |||
335 | struct platform_device *imx_add_imx_dma(char *name, resource_size_t iobase, | ||
336 | int irq, int irq_err); | ||
337 | struct platform_device *imx_add_imx_sdma(char *name, | ||
338 | resource_size_t iobase, int irq, struct sdma_platform_data *pdata); | ||
339 | |||
340 | #include <linux/ahci_platform.h> | ||
341 | struct imx_ahci_imx_data { | ||
342 | const char *devid; | ||
343 | resource_size_t iobase; | ||
344 | resource_size_t irq; | ||
345 | }; | ||
346 | struct platform_device *__init imx_add_ahci_imx( | ||
347 | const struct imx_ahci_imx_data *data, | ||
348 | const struct ahci_platform_data *pdata); | ||