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 | ||
fc40d019 UKK |
53 | struct imx_flexcan_data { |
54 | int id; | |
55 | resource_size_t iobase; | |
56 | resource_size_t iosize; | |
57 | resource_size_t irq; | |
58 | }; | |
59 | struct platform_device *__init imx_add_flexcan( | |
30caa4b7 | 60 | const struct imx_flexcan_data *data); |
61c68502 | 61 | |
bd455ed3 UKK |
62 | #include <linux/fsl_devices.h> |
63 | struct imx_fsl_usb2_udc_data { | |
f0ea8834 | 64 | const char *devid; |
bd455ed3 UKK |
65 | resource_size_t iobase; |
66 | resource_size_t irq; | |
67 | }; | |
68 | struct platform_device *__init imx_add_fsl_usb2_udc( | |
69 | const struct imx_fsl_usb2_udc_data *data, | |
70 | const struct fsl_usb2_platform_data *pdata); | |
71 | ||
47c53822 DN |
72 | #include <linux/gpio_keys.h> |
73 | struct platform_device *__init imx_add_gpio_keys( | |
74 | const struct gpio_keys_platform_data *pdata); | |
75 | ||
82906b13 | 76 | #include <linux/platform_data/usb-mx2.h> |
9f871469 UKK |
77 | struct imx_imx21_hcd_data { |
78 | resource_size_t iobase; | |
79 | resource_size_t irq; | |
80 | }; | |
81 | struct platform_device *__init imx_add_imx21_hcd( | |
82 | const struct imx_imx21_hcd_data *data, | |
83 | const struct mx21_usbh_platform_data *pdata); | |
84 | ||
6d8c4529 JM |
85 | struct imx_imx27_coda_data { |
86 | resource_size_t iobase; | |
87 | resource_size_t iosize; | |
88 | resource_size_t irq; | |
89 | }; | |
90 | struct platform_device *__init imx_add_imx27_coda( | |
91 | const struct imx_imx27_coda_data *data); | |
92 | ||
e0a1961d | 93 | struct imx_imx2_wdt_data { |
8c2efec3 | 94 | int id; |
e0a1961d | 95 | resource_size_t iobase; |
00871505 | 96 | resource_size_t iosize; |
e0a1961d UKK |
97 | }; |
98 | struct platform_device *__init imx_add_imx2_wdt( | |
99 | const struct imx_imx2_wdt_data *data); | |
100 | ||
e7c74b34 UKK |
101 | struct imx_imxdi_rtc_data { |
102 | resource_size_t iobase; | |
103 | resource_size_t irq; | |
104 | }; | |
105 | struct platform_device *__init imx_add_imxdi_rtc( | |
106 | const struct imx_imxdi_rtc_data *data); | |
107 | ||
82906b13 | 108 | #include <linux/platform_data/video-imxfb.h> |
ad851bff | 109 | struct imx_imx_fb_data { |
e69dc9a9 | 110 | const char *devid; |
ad851bff | 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_1irq_data { |
158 | int id; | |
159 | resource_size_t iobase; | |
160 | resource_size_t iosize; | |
161 | resource_size_t irq; | |
162 | }; | |
163 | struct platform_device *__init imx_add_imx_uart_1irq( | |
164 | const struct imx_imx_uart_1irq_data *data, | |
2db68237 UKK |
165 | const struct imxuart_platform_data *pdata); |
166 | ||
82906b13 | 167 | #include <linux/platform_data/video-mx3fb.h> |
a71daaa1 | 168 | #include <linux/platform_data/media/camera-mx3.h> |
afa77ef3 UKK |
169 | struct imx_ipu_core_data { |
170 | resource_size_t iobase; | |
171 | resource_size_t synirq; | |
172 | resource_size_t errirq; | |
173 | }; | |
174 | struct platform_device *__init imx_add_ipu_core( | |
88289c80 | 175 | const struct imx_ipu_core_data *data); |
afa77ef3 UKK |
176 | struct platform_device *__init imx_alloc_mx3_camera( |
177 | const struct imx_ipu_core_data *data, | |
178 | const struct mx3_camera_pdata *pdata); | |
179 | struct platform_device *__init imx_add_mx3_sdc_fb( | |
180 | const struct imx_ipu_core_data *data, | |
181 | struct mx3fb_platform_data *pdata); | |
182 | ||
a71daaa1 | 183 | #include <linux/platform_data/media/camera-mx2.h> |
b2997cb1 | 184 | struct imx_mx2_camera_data { |
27b76486 | 185 | const char *devid; |
b2997cb1 UKK |
186 | resource_size_t iobasecsi; |
187 | resource_size_t iosizecsi; | |
188 | resource_size_t irqcsi; | |
189 | resource_size_t iobaseemmaprp; | |
190 | resource_size_t iosizeemmaprp; | |
191 | resource_size_t irqemmaprp; | |
192 | }; | |
193 | struct platform_device *__init imx_add_mx2_camera( | |
194 | const struct imx_mx2_camera_data *data, | |
195 | const struct mx2_camera_platform_data *pdata); | |
3ab3a350 GC |
196 | |
197 | ||
198 | struct imx_mx2_emma_data { | |
199 | resource_size_t iobase; | |
200 | resource_size_t iosize; | |
201 | resource_size_t irq; | |
202 | }; | |
52f1a845 | 203 | struct platform_device *__init imx_add_mx2_emmaprp( |
3ab3a350 | 204 | const struct imx_mx2_emma_data *data); |
b2997cb1 | 205 | |
82906b13 | 206 | #include <linux/platform_data/usb-ehci-mxc.h> |
2eb42d5c UKK |
207 | struct imx_mxc_ehci_data { |
208 | int id; | |
209 | resource_size_t iobase; | |
210 | resource_size_t irq; | |
211 | }; | |
212 | struct platform_device *__init imx_add_mxc_ehci( | |
213 | const struct imx_mxc_ehci_data *data, | |
214 | const struct mxc_usbh_platform_data *pdata); | |
215 | ||
82906b13 | 216 | #include <linux/platform_data/mmc-mxcmmc.h> |
9d3d945a | 217 | struct imx_mxc_mmc_data { |
7f917a8d | 218 | const char *devid; |
9d3d945a UKK |
219 | int id; |
220 | resource_size_t iobase; | |
6a697e3d | 221 | resource_size_t iosize; |
9d3d945a UKK |
222 | resource_size_t irq; |
223 | resource_size_t dmareq; | |
224 | }; | |
225 | struct platform_device *__init imx_add_mxc_mmc( | |
226 | const struct imx_mxc_mmc_data *data, | |
227 | const struct imxmmc_platform_data *pdata); | |
228 | ||
82906b13 | 229 | #include <linux/platform_data/mtd-mxc_nand.h> |
00b57bf9 | 230 | struct imx_mxc_nand_data { |
4d62435f | 231 | const char *devid; |
63a7c6d7 SH |
232 | /* |
233 | * id is traditionally 0, but -1 is more appropriate. We use -1 for new | |
234 | * machines but don't change existing devices as the nand device usually | |
235 | * appears in the kernel command line to pass its partitioning. | |
236 | */ | |
237 | int id; | |
00b57bf9 UKK |
238 | resource_size_t iobase; |
239 | resource_size_t iosize; | |
63a7c6d7 | 240 | resource_size_t axibase; |
00b57bf9 UKK |
241 | resource_size_t irq; |
242 | }; | |
243 | struct platform_device *__init imx_add_mxc_nand( | |
244 | const struct imx_mxc_nand_data *data, | |
245 | const struct mxc_nand_platform_data *pdata); | |
02870737 | 246 | |
a45adf1c APR |
247 | struct imx_pata_imx_data { |
248 | resource_size_t iobase; | |
236c4e8b | 249 | resource_size_t iosize; |
a45adf1c APR |
250 | resource_size_t irq; |
251 | }; | |
252 | struct platform_device *__init imx_add_pata_imx( | |
253 | const struct imx_pata_imx_data *data); | |
254 | ||
83422671 UKK |
255 | /* mxc_rtc */ |
256 | struct imx_mxc_rtc_data { | |
bb1d34a2 | 257 | const char *devid; |
83422671 UKK |
258 | resource_size_t iobase; |
259 | resource_size_t irq; | |
260 | }; | |
261 | struct platform_device *__init imx_add_mxc_rtc( | |
262 | const struct imx_mxc_rtc_data *data); | |
263 | ||
264 | /* mxc_w1 */ | |
ae71a562 UKK |
265 | struct imx_mxc_w1_data { |
266 | resource_size_t iobase; | |
267 | }; | |
268 | struct platform_device *__init imx_add_mxc_w1( | |
269 | const struct imx_mxc_w1_data *data); | |
270 | ||
82906b13 | 271 | #include <linux/platform_data/mmc-esdhc-imx.h> |
124bf94a | 272 | struct imx_sdhci_esdhc_imx_data { |
57ed3314 | 273 | const char *devid; |
124bf94a UKK |
274 | int id; |
275 | resource_size_t iobase; | |
276 | resource_size_t irq; | |
277 | }; | |
278 | struct platform_device *__init imx_add_sdhci_esdhc_imx( | |
279 | const struct imx_sdhci_esdhc_imx_data *data, | |
280 | const struct esdhc_platform_data *pdata); | |
281 | ||
82906b13 | 282 | #include <linux/platform_data/spi-imx.h> |
35bab058 | 283 | struct imx_spi_imx_data { |
ab560503 | 284 | const char *devid; |
35bab058 UKK |
285 | int id; |
286 | resource_size_t iobase; | |
287 | resource_size_t iosize; | |
288 | int irq; | |
289 | }; | |
290 | struct platform_device *__init imx_add_spi_imx( | |
291 | const struct imx_spi_imx_data *data, | |
02870737 | 292 | const struct spi_imx_master *pdata); |
36223604 | 293 | |
e51d0f0a | 294 | struct platform_device *imx_add_imx_dma(char *name, resource_size_t iobase, |
73930eb3 | 295 | int irq, int irq_err); |
62550cd7 | 296 | struct platform_device *imx_add_imx_sdma(char *name, |
36223604 | 297 | resource_size_t iobase, int irq, struct sdma_platform_data *pdata); |