Commit | Line | Data |
---|---|---|
253ff1fa UKK |
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> | |
82906b13 | 12 | #include <linux/platform_data/dma-imx-sdma.h> |
253ff1fa | 13 | |
b78d8e59 | 14 | extern struct device mxc_aips_bus; |
36223604 | 15 | extern struct device mxc_ahb_bus; |
b78d8e59 | 16 | |
0e392412 | 17 | static inline struct platform_device *imx_add_platform_device_dmamask( |
6332c107 | 18 | const char *name, int id, |
253ff1fa | 19 | const struct resource *res, unsigned int num_resources, |
0e392412 UKK |
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 | } | |
6332c107 UKK |
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 | } | |
66384eed | 42 | |
6bd96f3c UKK |
43 | #include <linux/fec.h> |
44 | struct imx_fec_data { | |
0ca1e290 | 45 | const char *devid; |
6bd96f3c UKK |
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 | ||
61c68502 | 53 | #include <linux/can/platform/flexcan.h> |
fc40d019 UKK |
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, | |
61c68502 | 62 | const struct flexcan_platform_data *pdata); |
61c68502 | 63 | |
bd455ed3 UKK |
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 | ||
47c53822 DN |
73 | #include <linux/gpio_keys.h> |
74 | struct platform_device *__init imx_add_gpio_keys( | |
75 | const struct gpio_keys_platform_data *pdata); | |
76 | ||
82906b13 | 77 | #include <linux/platform_data/usb-mx2.h> |
9f871469 UKK |
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 | ||
6d8c4529 JM |
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 | ||
e0a1961d | 94 | struct imx_imx2_wdt_data { |
8c2efec3 | 95 | int id; |
e0a1961d | 96 | resource_size_t iobase; |
00871505 | 97 | resource_size_t iosize; |
e0a1961d UKK |
98 | }; |
99 | struct platform_device *__init imx_add_imx2_wdt( | |
100 | const struct imx_imx2_wdt_data *data); | |
101 | ||
e7c74b34 UKK |
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 | ||
82906b13 | 109 | #include <linux/platform_data/video-imxfb.h> |
ad851bff UKK |
110 | struct imx_imx_fb_data { |
111 | resource_size_t iobase; | |
194ee8e8 | 112 | resource_size_t iosize; |
ad851bff UKK |
113 | resource_size_t irq; |
114 | }; | |
115 | struct platform_device *__init imx_add_imx_fb( | |
116 | const struct imx_imx_fb_data *data, | |
117 | const struct imx_fb_platform_data *pdata); | |
118 | ||
82906b13 | 119 | #include <linux/platform_data/i2c-imx.h> |
64de5ec1 | 120 | struct imx_imx_i2c_data { |
5bdfba29 | 121 | const char *devid; |
64de5ec1 UKK |
122 | int id; |
123 | resource_size_t iobase; | |
124 | resource_size_t iosize; | |
125 | resource_size_t irq; | |
126 | }; | |
127 | struct platform_device *__init imx_add_imx_i2c( | |
128 | const struct imx_imx_i2c_data *data, | |
99a754d8 UKK |
129 | const struct imxi2c_platform_data *pdata); |
130 | ||
3f880141 UKK |
131 | #include <linux/input/matrix_keypad.h> |
132 | struct imx_imx_keypad_data { | |
133 | resource_size_t iobase; | |
ab9cee4b | 134 | resource_size_t iosize; |
3f880141 UKK |
135 | resource_size_t irq; |
136 | }; | |
137 | struct platform_device *__init imx_add_imx_keypad( | |
138 | const struct imx_imx_keypad_data *data, | |
139 | const struct matrix_keymap_data *pdata); | |
140 | ||
82906b13 | 141 | #include <linux/platform_data/asoc-imx-ssi.h> |
4697bb92 UKK |
142 | struct imx_imx_ssi_data { |
143 | int id; | |
144 | resource_size_t iobase; | |
145 | resource_size_t iosize; | |
146 | resource_size_t irq; | |
147 | resource_size_t dmatx0; | |
148 | resource_size_t dmarx0; | |
149 | resource_size_t dmatx1; | |
150 | resource_size_t dmarx1; | |
151 | }; | |
152 | struct platform_device *__init imx_add_imx_ssi( | |
153 | const struct imx_imx_ssi_data *data, | |
154 | const struct imx_ssi_platform_data *pdata); | |
155 | ||
82906b13 | 156 | #include <linux/platform_data/serial-imx.h> |
5162de08 UKK |
157 | struct imx_imx_uart_3irq_data { |
158 | int id; | |
159 | resource_size_t iobase; | |
160 | resource_size_t iosize; | |
161 | resource_size_t irqrx; | |
162 | resource_size_t irqtx; | |
163 | resource_size_t irqrts; | |
164 | }; | |
165 | struct platform_device *__init imx_add_imx_uart_3irq( | |
166 | const struct imx_imx_uart_3irq_data *data, | |
2db68237 | 167 | const struct imxuart_platform_data *pdata); |
5162de08 UKK |
168 | |
169 | struct imx_imx_uart_1irq_data { | |
170 | int id; | |
171 | resource_size_t iobase; | |
172 | resource_size_t iosize; | |
173 | resource_size_t irq; | |
174 | }; | |
175 | struct platform_device *__init imx_add_imx_uart_1irq( | |
176 | const struct imx_imx_uart_1irq_data *data, | |
2db68237 UKK |
177 | const struct imxuart_platform_data *pdata); |
178 | ||
82906b13 | 179 | #include <linux/platform_data/usb-imx_udc.h> |
e0830004 UKK |
180 | struct imx_imx_udc_data { |
181 | resource_size_t iobase; | |
182 | resource_size_t iosize; | |
183 | resource_size_t irq0; | |
184 | resource_size_t irq1; | |
185 | resource_size_t irq2; | |
186 | resource_size_t irq3; | |
187 | resource_size_t irq4; | |
188 | resource_size_t irq5; | |
189 | resource_size_t irq6; | |
190 | }; | |
191 | struct platform_device *__init imx_add_imx_udc( | |
192 | const struct imx_imx_udc_data *data, | |
193 | const struct imxusb_platform_data *pdata); | |
194 | ||
82906b13 AB |
195 | #include <linux/platform_data/video-mx3fb.h> |
196 | #include <linux/platform_data/camera-mx3.h> | |
afa77ef3 UKK |
197 | struct imx_ipu_core_data { |
198 | resource_size_t iobase; | |
199 | resource_size_t synirq; | |
200 | resource_size_t errirq; | |
201 | }; | |
202 | struct platform_device *__init imx_add_ipu_core( | |
88289c80 | 203 | const struct imx_ipu_core_data *data); |
afa77ef3 UKK |
204 | struct platform_device *__init imx_alloc_mx3_camera( |
205 | const struct imx_ipu_core_data *data, | |
206 | const struct mx3_camera_pdata *pdata); | |
207 | struct platform_device *__init imx_add_mx3_sdc_fb( | |
208 | const struct imx_ipu_core_data *data, | |
209 | struct mx3fb_platform_data *pdata); | |
210 | ||
82906b13 | 211 | #include <linux/platform_data/camera-mx1.h> |
9bb39b3f UKK |
212 | struct imx_mx1_camera_data { |
213 | resource_size_t iobase; | |
214 | resource_size_t iosize; | |
215 | resource_size_t irq; | |
216 | }; | |
217 | struct platform_device *__init imx_add_mx1_camera( | |
218 | const struct imx_mx1_camera_data *data, | |
219 | const struct mx1_camera_pdata *pdata); | |
220 | ||
82906b13 | 221 | #include <linux/platform_data/camera-mx2.h> |
b2997cb1 | 222 | struct imx_mx2_camera_data { |
27b76486 | 223 | const char *devid; |
b2997cb1 UKK |
224 | resource_size_t iobasecsi; |
225 | resource_size_t iosizecsi; | |
226 | resource_size_t irqcsi; | |
227 | resource_size_t iobaseemmaprp; | |
228 | resource_size_t iosizeemmaprp; | |
229 | resource_size_t irqemmaprp; | |
230 | }; | |
231 | struct platform_device *__init imx_add_mx2_camera( | |
232 | const struct imx_mx2_camera_data *data, | |
233 | const struct mx2_camera_platform_data *pdata); | |
52f1a845 JM |
234 | struct platform_device *__init imx_add_mx2_emmaprp( |
235 | const struct imx_mx2_camera_data *data); | |
b2997cb1 | 236 | |
82906b13 | 237 | #include <linux/platform_data/usb-ehci-mxc.h> |
2eb42d5c UKK |
238 | struct imx_mxc_ehci_data { |
239 | int id; | |
240 | resource_size_t iobase; | |
241 | resource_size_t irq; | |
242 | }; | |
243 | struct platform_device *__init imx_add_mxc_ehci( | |
244 | const struct imx_mxc_ehci_data *data, | |
245 | const struct mxc_usbh_platform_data *pdata); | |
246 | ||
82906b13 | 247 | #include <linux/platform_data/mmc-mxcmmc.h> |
9d3d945a UKK |
248 | struct imx_mxc_mmc_data { |
249 | int id; | |
250 | resource_size_t iobase; | |
6a697e3d | 251 | resource_size_t iosize; |
9d3d945a UKK |
252 | resource_size_t irq; |
253 | resource_size_t dmareq; | |
254 | }; | |
255 | struct platform_device *__init imx_add_mxc_mmc( | |
256 | const struct imx_mxc_mmc_data *data, | |
257 | const struct imxmmc_platform_data *pdata); | |
258 | ||
82906b13 | 259 | #include <linux/platform_data/mtd-mxc_nand.h> |
00b57bf9 | 260 | struct imx_mxc_nand_data { |
4d62435f | 261 | const char *devid; |
63a7c6d7 SH |
262 | /* |
263 | * id is traditionally 0, but -1 is more appropriate. We use -1 for new | |
264 | * machines but don't change existing devices as the nand device usually | |
265 | * appears in the kernel command line to pass its partitioning. | |
266 | */ | |
267 | int id; | |
00b57bf9 UKK |
268 | resource_size_t iobase; |
269 | resource_size_t iosize; | |
63a7c6d7 | 270 | resource_size_t axibase; |
00b57bf9 UKK |
271 | resource_size_t irq; |
272 | }; | |
273 | struct platform_device *__init imx_add_mxc_nand( | |
274 | const struct imx_mxc_nand_data *data, | |
275 | const struct mxc_nand_platform_data *pdata); | |
02870737 | 276 | |
a45adf1c APR |
277 | struct imx_pata_imx_data { |
278 | resource_size_t iobase; | |
236c4e8b | 279 | resource_size_t iosize; |
a45adf1c APR |
280 | resource_size_t irq; |
281 | }; | |
282 | struct platform_device *__init imx_add_pata_imx( | |
283 | const struct imx_pata_imx_data *data); | |
284 | ||
bf182bcc | 285 | struct imx_mxc_pwm_data { |
5f3d1092 | 286 | int id; |
bf182bcc | 287 | resource_size_t iobase; |
5f3d1092 | 288 | resource_size_t iosize; |
bf182bcc UKK |
289 | resource_size_t irq; |
290 | }; | |
291 | struct platform_device *__init imx_add_mxc_pwm( | |
292 | const struct imx_mxc_pwm_data *data); | |
293 | ||
83422671 UKK |
294 | /* mxc_rtc */ |
295 | struct imx_mxc_rtc_data { | |
bb1d34a2 | 296 | const char *devid; |
83422671 UKK |
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 */ | |
ae71a562 UKK |
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 | ||
82906b13 | 310 | #include <linux/platform_data/mmc-esdhc-imx.h> |
124bf94a | 311 | struct imx_sdhci_esdhc_imx_data { |
57ed3314 | 312 | const char *devid; |
124bf94a UKK |
313 | int id; |
314 | resource_size_t iobase; | |
315 | resource_size_t irq; | |
316 | }; | |
317 | struct platform_device *__init imx_add_sdhci_esdhc_imx( | |
318 | const struct imx_sdhci_esdhc_imx_data *data, | |
319 | const struct esdhc_platform_data *pdata); | |
320 | ||
82906b13 | 321 | #include <linux/platform_data/spi-imx.h> |
35bab058 | 322 | struct imx_spi_imx_data { |
ab560503 | 323 | const char *devid; |
35bab058 UKK |
324 | int id; |
325 | resource_size_t iobase; | |
326 | resource_size_t iosize; | |
327 | int irq; | |
328 | }; | |
329 | struct platform_device *__init imx_add_spi_imx( | |
330 | const struct imx_spi_imx_data *data, | |
02870737 | 331 | const struct spi_imx_master *pdata); |
36223604 | 332 | |
e51d0f0a | 333 | struct platform_device *imx_add_imx_dma(char *name, resource_size_t iobase, |
73930eb3 | 334 | int irq, int irq_err); |
62550cd7 | 335 | struct platform_device *imx_add_imx_sdma(char *name, |
36223604 | 336 | resource_size_t iobase, int irq, struct sdma_platform_data *pdata); |
97915bdf RZ |
337 | |
338 | #include <linux/ahci_platform.h> | |
339 | struct imx_ahci_imx_data { | |
340 | const char *devid; | |
341 | resource_size_t iobase; | |
342 | resource_size_t irq; | |
343 | }; | |
344 | struct platform_device *__init imx_add_ahci_imx( | |
345 | const struct imx_ahci_imx_data *data, | |
346 | const struct ahci_platform_data *pdata); |