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> | |
36223604 | 12 | #include <mach/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 | ||
9f871469 UKK |
77 | #include <mach/mx21-usbhost.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 | ||
e0a1961d | 86 | struct imx_imx2_wdt_data { |
8c2efec3 | 87 | int id; |
e0a1961d | 88 | resource_size_t iobase; |
00871505 | 89 | resource_size_t iosize; |
e0a1961d UKK |
90 | }; |
91 | struct platform_device *__init imx_add_imx2_wdt( | |
92 | const struct imx_imx2_wdt_data *data); | |
93 | ||
e7c74b34 UKK |
94 | struct imx_imxdi_rtc_data { |
95 | resource_size_t iobase; | |
96 | resource_size_t irq; | |
97 | }; | |
98 | struct platform_device *__init imx_add_imxdi_rtc( | |
99 | const struct imx_imxdi_rtc_data *data); | |
100 | ||
ad851bff UKK |
101 | #include <mach/imxfb.h> |
102 | struct imx_imx_fb_data { | |
103 | resource_size_t iobase; | |
194ee8e8 | 104 | resource_size_t iosize; |
ad851bff UKK |
105 | resource_size_t irq; |
106 | }; | |
107 | struct platform_device *__init imx_add_imx_fb( | |
108 | const struct imx_imx_fb_data *data, | |
109 | const struct imx_fb_platform_data *pdata); | |
110 | ||
99a754d8 | 111 | #include <mach/i2c.h> |
64de5ec1 UKK |
112 | struct imx_imx_i2c_data { |
113 | int id; | |
114 | resource_size_t iobase; | |
115 | resource_size_t iosize; | |
116 | resource_size_t irq; | |
117 | }; | |
118 | struct platform_device *__init imx_add_imx_i2c( | |
119 | const struct imx_imx_i2c_data *data, | |
99a754d8 UKK |
120 | const struct imxi2c_platform_data *pdata); |
121 | ||
3f880141 UKK |
122 | #include <linux/input/matrix_keypad.h> |
123 | struct imx_imx_keypad_data { | |
124 | resource_size_t iobase; | |
ab9cee4b | 125 | resource_size_t iosize; |
3f880141 UKK |
126 | resource_size_t irq; |
127 | }; | |
128 | struct platform_device *__init imx_add_imx_keypad( | |
129 | const struct imx_imx_keypad_data *data, | |
130 | const struct matrix_keymap_data *pdata); | |
131 | ||
4697bb92 UKK |
132 | #include <mach/ssi.h> |
133 | struct imx_imx_ssi_data { | |
134 | int id; | |
135 | resource_size_t iobase; | |
136 | resource_size_t iosize; | |
137 | resource_size_t irq; | |
138 | resource_size_t dmatx0; | |
139 | resource_size_t dmarx0; | |
140 | resource_size_t dmatx1; | |
141 | resource_size_t dmarx1; | |
142 | }; | |
143 | struct platform_device *__init imx_add_imx_ssi( | |
144 | const struct imx_imx_ssi_data *data, | |
145 | const struct imx_ssi_platform_data *pdata); | |
146 | ||
2db68237 | 147 | #include <mach/imx-uart.h> |
5162de08 UKK |
148 | struct imx_imx_uart_3irq_data { |
149 | int id; | |
150 | resource_size_t iobase; | |
151 | resource_size_t iosize; | |
152 | resource_size_t irqrx; | |
153 | resource_size_t irqtx; | |
154 | resource_size_t irqrts; | |
155 | }; | |
156 | struct platform_device *__init imx_add_imx_uart_3irq( | |
157 | const struct imx_imx_uart_3irq_data *data, | |
2db68237 | 158 | const struct imxuart_platform_data *pdata); |
5162de08 UKK |
159 | |
160 | struct imx_imx_uart_1irq_data { | |
161 | int id; | |
162 | resource_size_t iobase; | |
163 | resource_size_t iosize; | |
164 | resource_size_t irq; | |
165 | }; | |
166 | struct platform_device *__init imx_add_imx_uart_1irq( | |
167 | const struct imx_imx_uart_1irq_data *data, | |
2db68237 UKK |
168 | const struct imxuart_platform_data *pdata); |
169 | ||
e0830004 UKK |
170 | #include <mach/usb.h> |
171 | struct imx_imx_udc_data { | |
172 | resource_size_t iobase; | |
173 | resource_size_t iosize; | |
174 | resource_size_t irq0; | |
175 | resource_size_t irq1; | |
176 | resource_size_t irq2; | |
177 | resource_size_t irq3; | |
178 | resource_size_t irq4; | |
179 | resource_size_t irq5; | |
180 | resource_size_t irq6; | |
181 | }; | |
182 | struct platform_device *__init imx_add_imx_udc( | |
183 | const struct imx_imx_udc_data *data, | |
184 | const struct imxusb_platform_data *pdata); | |
185 | ||
afa77ef3 UKK |
186 | #include <mach/mx3fb.h> |
187 | #include <mach/mx3_camera.h> | |
188 | struct imx_ipu_core_data { | |
189 | resource_size_t iobase; | |
190 | resource_size_t synirq; | |
191 | resource_size_t errirq; | |
192 | }; | |
193 | struct platform_device *__init imx_add_ipu_core( | |
88289c80 | 194 | const struct imx_ipu_core_data *data); |
afa77ef3 UKK |
195 | struct platform_device *__init imx_alloc_mx3_camera( |
196 | const struct imx_ipu_core_data *data, | |
197 | const struct mx3_camera_pdata *pdata); | |
198 | struct platform_device *__init imx_add_mx3_sdc_fb( | |
199 | const struct imx_ipu_core_data *data, | |
200 | struct mx3fb_platform_data *pdata); | |
201 | ||
9bb39b3f UKK |
202 | #include <mach/mx1_camera.h> |
203 | struct imx_mx1_camera_data { | |
204 | resource_size_t iobase; | |
205 | resource_size_t iosize; | |
206 | resource_size_t irq; | |
207 | }; | |
208 | struct platform_device *__init imx_add_mx1_camera( | |
209 | const struct imx_mx1_camera_data *data, | |
210 | const struct mx1_camera_pdata *pdata); | |
211 | ||
b2997cb1 UKK |
212 | #include <mach/mx2_cam.h> |
213 | struct imx_mx2_camera_data { | |
214 | resource_size_t iobasecsi; | |
215 | resource_size_t iosizecsi; | |
216 | resource_size_t irqcsi; | |
217 | resource_size_t iobaseemmaprp; | |
218 | resource_size_t iosizeemmaprp; | |
219 | resource_size_t irqemmaprp; | |
220 | }; | |
221 | struct platform_device *__init imx_add_mx2_camera( | |
222 | const struct imx_mx2_camera_data *data, | |
223 | const struct mx2_camera_platform_data *pdata); | |
52f1a845 JM |
224 | struct platform_device *__init imx_add_mx2_emmaprp( |
225 | const struct imx_mx2_camera_data *data); | |
b2997cb1 | 226 | |
2eb42d5c UKK |
227 | #include <mach/mxc_ehci.h> |
228 | struct imx_mxc_ehci_data { | |
229 | int id; | |
230 | resource_size_t iobase; | |
231 | resource_size_t irq; | |
232 | }; | |
233 | struct platform_device *__init imx_add_mxc_ehci( | |
234 | const struct imx_mxc_ehci_data *data, | |
235 | const struct mxc_usbh_platform_data *pdata); | |
236 | ||
9d3d945a UKK |
237 | #include <mach/mmc.h> |
238 | struct imx_mxc_mmc_data { | |
239 | int id; | |
240 | resource_size_t iobase; | |
6a697e3d | 241 | resource_size_t iosize; |
9d3d945a UKK |
242 | resource_size_t irq; |
243 | resource_size_t dmareq; | |
244 | }; | |
245 | struct platform_device *__init imx_add_mxc_mmc( | |
246 | const struct imx_mxc_mmc_data *data, | |
247 | const struct imxmmc_platform_data *pdata); | |
248 | ||
66384eed | 249 | #include <mach/mxc_nand.h> |
00b57bf9 | 250 | struct imx_mxc_nand_data { |
63a7c6d7 SH |
251 | /* |
252 | * id is traditionally 0, but -1 is more appropriate. We use -1 for new | |
253 | * machines but don't change existing devices as the nand device usually | |
254 | * appears in the kernel command line to pass its partitioning. | |
255 | */ | |
256 | int id; | |
00b57bf9 UKK |
257 | resource_size_t iobase; |
258 | resource_size_t iosize; | |
63a7c6d7 | 259 | resource_size_t axibase; |
00b57bf9 UKK |
260 | resource_size_t irq; |
261 | }; | |
262 | struct platform_device *__init imx_add_mxc_nand( | |
263 | const struct imx_mxc_nand_data *data, | |
264 | const struct mxc_nand_platform_data *pdata); | |
02870737 | 265 | |
a45adf1c APR |
266 | struct imx_pata_imx_data { |
267 | resource_size_t iobase; | |
236c4e8b | 268 | resource_size_t iosize; |
a45adf1c APR |
269 | resource_size_t irq; |
270 | }; | |
271 | struct platform_device *__init imx_add_pata_imx( | |
272 | const struct imx_pata_imx_data *data); | |
273 | ||
bf182bcc | 274 | struct imx_mxc_pwm_data { |
5f3d1092 | 275 | int id; |
bf182bcc | 276 | resource_size_t iobase; |
5f3d1092 | 277 | resource_size_t iosize; |
bf182bcc UKK |
278 | resource_size_t irq; |
279 | }; | |
280 | struct platform_device *__init imx_add_mxc_pwm( | |
281 | const struct imx_mxc_pwm_data *data); | |
282 | ||
83422671 UKK |
283 | /* mxc_rtc */ |
284 | struct imx_mxc_rtc_data { | |
285 | resource_size_t iobase; | |
286 | resource_size_t irq; | |
287 | }; | |
288 | struct platform_device *__init imx_add_mxc_rtc( | |
289 | const struct imx_mxc_rtc_data *data); | |
290 | ||
291 | /* mxc_w1 */ | |
ae71a562 UKK |
292 | struct imx_mxc_w1_data { |
293 | resource_size_t iobase; | |
294 | }; | |
295 | struct platform_device *__init imx_add_mxc_w1( | |
296 | const struct imx_mxc_w1_data *data); | |
297 | ||
124bf94a UKK |
298 | #include <mach/esdhc.h> |
299 | struct imx_sdhci_esdhc_imx_data { | |
57ed3314 | 300 | const char *devid; |
124bf94a UKK |
301 | int id; |
302 | resource_size_t iobase; | |
303 | resource_size_t irq; | |
304 | }; | |
305 | struct platform_device *__init imx_add_sdhci_esdhc_imx( | |
306 | const struct imx_sdhci_esdhc_imx_data *data, | |
307 | const struct esdhc_platform_data *pdata); | |
308 | ||
02870737 | 309 | #include <mach/spi.h> |
35bab058 | 310 | struct imx_spi_imx_data { |
ab560503 | 311 | const char *devid; |
35bab058 UKK |
312 | int id; |
313 | resource_size_t iobase; | |
314 | resource_size_t iosize; | |
315 | int irq; | |
316 | }; | |
317 | struct platform_device *__init imx_add_spi_imx( | |
318 | const struct imx_spi_imx_data *data, | |
02870737 | 319 | const struct spi_imx_master *pdata); |
36223604 SG |
320 | |
321 | struct platform_device *imx_add_imx_dma(void); | |
62550cd7 | 322 | struct platform_device *imx_add_imx_sdma(char *name, |
36223604 | 323 | resource_size_t iobase, int irq, struct sdma_platform_data *pdata); |
97915bdf RZ |
324 | |
325 | #include <linux/ahci_platform.h> | |
326 | struct imx_ahci_imx_data { | |
327 | const char *devid; | |
328 | resource_size_t iobase; | |
329 | resource_size_t irq; | |
330 | }; | |
331 | struct platform_device *__init imx_add_ahci_imx( | |
332 | const struct imx_ahci_imx_data *data, | |
333 | const struct ahci_platform_data *pdata); |